Class InheritanceData


  • public class InheritanceData
    extends java.lang.Object
    Used to track which methods are implemented by a base class, which is often needed when transforming a subclass.
    • Constructor Summary

      Constructors 
      Constructor Description
      InheritanceData​(java.lang.String packageName)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addInterface​(java.lang.String name)  
      void addMethod​(java.lang.String name, java.lang.String desc, boolean samePackageOnly)
      Adds a new instance method.
      InheritanceData createChild​(java.lang.String packageName)
      Returns a new MethodBundle that represents the methods of a child class of this bundle.
      boolean isImplemented​(java.lang.String name, java.lang.String desc)
      Returns true if this class or a transformed parent class contains an implementation of, or abstract placeholder for, the method.
      boolean isInterfaceImplemented​(java.lang.String name)
      Returns true if the class represented by this data, or any parent data, implements the named interface.
      boolean isOverride​(java.lang.String name, java.lang.String desc)
      Returns true if the method is an override of a base class method
      boolean isTransformed()
      Is this bundle for a transformed class, or for a base class (typically Object)?
      java.util.Set<java.lang.String> methodNames()
      Returns the names of any methods in this bundle, or from any parent bundles.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • InheritanceData

        public InheritanceData​(java.lang.String packageName)
    • Method Detail

      • isTransformed

        public boolean isTransformed()
        Is this bundle for a transformed class, or for a base class (typically Object)?
        Returns:
        true if this bundle is for transformed class, false otherwise
      • createChild

        public InheritanceData createChild​(java.lang.String packageName)
        Returns a new MethodBundle that represents the methods of a child class of this bundle. The returned bundle will always be transformed.
        Parameters:
        packageName - the package that the child class will be created in
        Returns:
        new method bundle
      • addMethod

        public void addMethod​(java.lang.String name,
                              java.lang.String desc,
                              boolean samePackageOnly)
        Adds a new instance method. Only non-private methods should be added (that is, methods which might be overridden in subclasses). This can later be queried to see if any base class implements the method.
        Parameters:
        name - name of method
        desc - describes the parameters and return value of the method
        samePackageOnly - whether the method can only be overridden in classes that are in the same package
      • isImplemented

        public boolean isImplemented​(java.lang.String name,
                                     java.lang.String desc)
        Returns true if this class or a transformed parent class contains an implementation of, or abstract placeholder for, the method.
        Parameters:
        name - method name
        desc - method descriptor
        Returns:
        true if this class or a base class implements the method (including abstract methods)
      • isOverride

        public boolean isOverride​(java.lang.String name,
                                  java.lang.String desc)
        Returns true if the method is an override of a base class method
        Parameters:
        name - method name
        desc - method descriptor
        Returns:
        true if a base class implements the method (including abstract methods)
      • isInterfaceImplemented

        public boolean isInterfaceImplemented​(java.lang.String name)
        Returns true if the class represented by this data, or any parent data, implements the named interface.
      • addInterface

        public void addInterface​(java.lang.String name)
      • methodNames

        public java.util.Set<java.lang.String> methodNames()
        Returns the names of any methods in this bundle, or from any parent bundles.