Class CompactTypeStructureRepresentation

java.lang.Object
org.aspectj.ajdt.internal.core.builder.CompactTypeStructureRepresentation
All Implemented Interfaces:
IBinaryInfo, IBinaryType, IDependent, IElementInfo, IGenericType

public class CompactTypeStructureRepresentation extends Object implements IBinaryType
Used to determine if a type has structurally changed during incremental compilation. At the end of compilation we create one of these objects using the bytes for the class about to be woven. On a subsequent incremental compile we compare the new form of the class with a previously stored CompactTypeStructureRepresentation instance. A structural change will indicate we need to do recompile other dependent types.
  • Constructor Details

    • CompactTypeStructureRepresentation

      public CompactTypeStructureRepresentation(ClassFileReader cfr, boolean isAspect)
  • Method Details

    • getMissingTypeNames

      public char[][][] getMissingTypeNames()
      Description copied from interface: IBinaryType
      Answer the list of missing type names which were referenced from the problem classfile. This list is encoded via an extra attribute.
      Specified by:
      getMissingTypeNames in interface IBinaryType
    • getEnclosingTypeName

      public char[] getEnclosingTypeName()
      Description copied from interface: IBinaryType
      Answer the resolved name of the enclosing type in the class file format as specified in section 4.2 of the Java 2 VM spec or null if the receiver is a top level type. For example, java.lang.String is java/lang/String.
      Specified by:
      getEnclosingTypeName in interface IBinaryType
    • getModifiers

      public int getModifiers()
      Description copied from interface: IGenericType
      Answer an int whose bits are set according the access constants defined by the VM spec. NOTE 1: We have added AccDeprecated and AccSynthetic. NOTE 2: If the receiver represents a member type, the modifiers are extracted from its inner class attributes.
      Specified by:
      getModifiers in interface IGenericType
    • getGenericSignature

      public char[] getGenericSignature()
      Description copied from interface: IBinaryType
      Answer the receiver's ClassSignature, which describes the type parameters, super class, and super interfaces as specified in section "4.7.9.1 Signatures" of the Java SE 8 VM spec. Returns null if none.
      Specified by:
      getGenericSignature in interface IBinaryType
      Returns:
      the receiver's signature, null if none
    • getEnclosingMethod

      public char[] getEnclosingMethod()
      Description copied from interface: IBinaryType
      Answer the enclosing method (including method selector and method descriptor), or null if none. For example, "foo()Ljava/lang/Object;V"
      Specified by:
      getEnclosingMethod in interface IBinaryType
    • getInterfaceNames

      public char[][] getInterfaceNames()
      Description copied from interface: IBinaryType
      Answer the resolved names of the receiver's interfaces in the class file format as specified in section 4.2 of the Java 2 VM spec or null if the array is empty. For example, java.lang.String is java/lang/String.
      Specified by:
      getInterfaceNames in interface IBinaryType
    • isAnonymous

      public boolean isAnonymous()
      Description copied from interface: IBinaryType
      Answer true if the receiver is an anonymous class. false otherwise
      Specified by:
      isAnonymous in interface IBinaryType
    • sourceFileName

      public char[] sourceFileName()
      Description copied from interface: IBinaryType
      Answer the source file attribute, or null if none. For example, "String.java"
      Specified by:
      sourceFileName in interface IBinaryType
    • isLocal

      public boolean isLocal()
      Description copied from interface: IBinaryType
      Answer true if the receiver is a local class. false otherwise
      Specified by:
      isLocal in interface IBinaryType
    • isRecord

      public boolean isRecord()
      Description copied from interface: IBinaryType
      Answer true if the receiver is a record. false otherwise
      Specified by:
      isRecord in interface IBinaryType
    • isMember

      public boolean isMember()
      Description copied from interface: IBinaryType
      Answer true if the receiver is a member class. false otherwise
      Specified by:
      isMember in interface IBinaryType
    • getSuperclassName

      public char[] getSuperclassName()
      Description copied from interface: IBinaryType
      Answer the resolved name of the receiver's superclass in the class file format as specified in section 4.2 of the Java 2 VM spec or null if it does not have one. For example, java.lang.String is java/lang/String.
      Specified by:
      getSuperclassName in interface IBinaryType
    • getFileName

      public char[] getFileName()
      Description copied from interface: IDependent
      Answer the file name which defines the type. The path part (optional) must be separated from the actual file proper name by a separator suitable for the type (java.io.File.separator for example), e.g. "c:\\source\\com\\p\\X.java" or "/com/p/Y.java". The path to the zip or jar file (optional) must be separated from the actual path part by JAR_FILE_ENTRY_SEPARATOR, e.g. "c:\\lib\\some.jar|/com/p/X.class" or "/lib/some.zip|/com/q/Y.class". The proper file name includes the suffix extension (e.g. ".java") e.g. "c:/org/eclipse/jdt/internal/compileri/env/IDependent.java" Return null if no file defines the type.
      Specified by:
      getFileName in interface IDependent
    • getName

      public char[] getName()
      Description copied from interface: IBinaryType
      Answer the resolved name of the type in the class file format as specified in section 4.2 of the Java 2 VM spec. For example, java.lang.String is java/lang/String.
      Specified by:
      getName in interface IBinaryType
    • getTagBits

      public long getTagBits()
      Description copied from interface: IBinaryType
      Answer the tagbits set according to the bits for annotations.
      Specified by:
      getTagBits in interface IBinaryType
    • isBinaryType

      public boolean isBinaryType()
      Description copied from interface: IGenericType
      Answer whether the receiver contains the resolved binary form or the unresolved source form of the type.
      Specified by:
      isBinaryType in interface IGenericType
    • getFields

      public IBinaryField[] getFields()
      Description copied from interface: IBinaryType
      Answer the receiver's fields or null if the array is empty.
      Specified by:
      getFields in interface IBinaryType
    • getRecordComponents

      public IRecordComponent[] getRecordComponents()
      Description copied from interface: IBinaryType
      Answer the receiver's record components or null if the array is empty.
      Specified by:
      getRecordComponents in interface IBinaryType
    • getMethods

      public IBinaryMethod[] getMethods()
      Description copied from interface: IBinaryType
      Answer the receiver's methods or null if the array is empty.
      Specified by:
      getMethods in interface IBinaryType
    • getMemberTypes

      public IBinaryNestedType[] getMemberTypes()
      Description copied from interface: IBinaryType
      Answer the receiver's nested types or null if the array is empty. This nested type info is extracted from the inner class attributes. Ask the name environment to find a member type using its compound name.
      Specified by:
      getMemberTypes in interface IBinaryType
    • getAnnotations

      public IBinaryAnnotation[] getAnnotations()
      Description copied from interface: IBinaryType
      Answer the runtime visible and invisible annotations for this type or null if none.
      Specified by:
      getAnnotations in interface IBinaryType
    • getSourceName

      public char[] getSourceName()
      Description copied from interface: IBinaryType
      Answer the simple name of the type in the class file. For member A$B, will answer B. For anonymous will answer null.
      Specified by:
      getSourceName in interface IBinaryType
    • getTypeAnnotations

      public IBinaryTypeAnnotation[] getTypeAnnotations()
      Description copied from interface: IBinaryType
      Answer the runtime visible and invisible type annotations for this type or null if none.
      Specified by:
      getTypeAnnotations in interface IBinaryType
    • enrichWithExternalAnnotationsFor

      public ITypeAnnotationWalker enrichWithExternalAnnotationsFor(ITypeAnnotationWalker walker, Object member, LookupEnvironment environment)
      Description copied from interface: IBinaryType
      Answer a type annotation walker that takes into consideration also external annotations.
      Specified by:
      enrichWithExternalAnnotationsFor in interface IBinaryType
      Parameters:
      walker - previous walker, may be empty, otherwise it will be returned unchanged
      member - if either a IBinaryField or a IBinaryMethod is provided, answer a walker specifically for that member
      environment - for use by the walker
      Returns:
      either a matching walker with data from external annotations or the walker provided via argument 'walker'.
    • getModule

      public char[] getModule()
      Description copied from interface: IBinaryType
      Answer the module to which this type belongs. null if the type is associated to the unnamed module.
      Specified by:
      getModule in interface IBinaryType
      Returns:
      the module name or null
    • getExternalAnnotationStatus

      public BinaryTypeBinding.ExternalAnnotationStatus getExternalAnnotationStatus()
      Description copied from interface: IBinaryType
      Answer whether a provider for external annotations is associated with this binary type.
      Specified by:
      getExternalAnnotationStatus in interface IBinaryType