Class Annotations


  • public class Annotations
    extends java.lang.Object
    Annotation utilities.
    Author:
    crazybob@google.com (Bob Lee)
    • Constructor Summary

      Constructors 
      Constructor Description
      Annotations()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String annotationInstanceClassString​(java.lang.Class<? extends java.lang.annotation.Annotation> ann, boolean includePackage)
      Returns the string representation of the annotation class as it would appear in an annotation instance's toString() method.
      static java.lang.annotation.Annotation canonicalizeIfNamed​(java.lang.annotation.Annotation annotation)
      If the annotation is an instance of javax.inject.Named, canonicalizes to com.google.guice.name.Named.
      static java.lang.Class<? extends java.lang.annotation.Annotation> canonicalizeIfNamed​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
      If the annotation is the class javax.inject.Named, canonicalizes to com.google.guice.name.Named.
      static void checkForMisplacedScopeAnnotations​(java.lang.Class<?> type, java.lang.Object source, Errors errors)
      Adds an error if there is a misplaced annotations on type.
      static java.lang.annotation.Annotation findBindingAnnotation​(Errors errors, java.lang.reflect.Member member, java.lang.annotation.Annotation[] annotations)
      Returns the binding annotation on member, or null if there isn't one.
      static java.lang.Class<? extends java.lang.annotation.Annotation> findScopeAnnotation​(Errors errors, java.lang.annotation.Annotation[] annotations)
      Returns the scoping annotation, or null if there isn't one.
      static java.lang.Class<? extends java.lang.annotation.Annotation> findScopeAnnotation​(Errors errors, java.lang.Class<?> implementation)
      Returns the scope annotation on type, or null if none is specified.
      static <T extends java.lang.annotation.Annotation>
      T
      generateAnnotation​(java.lang.Class<T> annotationType)
      Generates an Annotation for the annotation class.
      static Key<?> getKey​(TypeLiteral<?> type, java.lang.reflect.Member member, java.lang.annotation.Annotation[] annotations, Errors errors)
      Gets a key for the given type, member and annotations.
      static boolean isAllDefaultMethods​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)  
      static boolean isBindingAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
      Returns true if annotations of the specified type are binding annotations.
      static boolean isMarker​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
      Returns true if the given annotation type has no attributes.
      static boolean isRetainedAtRuntime​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
      Returns true if the given annotation is retained at runtime.
      static boolean isScopeAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)  
      static java.lang.String memberValueString​(java.lang.String value)
      Returns value, quoted if annotation implementations quote their member values.
      static java.lang.String memberValueString​(java.lang.String memberName, java.lang.Object value)
      Returns string representation of the annotation memeber.
      static java.lang.String nameOf​(Key<?> key)
      Returns the name the binding should use.
      • Methods inherited from class java.lang.Object

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

      • Annotations

        public Annotations()
    • Method Detail

      • isMarker

        public static boolean isMarker​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
        Returns true if the given annotation type has no attributes.
      • isAllDefaultMethods

        public static boolean isAllDefaultMethods​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
      • generateAnnotation

        public static <T extends java.lang.annotation.Annotation> T generateAnnotation​(java.lang.Class<T> annotationType)
        Generates an Annotation for the annotation class. Requires that the annotation is all optionals.
      • isRetainedAtRuntime

        public static boolean isRetainedAtRuntime​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
        Returns true if the given annotation is retained at runtime.
      • findScopeAnnotation

        public static java.lang.Class<? extends java.lang.annotation.Annotation> findScopeAnnotation​(Errors errors,
                                                                                                     java.lang.Class<?> implementation)
        Returns the scope annotation on type, or null if none is specified.
      • findScopeAnnotation

        public static java.lang.Class<? extends java.lang.annotation.Annotation> findScopeAnnotation​(Errors errors,
                                                                                                     java.lang.annotation.Annotation[] annotations)
        Returns the scoping annotation, or null if there isn't one.
      • memberValueString

        public static java.lang.String memberValueString​(java.lang.String value)
        Returns value, quoted if annotation implementations quote their member values. In Java 9, annotations quote their string members.
      • memberValueString

        public static java.lang.String memberValueString​(java.lang.String memberName,
                                                         java.lang.Object value)
        Returns string representation of the annotation memeber.

        The value of the member is prefixed with `memberName=` unless the runtime omits the member name. The value of the member is quoted if annotation implementations quote their member values and the value type is String.

        In Java 9, annotations quote their string members and in Java 15, the member name is omitted.

      • annotationInstanceClassString

        public static java.lang.String annotationInstanceClassString​(java.lang.Class<? extends java.lang.annotation.Annotation> ann,
                                                                     boolean includePackage)
        Returns the string representation of the annotation class as it would appear in an annotation instance's toString() method.

        In earlier JDKs, the string representation mirrored Class.getName() (which uses $ to separate outer and inner classes), but newer JDKs use . as the separator).

      • isScopeAnnotation

        public static boolean isScopeAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
      • checkForMisplacedScopeAnnotations

        public static void checkForMisplacedScopeAnnotations​(java.lang.Class<?> type,
                                                             java.lang.Object source,
                                                             Errors errors)
        Adds an error if there is a misplaced annotations on type. Scoping annotations are not allowed on abstract classes or interfaces.
      • getKey

        public static Key<?> getKey​(TypeLiteral<?> type,
                                    java.lang.reflect.Member member,
                                    java.lang.annotation.Annotation[] annotations,
                                    Errors errors)
                             throws ErrorsException
        Gets a key for the given type, member and annotations.
        Throws:
        ErrorsException
      • findBindingAnnotation

        public static java.lang.annotation.Annotation findBindingAnnotation​(Errors errors,
                                                                            java.lang.reflect.Member member,
                                                                            java.lang.annotation.Annotation[] annotations)
        Returns the binding annotation on member, or null if there isn't one.
      • isBindingAnnotation

        public static boolean isBindingAnnotation​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
        Returns true if annotations of the specified type are binding annotations.
      • canonicalizeIfNamed

        public static java.lang.annotation.Annotation canonicalizeIfNamed​(java.lang.annotation.Annotation annotation)
        If the annotation is an instance of javax.inject.Named, canonicalizes to com.google.guice.name.Named. Returns the given annotation otherwise.
      • canonicalizeIfNamed

        public static java.lang.Class<? extends java.lang.annotation.Annotation> canonicalizeIfNamed​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
        If the annotation is the class javax.inject.Named, canonicalizes to com.google.guice.name.Named. Returns the given annotation class otherwise.
      • nameOf

        public static java.lang.String nameOf​(Key<?> key)
        Returns the name the binding should use. This is based on the annotation. If the annotation has an instance and is not a marker annotation, we ask the annotation for its toString. If it was a marker annotation or just an annotation type, we use the annotation's name. Otherwise, the name is the empty string.