public class ReflectionHelper
extends java.lang.Object
| Constructor and Description |
|---|
ReflectionHelper() |
| Modifier and Type | Method and Description |
|---|---|
static void |
addMetadata(java.util.Map<java.lang.String,java.util.List<java.lang.String>> metadatas,
java.lang.String key,
java.lang.String value)
Adds a value to the list of values associated with this key
|
static java.util.Map<java.lang.String,java.util.List<java.lang.String>> |
deepCopyMetadata(java.util.Map<java.lang.String,java.util.List<java.lang.String>> copyMe)
This method does a deep copy of the incoming meta-data, (which basically means we will
also make copies of the value list)
|
static java.util.Set<java.lang.reflect.Type> |
getAdvertisedTypesFromClass(java.lang.reflect.Type type,
java.lang.Class<? extends java.lang.annotation.Annotation> markerAnnotation)
Returns the set of types this class advertises
|
static java.util.Set<java.lang.reflect.Type> |
getAdvertisedTypesFromObject(java.lang.Object t,
java.lang.Class<? extends java.lang.annotation.Annotation> markerAnnotation)
Returns the set of types this class advertises
|
static java.util.Set<java.lang.String> |
getContractsFromClass(java.lang.Class<?> clazz,
java.lang.Class<? extends java.lang.annotation.Annotation> markerAnnotation)
Returns the set of types this class advertises
|
static java.lang.String |
getName(java.lang.Class<?> implClass)
Returns the name that should be associated with this class
|
static java.util.Set<java.lang.annotation.Annotation> |
getQualifierAnnotations(java.lang.reflect.AnnotatedElement annotatedGuy)
Gets all the qualifier annotations from the object
|
static java.util.Set<java.lang.String> |
getQualifiersFromClass(java.lang.Class<?> clazz)
Gets all the qualifiers from the object
|
static java.util.Set<java.lang.annotation.Annotation> |
getQualifiersFromObject(java.lang.Object t)
Gets all the qualifiers from the object
|
static java.lang.Class<?> |
getRawClass(java.lang.reflect.Type type)
Given the type parameter gets the raw type represented
by the type, or null if this has no associated raw class
|
static java.lang.annotation.Annotation |
getScopeAnnotationFromClass(java.lang.Class<?> clazz)
Gets the scope annotation from the object
|
static java.lang.annotation.Annotation |
getScopeAnnotationFromObject(java.lang.Object t)
Gets the scope annotation from the object
|
static java.lang.Class<? extends java.lang.annotation.Annotation> |
getScopeFromClass(java.lang.Class<?> clazz,
java.lang.Class<? extends java.lang.annotation.Annotation> annoDefault)
Gets the scope annotation from the object
|
static java.lang.Class<? extends java.lang.annotation.Annotation> |
getScopeFromObject(java.lang.Object t,
java.lang.Class<? extends java.lang.annotation.Annotation> annoDefault)
Gets the scope annotation from the object
|
static java.util.Set<java.lang.reflect.Type> |
getTypeClosure(java.lang.reflect.Type ofType,
java.util.Set<java.lang.String> contracts)
Returns the type closure, as restricted by the classes listed in the
set of contracts implemented
|
static java.lang.Object |
invoke(java.lang.Object o,
java.lang.reflect.Method m,
java.lang.Object[] args)
This version of invoke is CCL neutral (it will return with the
same CCL as what it went in with)
|
static boolean |
isAnnotationAQualifier(java.lang.annotation.Annotation anno)
Returns true if the given annotation is a qualifier
|
static boolean |
isStatic(java.lang.reflect.Member member)
Returns true if the underlying member is static
|
static java.lang.Object |
makeMe(java.lang.reflect.Constructor<?> c,
java.lang.Object[] args)
This version of invoke is CCL neutral (it will return with the
same CCL as what it went in with)
|
static void |
readMetadataMap(java.lang.String line,
java.util.Map<java.lang.String,java.util.List<java.lang.String>> addToMe)
Writes a set in a way that can be read from an input stream as well
|
static void |
readSet(java.lang.String line,
java.util.Collection<java.lang.String> addToMe)
Writes a set in a way that can be read from an input stream as well.
|
static boolean |
removeAllMetadata(java.util.Map<java.lang.String,java.util.List<java.lang.String>> metadatas,
java.lang.String key)
Removes all the metadata values associated with key
|
static boolean |
removeMetadata(java.util.Map<java.lang.String,java.util.List<java.lang.String>> metadatas,
java.lang.String key,
java.lang.String value)
Removes the given value from the given key
|
static void |
setContextClassLoader(java.lang.Thread t,
java.lang.ClassLoader l)
Sets the context classloader under the privileged of this class
|
static void |
setField(java.lang.reflect.Field field,
java.lang.Object instance,
java.lang.Object value)
Sets the given field to the given value
|
static java.lang.String |
writeMetadata(java.util.Map<java.lang.String,java.util.List<java.lang.String>> metadata)
Used to write the metadata out
|
static java.lang.String |
writeSet(java.util.Set<?> set)
Writes a set in a way that can be read from an input stream as well
|
static java.lang.String |
writeSet(java.util.Set<?> set,
java.lang.Object excludeMe)
Writes a set in a way that can be read from an input stream as well
|
public static java.lang.Class<?> getRawClass(java.lang.reflect.Type type)
type - The type to find the raw class onpublic static java.lang.String getName(java.lang.Class<?> implClass)
implClass - The class to evaluatepublic static java.util.Set<java.lang.reflect.Type> getTypeClosure(java.lang.reflect.Type ofType,
java.util.Set<java.lang.String> contracts)
ofType - The type to checkcontracts - The contracts this type is allowed to handlepublic static java.util.Set<java.lang.reflect.Type> getAdvertisedTypesFromClass(java.lang.reflect.Type type,
java.lang.Class<? extends java.lang.annotation.Annotation> markerAnnotation)
type - The outer type to analyzemarkerAnnotation - The annotation to use to discover the advertised typespublic static java.util.Set<java.lang.reflect.Type> getAdvertisedTypesFromObject(java.lang.Object t,
java.lang.Class<? extends java.lang.annotation.Annotation> markerAnnotation)
t - the object we are analyzingmarkerAnnotation - The annotation to use to discover the advertised typespublic static java.util.Set<java.lang.String> getContractsFromClass(java.lang.Class<?> clazz,
java.lang.Class<? extends java.lang.annotation.Annotation> markerAnnotation)
clazz - the class we are analyzingmarkerAnnotation - The annotation to use to discover annotated typespublic static java.lang.annotation.Annotation getScopeAnnotationFromObject(java.lang.Object t)
t - The object to analyzepublic static java.lang.annotation.Annotation getScopeAnnotationFromClass(java.lang.Class<?> clazz)
clazz - The class to analyzepublic static java.lang.Class<? extends java.lang.annotation.Annotation> getScopeFromObject(java.lang.Object t,
java.lang.Class<? extends java.lang.annotation.Annotation> annoDefault)
t - The object to analyzeannoDefault - The default that this should have if no scope could be foundpublic static java.lang.Class<? extends java.lang.annotation.Annotation> getScopeFromClass(java.lang.Class<?> clazz,
java.lang.Class<? extends java.lang.annotation.Annotation> annoDefault)
clazz - The class to analyzeannoDefault - The scope that should be returned if no scope could be foundpublic static boolean isAnnotationAQualifier(java.lang.annotation.Annotation anno)
anno - The annotation to checkpublic static java.util.Set<java.lang.annotation.Annotation> getQualifiersFromObject(java.lang.Object t)
t - The object to analyzepublic static java.util.Set<java.lang.String> getQualifiersFromClass(java.lang.Class<?> clazz)
clazz - The class to analyzepublic static java.util.Set<java.lang.annotation.Annotation> getQualifierAnnotations(java.lang.reflect.AnnotatedElement annotatedGuy)
A strange behavior of this method is that if the annotatedGuy is a field and that field has the Named annotation on it with no value, then that Named annotation will NOT be added to the return list. This is because we have no access at this level to AnnotationLiteral, and hence cannot create a NamedImpl with which to fix the annotation. It is the responsibility of the caller of this method to add in the NamedImpl in that circumstance
annotatedGuy - The thing to analyzepublic static java.lang.String writeSet(java.util.Set<?> set)
set - The set to writepublic static java.lang.String writeSet(java.util.Set<?> set,
java.lang.Object excludeMe)
set - The set to writeexcludeMe - An object to exclude from the list of things writtenpublic static void readSet(java.lang.String line,
java.util.Collection<java.lang.String> addToMe)
throws java.io.IOException
line - The line to readaddToMe - The set to add the strings tojava.io.IOException - On a failurepublic static void readMetadataMap(java.lang.String line,
java.util.Map<java.lang.String,java.util.List<java.lang.String>> addToMe)
throws java.io.IOException
line - The line to readaddToMe - The set to add the strings tojava.io.IOException - On a failurepublic static java.lang.String writeMetadata(java.util.Map<java.lang.String,java.util.List<java.lang.String>> metadata)
metadata - The metadata to externalizepublic static void addMetadata(java.util.Map<java.lang.String,java.util.List<java.lang.String>> metadatas,
java.lang.String key,
java.lang.String value)
metadatas - The base metadata objectkey - The key to which to add the value. May not be nullvalue - The value to add. May not be nullpublic static boolean removeMetadata(java.util.Map<java.lang.String,java.util.List<java.lang.String>> metadatas,
java.lang.String key,
java.lang.String value)
metadatas - The base metadata objectkey - The key of the value to remove. May not be nullvalue - The value to remove. May not be nullpublic static boolean removeAllMetadata(java.util.Map<java.lang.String,java.util.List<java.lang.String>> metadatas,
java.lang.String key)
metadatas - The base metadata objectkey - The key of the metadata values to removepublic static java.util.Map<java.lang.String,java.util.List<java.lang.String>> deepCopyMetadata(java.util.Map<java.lang.String,java.util.List<java.lang.String>> copyMe)
copyMe - The guy to copy (if null, null will be returned)public static void setField(java.lang.reflect.Field field,
java.lang.Object instance,
java.lang.Object value)
throws java.lang.Throwable
field - The non-null field to setinstance - The non-null instance to set intovalue - The value to which the field should be setjava.lang.Throwablepublic static java.lang.Object invoke(java.lang.Object o,
java.lang.reflect.Method m,
java.lang.Object[] args)
throws java.lang.Throwable
m - the method to invokeo - the object on which to invoke itargs - The arguments to invoke (may not be null)java.lang.Throwable - The unwrapped throwable thrown by the methodpublic static boolean isStatic(java.lang.reflect.Member member)
member - The non-null member to testpublic static void setContextClassLoader(java.lang.Thread t,
java.lang.ClassLoader l)
t - The thread on which to set the classloaderl - The classloader to setpublic static java.lang.Object makeMe(java.lang.reflect.Constructor<?> c,
java.lang.Object[] args)
throws java.lang.Throwable
c - the constructor to callargs - The arguments to invoke (may not be null)java.lang.Throwable - The unwrapped throwable thrown by the methodCopyright © 2013 Oracle Corporation. All Rights Reserved.