org.ldaptive.beans.reflect.ReflectionUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ldaptive-beans Show documentation
Show all versions of ldaptive-beans Show documentation
Mapping, persistence, and code generation API for reading and writing POJOs to an LDAP directory
The newest version!
/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive.beans.reflect;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
/**
* Provides utility methods for common reflection operations.
*
* @author Middleware Services
*/
public final class ReflectionUtils
{
/** Default constructor. */
private ReflectionUtils() {}
/**
* Casts the supplied type to a class.
*
* @param t to cast
*
* @return class cast from t
*
* @throws IllegalArgumentException if t is not an instance of Class
*/
public static Class> classFromType(final Type t)
{
if (!(t instanceof Class)) {
throw new IllegalArgumentException("Unsupported type: " + t);
}
return (Class>) t;
}
/**
* Returns the value of the supplied field on the supplied object.
*
* @param field containing the value to return
* @param object that has the field
*
* @return value of the field on the object
*
* @throws IllegalArgumentException if the field cannot be retrieved
*/
public static Object getField(final Field field, final Object object)
{
try {
return field.get(object);
} catch (IllegalAccessException e) {
throw new IllegalArgumentException(e);
}
}
/**
* Sets the supplied value of the supplied field on the supplied object.
*
* @param field of the object to set
* @param object that has the field
* @param value to set
*
* @throws IllegalArgumentException if the field cannot be set
*/
public static void setField(final Field field, final Object object, final Object value)
{
try {
field.set(object, value);
} catch (IllegalAccessException e) {
throw new IllegalArgumentException(e);
}
}
/**
* Invokes the supplied method on the supplied object.
*
* @param method to invoke
* @param object that has the method
*
* @return value of the invoked method
*
* @throws IllegalArgumentException if the method cannot be invoked
*/
public static Object invokeGetterMethod(final Method method, final Object object)
{
try {
return method.invoke(object);
} catch (IllegalAccessException | InvocationTargetException e) {
throw new IllegalArgumentException(e);
}
}
/**
* Invokes the supplied method on the supplied object with the supplied value as a parameter.
*
* @param method to invoke
* @param object that has the method
* @param value to set
*
* @throws IllegalArgumentException if the method cannot be invoked
*/
public static void invokeSetterMethod(final Method method, final Object object, final Object value)
{
try {
method.invoke(object, value);
} catch (IllegalAccessException | InvocationTargetException e) {
throw new IllegalArgumentException(e);
}
}
}