java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.apt.model.Factory

public class Factory extends Object
Creates javax.lang.model wrappers around JDT internal compiler bindings.
  • Felddetails

    • DUMMY_BYTE

      public static final Byte DUMMY_BYTE
    • DUMMY_CHAR

      public static final Character DUMMY_CHAR
    • DUMMY_DOUBLE

      public static final Double DUMMY_DOUBLE
    • DUMMY_FLOAT

      public static final Float DUMMY_FLOAT
    • DUMMY_INTEGER

      public static final Integer DUMMY_INTEGER
    • DUMMY_LONG

      public static final Long DUMMY_LONG
    • DUMMY_SHORT

      public static final Short DUMMY_SHORT
    • EMPTY_ANNOTATION_MIRRORS

      public static List<? extends AnnotationMirror> EMPTY_ANNOTATION_MIRRORS
  • Konstruktordetails

    • Factory

      public Factory(BaseProcessingEnvImpl env)
      This object should only be constructed by the BaseProcessingEnvImpl.
  • Methodendetails

    • getAnnotationMirrors

      public List<? extends AnnotationMirror> getAnnotationMirrors(AnnotationBinding[] annotations)
      Convert an array of compiler annotation bindings into a list of AnnotationMirror
      Gibt zurück:
      a non-null, possibly empty, unmodifiable list.
    • getAnnotationsByType

      public <A extends Annotation> A[] getAnnotationsByType(AnnotationBinding[] annoInstances, Class<A> annotationClass)
    • getAnnotation

      public <A extends Annotation> A getAnnotation(AnnotationBinding[] annoInstances, Class<A> annotationClass)
    • getMatchingDummyValue

      public static Object getMatchingDummyValue(Class<?> expectedType)
    • getReceiverType

      public TypeMirror getReceiverType(MethodBinding binding)
    • getModifiers

      public static Set<Modifier> getModifiers(int modifiers, ElementKind kind)
    • getModifiers

      public static Set<Modifier> getModifiers(int modifiers, ElementKind kind, boolean isFromBinary)
      Convert from the JDT's ClassFileConstants flags to the Modifier enum.
    • newAnnotationMirror

      public AnnotationMirror newAnnotationMirror(AnnotationBinding binding)
    • newElement

      public Element newElement(Binding binding, ElementKind kindHint)
      Create a new element that knows what kind it is even if the binding is unresolved.
    • newElement

      public Element newElement(Binding binding)
    • newPackageElement

      public PackageElement newPackageElement(PackageBinding binding)
      Convenience method - equivalent to (PackageElement)Factory.newElement(binding)
    • getNullType

      public NullType getNullType()
    • getNoType

      public NoType getNoType(TypeKind kind)
    • getPrimitiveType

      public PrimitiveTypeImpl getPrimitiveType(TypeKind kind)
      Get a type mirror object representing the specified primitive type kind.
    • getPrimitiveType

      public PrimitiveTypeImpl getPrimitiveType(BaseTypeBinding binding)
    • newTypeMirror

      public TypeMirror newTypeMirror(Binding binding)
      Given a binding of uncertain type, try to create the right sort of TypeMirror for it.
    • newTypeParameterElement

      public TypeParameterElement newTypeParameterElement(TypeVariableBinding variable, Element declaringElement)
      Parameter:
      declaringElement - the class, method, etc. that is parameterized by this parameter.
    • getErrorType

      public ErrorType getErrorType(ReferenceBinding binding)
    • performNecessaryPrimitiveTypeConversion

      public static Object performNecessaryPrimitiveTypeConversion(Class<?> expectedType, Object value, boolean avoidReflectException)
      This method is derived from code in org.eclipse.jdt.apt.core. This method is designed to be invoked by the invocation handler and anywhere that requires a AnnotationValue (AnnotationMirror member values and default values from annotation member). Regardless of the path, there are common primitive type conversion that needs to take place. The type conversions respect the type widening and narrowing rules from JLS 5.1.2 and 5.1.2. The only question remains is what is the type of the return value when the type conversion fails? When avoidReflectException is set to true Return false if the expected type is boolean Return numeric 0 for all numeric primitive types and '0' for char Otherwise: Return the value unchanged. In the invocation handler case: The value returned by InvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) will be converted into the expected type by the Proxy. If the value and the expected type does not agree, and the value is not null, a ClassCastException will be thrown. A NullPointerException will result if the expected type is a primitive type and the value is null. This behavior causes annotation processors a lot of pain and the decision is to not throw such unchecked exception. In the case where a ClassCastException or NullPointerException will be thrown return some dummy value. Otherwise, return the original value. Chosen dummy values: Return false if the expected type is boolean Return numeric 0 for all numeric primitive types and '0' for char This behavior is triggered by setting avoidReflectException to true Note: the new behavior deviates from what's documented in InvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) and also deviates from Sun's implementation.
      Parameter:
      expectedType - the expected type of the value.
      value - the current value from the annotation instance.
    • setArrayMatchingDummyValue

      public static void setArrayMatchingDummyValue(Object array, int i, Class<?> expectedLeafType)
      Set an element of an array to the appropriate dummy value type
      Parameter:
      array -
      i -
      expectedLeafType -
    • getPackedAnnotationBindings

      public static AnnotationBinding[] getPackedAnnotationBindings(AnnotationBinding[] annotations)
    • getUnpackedAnnotationBindings

      public static AnnotationBinding[] getUnpackedAnnotationBindings(AnnotationBinding[] annotations)