org.hibernate.validator.internal.util
Class ReflectionHelper

java.lang.Object
  extended by org.hibernate.validator.internal.util.ReflectionHelper

public final class ReflectionHelper
extends Object

Some reflection utility methods. Where necessary calls will be performed as PrivilegedAction which is necessary for situations where a security manager is in place.

Author:
Hardy Ferentschik, Gunnar Morling, Kevin Pollet (C) 2011 SERLI

Method Summary
static Class<?> boxedType(Class<?> primitiveType)
          Returns the auto-boxed type of a primitive type.
static
<T> T
getAnnotationParameter(Annotation annotation, String parameterName, Class<T> type)
           
static ClassLoader getClassLoaderFromClass(Class<?> clazz)
           
static ClassLoader getClassLoaderFromContext()
           
static
<T> Constructor<T>
getConstructor(Class<T> clazz, Class<?>... params)
           
static Constructor<?>[] getDeclaredConstructors(Class<?> clazz)
          Returns the declared constructors of the specified class.
static Field getDeclaredField(Class<?> clazz, String fieldName)
          Returns the declared field with the specified name or null if it does not exist.
static Field[] getDeclaredFields(Class<?> clazz)
          Returns the fields of the specified class.
static Method getDeclaredMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes)
          Returns the declared method with the specified name and parameter types or null if it does not exist.
static Method[] getDeclaredMethods(Class<?> clazz)
          Returns the declared methods of the specified class.
static Type getIndexedType(Type type)
          Determines the type of elements of an Iterable, array or the value of a Map.
static Object getIndexedValue(Object value, Integer index)
          Tries to retrieve the indexed value from the specified object.
static Object getMappedValue(Object value, Object key)
          Tries to retrieve the mapped value from the specified object.
static Member getMember(Class<?> clazz, String property, ElementType elementType)
          Returns the member with the given name and type.
static Method getMethod(Class<?> clazz, String methodName)
          Returns the method with the specified name or null if it does not exist.
static Method getMethodFromPropertyName(Class<?> clazz, String methodName)
          Returns the method with the specified property name or null if it does not exist.
static Method[] getMethods(Class<?> clazz)
          Returns the methods of the specified class (include inherited methods).
static String getPropertyName(Member member)
          Returns the JavaBeans property name of the given member.
static Object getValue(Field field, Object object)
           
static Object getValue(Member member, Object object)
           
static Object getValue(Method method, Object object)
           
static boolean isGetterMethod(Method method)
          Checks whether the given method is a valid JavaBeans getter method, which is the case if its name starts with "get" and it has a return type but no parameter or its name starts with "is", it has no parameter and is returning boolean or its name starts with "has", it has no parameter and is returning boolean (HV-specific, not mandated by JavaBeans spec).
static boolean isIterable(Type type)
           
static boolean isList(Type type)
           
static boolean isMap(Type type)
           
static Class<?> loadClass(String className, Class<?> caller)
           
static Class<?> loadClass(String className, String defaultPackage)
           
static Class<?> loadClass(String className, String defaultPackage, Class<?> caller)
           
static
<T> T
newConstructorInstance(Constructor<T> constructor, Object... initArgs)
           
static
<T> T
newInstance(Class<T> clazz, String message)
           
static boolean overrides(Method subTypeMethod, Method superTypeMethod)
          Checks, whether subTypeMethod overrides superTypeMethod.
static void setAccessibility(Member member)
           
static Type typeOf(ExecutableElement executable, int parameterIndex)
          Returns the type of the parameter of the given method with the given parameter index.
static Type typeOf(Member member)
           
static Class<?> unBoxedType(Class<?> type)
          Returns the primitive type for a boxed type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getClassLoaderFromContext

public static ClassLoader getClassLoaderFromContext()

getClassLoaderFromClass

public static ClassLoader getClassLoaderFromClass(Class<?> clazz)

loadClass

public static Class<?> loadClass(String className,
                                 Class<?> caller)

loadClass

public static Class<?> loadClass(String className,
                                 String defaultPackage)

loadClass

public static Class<?> loadClass(String className,
                                 String defaultPackage,
                                 Class<?> caller)

getConstructor

public static <T> Constructor<T> getConstructor(Class<T> clazz,
                                                Class<?>... params)

newInstance

public static <T> T newInstance(Class<T> clazz,
                                String message)

newConstructorInstance

public static <T> T newConstructorInstance(Constructor<T> constructor,
                                           Object... initArgs)

getAnnotationParameter

public static <T> T getAnnotationParameter(Annotation annotation,
                                           String parameterName,
                                           Class<T> type)

getPropertyName

public static String getPropertyName(Member member)
Returns the JavaBeans property name of the given member.

For fields, the field name will be returned. For getter methods, the decapitalized property name will be returned, with the "get", "is" or "has" prefix stripped off. Getter methods are methods

Parameters:
member - The member for which to get the property name.
Returns:
The property name for the given member or null if the member is neither a field nor a getter method according to the JavaBeans standard.

isGetterMethod

public static boolean isGetterMethod(Method method)
Checks whether the given method is a valid JavaBeans getter method, which is the case if

Parameters:
method - The method of interest.
Returns:
true, if the given method is a JavaBeans getter method, false otherwise.

getMember

public static Member getMember(Class<?> clazz,
                               String property,
                               ElementType elementType)
Returns the member with the given name and type.

Parameters:
clazz - The class from which to retrieve the member. Cannot be null.
property - The property name without "is", "get" or "has". Cannot be null or empty.
elementType - The element type. Either ElementType.FIELD or ElementType METHOD.
Returns:
the member which matching the name and type or null if no such member exists.

typeOf

public static Type typeOf(Member member)
Parameters:
member - The Member instance for which to retrieve the type.
Returns:
Returns the Type of the given Field or Method.
Throws:
IllegalArgumentException - in case member is not a Field or Method.

typeOf

public static Type typeOf(ExecutableElement executable,
                          int parameterIndex)
Returns the type of the parameter of the given method with the given parameter index.

Parameters:
executable - The executable of interest.
parameterIndex - The index of the parameter for which the type should be returned.
Returns:
The erased type.

getValue

public static Object getValue(Member member,
                              Object object)

getValue

public static Object getValue(Field field,
                              Object object)

getValue

public static Object getValue(Method method,
                              Object object)

setAccessibility

public static void setAccessibility(Member member)

getIndexedType

public static Type getIndexedType(Type type)
Determines the type of elements of an Iterable, array or the value of a Map.

Parameters:
type - the type to inspect
Returns:
Returns the type of elements of an Iterable, array or the value of a Map. null is returned in case the type is not indexable (in the context of JSR 303).

isIterable

public static boolean isIterable(Type type)
Parameters:
type - the type to check.
Returns:
Returns true if type is a iterable type, false otherwise.

isMap

public static boolean isMap(Type type)
Parameters:
type - the type to check.
Returns:
Returns true if type is implementing Map, false otherwise.

isList

public static boolean isList(Type type)
Parameters:
type - the type to check.
Returns:
Returns true if type is implementing List, false otherwise.

getIndexedValue

public static Object getIndexedValue(Object value,
                                     Integer index)
Tries to retrieve the indexed value from the specified object.

Parameters:
value - The object from which to retrieve the indexed value. The object has to be non null and either a collection or array.
index - The index. The index does not have to be numerical. value could also be a map in which case the index could also be a string key.
Returns:
The indexed value or null if value is null or not a collection or array. null is also returned in case the index does not exist.

getMappedValue

public static Object getMappedValue(Object value,
                                    Object key)
Tries to retrieve the mapped value from the specified object.

Parameters:
value - The object from which to retrieve the mapped value. The object has to be non null and must implement the @{code Map} interface.
key - The map key. index.
Returns:
The mapped value or null if value is null or not implementing @{code Map}.

getDeclaredField

public static Field getDeclaredField(Class<?> clazz,
                                     String fieldName)
Returns the declared field with the specified name or null if it does not exist.

Parameters:
clazz - The class to check.
fieldName - The field name.
Returns:
Returns the declared field with the specified name or null if it does not exist.

getDeclaredFields

public static Field[] getDeclaredFields(Class<?> clazz)
Returns the fields of the specified class.

Parameters:
clazz - The class for which to retrieve the fields.
Returns:
Returns the fields for this class.

getMethodFromPropertyName

public static Method getMethodFromPropertyName(Class<?> clazz,
                                               String methodName)
Returns the method with the specified property name or null if it does not exist. This method will prepend 'is' and 'get' to the property name and capitalize the first letter.

Parameters:
clazz - The class to check.
methodName - The property name.
Returns:
Returns the method with the specified property or null if it does not exist.

getMethod

public static Method getMethod(Class<?> clazz,
                               String methodName)
Returns the method with the specified name or null if it does not exist.

Parameters:
clazz - The class to check.
methodName - The method name.
Returns:
Returns the method with the specified property or null if it does not exist.

getDeclaredMethod

public static Method getDeclaredMethod(Class<?> clazz,
                                       String methodName,
                                       Class<?>... parameterTypes)
Returns the declared method with the specified name and parameter types or null if it does not exist.

Parameters:
clazz - The class to check.
methodName - The method name.
parameterTypes - The method parameter types.
Returns:
Returns the declared method with the specified name or null if it does not exist.

getDeclaredMethods

public static Method[] getDeclaredMethods(Class<?> clazz)
Returns the declared methods of the specified class.

Parameters:
clazz - The class for which to retrieve the methods.
Returns:
Returns the declared methods for this class.

getMethods

public static Method[] getMethods(Class<?> clazz)
Returns the methods of the specified class (include inherited methods).

Parameters:
clazz - The class for which to retrieve the methods.
Returns:
Returns the methods for this class.

getDeclaredConstructors

public static Constructor<?>[] getDeclaredConstructors(Class<?> clazz)
Returns the declared constructors of the specified class.

Parameters:
clazz - The class for which to retrieve the constructors.
Returns:
Returns the declared constructors for this class.

boxedType

public static Class<?> boxedType(Class<?> primitiveType)
Returns the auto-boxed type of a primitive type.

Parameters:
primitiveType - the primitive type
Returns:
the auto-boxed type of a primitive type. In case Void is passed (which is considered as primitive type by Class.isPrimitive()), Void will be returned.
Throws:
IllegalArgumentException - in case the parameter primitiveType does not represent a primitive type.

unBoxedType

public static Class<?> unBoxedType(Class<?> type)
Returns the primitive type for a boxed type.

Parameters:
type - the boxed type
Returns:
the primitive type for a auto-boxed type. In case Void is passed (which is considered as primitive type by Class.isPrimitive()), Void will be returned.
Throws:
IllegalArgumentException - in case the parameter primitiveType does not represent a primitive type.

overrides

public static boolean overrides(Method subTypeMethod,
                                Method superTypeMethod)
Checks, whether subTypeMethod overrides superTypeMethod.

Parameters:
subTypeMethod - The sub type method (cannot be null).
superTypeMethod - The super type method (cannot be null).
Returns:
Returns true if subTypeMethod overrides superTypeMethod, false otherwise.


Copyright © 2007-2013 Red Hat, Inc. All Rights Reserved