org.hibernate.validator.internal.util

## Class ReflectionHelper

- java.lang.Object
- - 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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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>` | `getDeclaredConstructor(Class<T> clazz, Class<?>... params)` Returns the declared constructor with the specified parameter types or `null` if it does not exist.
    `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 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)

    - #### 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
      - whose name start with "get" and who have a return type but no parameter or
      - whose name starts with "is" and who have no parameter and return `boolean` or
      - whose name starts with "has" and who have no parameter and return `boolean` (HV-specific, not mandated by JavaBeans spec).
      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
      - 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).
      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.

    - #### getDeclaredConstructor

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

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

    - #### 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.

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