Package org.jboss.weld.util.reflection
Class Reflections
- java.lang.Object
-
- org.jboss.weld.util.reflection.Reflections
-
public class Reflections extends Object
Utility class for static reflection-type operations- Author:
- Pete Muir, Ales Justin, Marko Luksa
-
-
Field Summary
Fields Modifier and Type Field Description static Annotation[]
EMPTY_ANNOTATIONS
static Class<?>[]
EMPTY_CLASSES
static Type[]
EMPTY_TYPES
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Map<Class<?>,Type>
buildTypeMap(Set<Type> types)
static <T> T
cast(Object obj)
static void
checkDeclaringClassLoadable(Class<?> c)
Triggers loading of declaring class (if any) of the given class recursively.static boolean
containsWildcards(Type[] types)
static String
decapitalize(String name)
Copy of java.beans.Introspector#decapitalize(name) to reduce java.desktop module dependency.static Method
findDeclaredMethodByName(Class<?> clazz, String methodName)
Searches for a declared method with a given name.static Type[]
getActualTypeArguments(Class<?> clazz)
Gets the actual type arguments of a classstatic Type[]
getActualTypeArguments(Type type)
Gets the actual type arguments of a Typestatic Set<Class<?>>
getInterfaceClosure(Class<?> clazz)
static int
getNesting(Class<?> clazz)
static Method
getNonPrivateNonStaticFinalMethod(Class<?> type)
static String
getPropertyName(Method method)
Gets the property name from a getter method.static <T> Class<T>
getRawType(Type type)
static <T> T
invokeAndUnwrap(Object instance, Method method, Object... parameters)
Invokes the method on a given instance passing in given parameters.static boolean
isAbstract(Class<?> clazz)
static boolean
isAbstract(Method method)
Checks if a method is abstractstatic boolean
isArrayType(Class<?> rawType)
Checks if raw type is array typestatic boolean
isCacheable(Annotation[] annotations)
static boolean
isCacheable(Collection<Annotation> annotations)
static boolean
isClassLoadable(String className, org.jboss.weld.resources.spi.ResourceLoader resourceLoader)
static boolean
isDefault(Method method)
static boolean
isFinal(Class<?> clazz)
Checks if class is finalstatic boolean
isFinal(Member member)
Checks if member is finalstatic boolean
isPackagePrivate(int mod)
static boolean
isParameterizedType(Class<?> type)
Checks if type is parameterized typestatic boolean
isParameterizedTypeWithWildcard(Class<?> type)
static boolean
isPrimitive(Type type)
static boolean
isPrivate(Member member)
Checks if member is privatestatic boolean
isSerializable(Class<?> clazz)
static boolean
isStatic(Class<?> type)
Checks if type is staticstatic boolean
isStatic(Member member)
Checks if member is staticstatic boolean
isStaticNestedClass(Class<?> javaClass)
static boolean
isTopLevelOrStaticNestedClass(Class<?> javaClass)
static boolean
isTransient(Member member)
static boolean
isTypeOrAnyMethodFinal(Class<?> type)
Checks if type or member is finalstatic boolean
isUnboundedTypeVariable(Type type)
static boolean
isUnboundedWildcard(Type type)
static <T> Class<T>
loadClass(String className, org.jboss.weld.resources.spi.ResourceLoader resourceLoader)
Tries to load a class using the specified ResourceLoader.static Exception
unwrapInvocationTargetException(InvocationTargetException e)
Unwraps the givenInvocationTargetException
.
-
-
-
Field Detail
-
EMPTY_TYPES
public static final Type[] EMPTY_TYPES
-
EMPTY_ANNOTATIONS
public static final Annotation[] EMPTY_ANNOTATIONS
-
EMPTY_CLASSES
public static final Class<?>[] EMPTY_CLASSES
-
-
Method Detail
-
isCacheable
public static boolean isCacheable(Collection<Annotation> annotations)
-
isCacheable
public static boolean isCacheable(Annotation[] annotations)
-
cast
public static <T> T cast(Object obj)
-
getPropertyName
public static String getPropertyName(Method method)
Gets the property name from a getter method. We extend JavaBean conventions, allowing the getter method to have parameters- Parameters:
method
- The getter method- Returns:
- The name of the property. Returns null if method wasn't JavaBean getter-styled
-
isFinal
public static boolean isFinal(Class<?> clazz)
Checks if class is final- Parameters:
clazz
- The class to check- Returns:
- True if final, false otherwise
-
getNesting
public static int getNesting(Class<?> clazz)
-
isFinal
public static boolean isFinal(Member member)
Checks if member is final- Parameters:
member
- The member to check- Returns:
- True if final, false otherwise
-
isPrivate
public static boolean isPrivate(Member member)
Checks if member is private- Parameters:
member
- The member to check- Returns:
- True if final, false otherwise
-
isTypeOrAnyMethodFinal
public static boolean isTypeOrAnyMethodFinal(Class<?> type)
Checks if type or member is final- Parameters:
type
- Type or member- Returns:
- True if final, false otherwise
-
getNonPrivateNonStaticFinalMethod
public static Method getNonPrivateNonStaticFinalMethod(Class<?> type)
-
isPackagePrivate
public static boolean isPackagePrivate(int mod)
-
isStatic
public static boolean isStatic(Class<?> type)
Checks if type is static- Parameters:
type
- Type to check- Returns:
- True if static, false otherwise
-
isStatic
public static boolean isStatic(Member member)
Checks if member is static- Parameters:
member
- Member to check- Returns:
- True if static, false otherwise
-
isTransient
public static boolean isTransient(Member member)
-
isAbstract
public static boolean isAbstract(Method method)
Checks if a method is abstract- Parameters:
method
- the method- Returns:
- true if abstract
-
isAbstract
public static boolean isAbstract(Class<?> clazz)
-
getActualTypeArguments
public static Type[] getActualTypeArguments(Class<?> clazz)
Gets the actual type arguments of a class- Parameters:
clazz
- The class to examine- Returns:
- The type arguments
-
getActualTypeArguments
public static Type[] getActualTypeArguments(Type type)
Gets the actual type arguments of a Type- Parameters:
type
- The type to examine- Returns:
- The type arguments
-
isArrayType
public static boolean isArrayType(Class<?> rawType)
Checks if raw type is array type- Parameters:
rawType
- The raw type to check- Returns:
- True if array, false otherwise
-
isParameterizedType
public static boolean isParameterizedType(Class<?> type)
Checks if type is parameterized type- Parameters:
type
- The type to check- Returns:
- True if parameterized, false otherwise
-
isParameterizedTypeWithWildcard
public static boolean isParameterizedTypeWithWildcard(Class<?> type)
-
containsWildcards
public static boolean containsWildcards(Type[] types)
-
isSerializable
public static boolean isSerializable(Class<?> clazz)
-
isPrimitive
public static boolean isPrimitive(Type type)
-
isClassLoadable
public static boolean isClassLoadable(String className, org.jboss.weld.resources.spi.ResourceLoader resourceLoader)
-
loadClass
public static <T> Class<T> loadClass(String className, org.jboss.weld.resources.spi.ResourceLoader resourceLoader)
Tries to load a class using the specified ResourceLoader. Returns null if the class is not found.- Parameters:
className
-resourceLoader
-- Returns:
- the loaded class or null if the given class cannot be loaded
-
isUnboundedWildcard
public static boolean isUnboundedWildcard(Type type)
-
isUnboundedTypeVariable
public static boolean isUnboundedTypeVariable(Type type)
-
isStaticNestedClass
public static boolean isStaticNestedClass(Class<?> javaClass)
- Parameters:
javaClass
-- Returns:
true
if the given class is a static nested class,false
otherwise
-
isTopLevelOrStaticNestedClass
public static boolean isTopLevelOrStaticNestedClass(Class<?> javaClass)
- Parameters:
javaClass
-- Returns:
true
if the given class is a top-level or static nested class,false
otherwise
-
invokeAndUnwrap
public static <T> T invokeAndUnwrap(Object instance, Method method, Object... parameters) throws Throwable
Invokes the method on a given instance passing in given parameters. If the invocation yieldsInvocationTargetException
, the exception is unwrapped. It is a responsibility of the caller to make sure that the method is accessible to the caller.- Throws:
Throwable
-
checkDeclaringClassLoadable
public static void checkDeclaringClassLoadable(Class<?> c)
Triggers loading of declaring class (if any) of the given class recursively. If the class cannot be loaded, the underlyingLinkageError
is propagated.- Parameters:
class
- the given class- Throws:
LinkageError
- or its subclass if a declaring class cannot be loaded
-
findDeclaredMethodByName
public static Method findDeclaredMethodByName(Class<?> clazz, String methodName)
Searches for a declared method with a given name. If the class declares multiple methods with the given name, there is no guarantee as of which methods is returned. Null is returned if the class does not declare a method with the given name.- Parameters:
clazz
- the given classmethodName
- the given method name- Returns:
- method method with the given name declared by the given class or null if no such method exists
-
unwrapInvocationTargetException
public static Exception unwrapInvocationTargetException(InvocationTargetException e) throws Exception
Unwraps the givenInvocationTargetException
.Error
andException
are unwrapped right away,Throwable
is wrapped withinWeldException
. This method never returns - it always throws the unwrapped cause instead. The return type matches the throws part of the signature just to simplify usage.- Parameters:
the
- given exception- Returns:
- Throws:
Exception
- unwrapped cause ofInvocationTargetException
-
isDefault
public static boolean isDefault(Method method)
-
decapitalize
public static String decapitalize(String name)
Copy of java.beans.Introspector#decapitalize(name) to reduce java.desktop module dependency. Utility method to take a string and convert it to normal Java variable name capitalization. This normally means converting the first character from upper case to lower case, but in the (unusual) special case when there is more than one character and both the first and second characters are upper case, we leave it alone.Thus "FooBah" becomes "fooBah" and "X" becomes "x", but "URL" stays as "URL".
- Parameters:
name
- The string to be decapitalized.- Returns:
- The decapitalized version of the string.
-
-