org.hibernate.util
Class ReflectHelper

java.lang.Object
  extended by org.hibernate.util.ReflectHelper

public final class ReflectHelper
extends Object

Utility class for various reflection operations.

Author:
Gavin King, Steve Ebersole

Field Summary
static Class[] NO_PARAM_SIGNATURE
           
static Object[] NO_PARAMS
           
static Class[] SINGLE_OBJECT_PARAM_SIGNATURE
           
 
Method Summary
static Class classForName(String name)
          Perform resolution of a class name.
static Class classForName(String name, Class caller)
          Perform resolution of a class name.
static Method extractEqualsMethod(Class clazz)
          Encapsulation of getting hold of a class's equals method.
static Method extractHashCodeMethod(Class clazz)
          Encapsulation of getting hold of a class's hashCode method.
static Object getConstantValue(String name)
          Resolve a constant to its actual value.
static Constructor getConstructor(Class clazz, Type[] types)
          Retrieve a constructor for the given class, with arguments matching the specified Hibernate mapping types.
static Constructor getDefaultConstructor(Class clazz)
          Retrieve the default (no arg) constructor from the given class.
static Getter getGetter(Class theClass, String name)
          Directly retrieve the Getter reference via the BasicPropertyAccessor.
static Method getMethod(Class clazz, Method method)
           
static boolean implementsInterface(Class clazz, Class intf)
          Determine if the given class implements the given interface.
static boolean isAbstractClass(Class clazz)
          Determine if the given class is declared abstract.
static boolean isFinalClass(Class clazz)
          Determine is the given class is declared final.
static boolean isPublic(Class clazz, Member member)
          Is this member publicly accessible.
static boolean isPublic(Member member)
          Is this member publicly accessible.
static boolean overridesEquals(Class clazz)
          Determine if the given class defines an Object.equals(java.lang.Object) override.
static boolean overridesHashCode(Class clazz)
          Determine if the given class defines a Object.hashCode() override.
static Class reflectedPropertyClass(String className, String name)
          Attempt to resolve the specified property type through reflection.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_PARAM_SIGNATURE

public static final Class[] NO_PARAM_SIGNATURE

NO_PARAMS

public static final Object[] NO_PARAMS

SINGLE_OBJECT_PARAM_SIGNATURE

public static final Class[] SINGLE_OBJECT_PARAM_SIGNATURE
Method Detail

extractEqualsMethod

public static Method extractEqualsMethod(Class clazz)
                                  throws NoSuchMethodException
Encapsulation of getting hold of a class's equals method.

Parameters:
clazz - The class from which to extract the equals method.
Returns:
The equals method reference
Throws:
NoSuchMethodException - Should indicate an attempt to extract equals method from interface.

extractHashCodeMethod

public static Method extractHashCodeMethod(Class clazz)
                                    throws NoSuchMethodException
Encapsulation of getting hold of a class's hashCode method.

Parameters:
clazz - The class from which to extract the hashCode method.
Returns:
The hashCode method reference
Throws:
NoSuchMethodException - Should indicate an attempt to extract hashCode method from interface.

overridesEquals

public static boolean overridesEquals(Class clazz)
Determine if the given class defines an Object.equals(java.lang.Object) override.

Parameters:
clazz - The class to check
Returns:
True if clazz defines an equals override.

overridesHashCode

public static boolean overridesHashCode(Class clazz)
Determine if the given class defines a Object.hashCode() override.

Parameters:
clazz - The class to check
Returns:
True if clazz defines an hashCode override.

implementsInterface

public static boolean implementsInterface(Class clazz,
                                          Class intf)
Determine if the given class implements the given interface.

Parameters:
clazz - The class to check
intf - The interface to check it against.
Returns:
True if the class does implement the interface, false otherwise.

classForName

public static Class classForName(String name,
                                 Class caller)
                          throws ClassNotFoundException
Perform resolution of a class name.

Here we first check the context classloader, if one, before delegating to Class.forName(String, boolean, ClassLoader) using the caller's classloader

Parameters:
name - The class name
caller - The class from which this call originated (in order to access that class's loader).
Returns:
The class reference.
Throws:
ClassNotFoundException - From Class.forName(String, boolean, ClassLoader).

classForName

public static Class classForName(String name)
                          throws ClassNotFoundException
Perform resolution of a class name.

Same as classForName(String, Class) except that here we delegate to Class.forName(String) if the context classloader lookup is unsuccessful.

Parameters:
name - The class name
Returns:
The class reference.
Throws:
ClassNotFoundException - From Class.forName(String).

isPublic

public static boolean isPublic(Member member)
Is this member publicly accessible.

Short-hand for isPublic(Class, Member) passing the member + Member.getDeclaringClass()

Parameters:
member - The member to check
Returns:
True if the member is publicly accessible.

isPublic

public static boolean isPublic(Class clazz,
                               Member member)
Is this member publicly accessible.

Parameters:
clazz - The class which defines the member
member - The memeber.
Returns:
True if the member is publicly accessible, false otherwise.

reflectedPropertyClass

public static Class reflectedPropertyClass(String className,
                                           String name)
                                    throws MappingException
Attempt to resolve the specified property type through reflection.

Parameters:
className - The name of the class owning the property.
name - The name of the property.
Returns:
The type of the property.
Throws:
MappingException - Indicates we were unable to locate the property.

getGetter

public static Getter getGetter(Class theClass,
                               String name)
                        throws MappingException
Directly retrieve the Getter reference via the BasicPropertyAccessor.

Parameters:
theClass - The class owning the property
name - The name of the property
Returns:
The getter.
Throws:
MappingException - Indicates we were unable to locate the property.

getConstantValue

public static Object getConstantValue(String name)
Resolve a constant to its actual value.

Parameters:
name - The name
Returns:
The value

getDefaultConstructor

public static Constructor getDefaultConstructor(Class clazz)
                                         throws PropertyNotFoundException
Retrieve the default (no arg) constructor from the given class.

Parameters:
clazz - The class for which to retrieve the default ctor.
Returns:
The default constructor.
Throws:
PropertyNotFoundException - Indicates there was not publicly accessible, no-arg constructor (todo : why PropertyNotFoundException???)

isAbstractClass

public static boolean isAbstractClass(Class clazz)
Determine if the given class is declared abstract.

Parameters:
clazz - The class to check.
Returns:
True if the class is abstract, false otherwise.

isFinalClass

public static boolean isFinalClass(Class clazz)
Determine is the given class is declared final.

Parameters:
clazz - The class to check.
Returns:
True if the class is final, flase otherwise.

getConstructor

public static Constructor getConstructor(Class clazz,
                                         Type[] types)
                                  throws PropertyNotFoundException
Retrieve a constructor for the given class, with arguments matching the specified Hibernate mapping types.

Parameters:
clazz - The class needing instantiation
types - The types representing the required ctor param signature
Returns:
The matching constructor.
Throws:
PropertyNotFoundException - Indicates we could not locate an appropriate constructor (todo : again with PropertyNotFoundException???)

getMethod

public static Method getMethod(Class clazz,
                               Method method)


Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.