Package com.google.inject.internal
Class Annotations
- java.lang.Object
-
- com.google.inject.internal.Annotations
-
public class Annotations extends java.lang.Object
Annotation utilities.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
Annotations.AnnotationChecker
Checks for the presence of annotations.private static interface
Annotations.TestAnnotation
-
Field Summary
Fields Modifier and Type Field Description private static Annotations.AnnotationChecker
bindingAnnotationChecker
private static com.google.common.cache.LoadingCache<java.lang.Class<? extends java.lang.annotation.Annotation>,java.lang.annotation.Annotation>
cache
private static com.google.common.base.Function<java.lang.Object,java.lang.String>
DEEP_TO_STRING_FN
private static com.google.common.base.Joiner.MapJoiner
JOINER
private static boolean
QUOTE_MEMBER_VALUES
private static Annotations.AnnotationChecker
scopeChecker
-
Constructor Summary
Constructors Constructor Description Annotations()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static boolean
annotationEquals(java.lang.Class<? extends java.lang.annotation.Annotation> type, java.util.Map<java.lang.String,java.lang.Object> members, java.lang.Object other)
ImplementsAnnotation.equals(java.lang.Object)
.private static int
annotationHashCode(java.lang.Class<? extends java.lang.annotation.Annotation> type, java.util.Map<java.lang.String,java.lang.Object> members)
ImplementsAnnotation.hashCode()
.private static java.lang.String
annotationToString(java.lang.Class<? extends java.lang.annotation.Annotation> type, java.util.Map<java.lang.String,java.lang.Object> members)
ImplementsAnnotation.toString()
.static java.lang.annotation.Annotation
canonicalizeIfNamed(java.lang.annotation.Annotation annotation)
If the annotation is an instance ofjavax.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 classjavax.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 ontype
.(package private) static boolean
containsComponentAnnotation(java.lang.annotation.Annotation[] annotations)
private static boolean
determineWhetherToQuote()
static java.lang.annotation.Annotation
findBindingAnnotation(Errors errors, java.lang.reflect.Member member, java.lang.annotation.Annotation[] annotations)
Returns the binding annotation onmember
, 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 ontype
, or null if none is specified.static <T extends java.lang.annotation.Annotation>
TgenerateAnnotation(java.lang.Class<T> annotationType)
Generates an Annotation for the annotation class.private static <T extends java.lang.annotation.Annotation>
TgenerateAnnotationImpl(java.lang.Class<T> annotationType)
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)
Returnstrue
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)
Returnsvalue
, quoted if annotation implementations quote their member values.static java.lang.String
nameOf(Key<?> key)
Returns the name the binding should use.private static com.google.common.collect.ImmutableMap<java.lang.String,java.lang.Object>
resolveMembers(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
-
-
-
Field Detail
-
cache
private static final com.google.common.cache.LoadingCache<java.lang.Class<? extends java.lang.annotation.Annotation>,java.lang.annotation.Annotation> cache
-
JOINER
private static final com.google.common.base.Joiner.MapJoiner JOINER
-
DEEP_TO_STRING_FN
private static final com.google.common.base.Function<java.lang.Object,java.lang.String> DEEP_TO_STRING_FN
-
QUOTE_MEMBER_VALUES
private static final boolean QUOTE_MEMBER_VALUES
-
scopeChecker
private static final Annotations.AnnotationChecker scopeChecker
-
bindingAnnotationChecker
private static final Annotations.AnnotationChecker bindingAnnotationChecker
-
-
Method Detail
-
isMarker
public static boolean isMarker(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Returnstrue
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.
-
generateAnnotationImpl
private static <T extends java.lang.annotation.Annotation> T generateAnnotationImpl(java.lang.Class<T> annotationType)
-
resolveMembers
private static com.google.common.collect.ImmutableMap<java.lang.String,java.lang.Object> resolveMembers(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
-
annotationEquals
private static boolean annotationEquals(java.lang.Class<? extends java.lang.annotation.Annotation> type, java.util.Map<java.lang.String,java.lang.Object> members, java.lang.Object other) throws java.lang.Exception
ImplementsAnnotation.equals(java.lang.Object)
.- Throws:
java.lang.Exception
-
annotationHashCode
private static int annotationHashCode(java.lang.Class<? extends java.lang.annotation.Annotation> type, java.util.Map<java.lang.String,java.lang.Object> members) throws java.lang.Exception
ImplementsAnnotation.hashCode()
.- Throws:
java.lang.Exception
-
annotationToString
private static java.lang.String annotationToString(java.lang.Class<? extends java.lang.annotation.Annotation> type, java.util.Map<java.lang.String,java.lang.Object> members) throws java.lang.Exception
ImplementsAnnotation.toString()
.- Throws:
java.lang.Exception
-
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 ontype
, 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.
-
containsComponentAnnotation
static boolean containsComponentAnnotation(java.lang.annotation.Annotation[] annotations)
-
memberValueString
public static java.lang.String memberValueString(java.lang.String value)
Returnsvalue
, quoted if annotation implementations quote their member values. In Java 9, annotations quote their string members.
-
determineWhetherToQuote
private static boolean determineWhetherToQuote()
-
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 ontype
. 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 onmember
, 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 ofjavax.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 classjavax.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.
-
-