package org.projectusus.core.testutil;
import java.lang.reflect.Field;
public class ReflectionUtil {
private ReflectionUtil() {
// no instantiation
}
private static final boolean DISABLE_SECURITY = true;
public static Object getValue( final Object object, final String fieldName ) throws IllegalArgumentException, IllegalAccessException, SecurityException, NoSuchFieldException {
return getValue( object.getClass(), object, fieldName );
}
public static Object getValue( final Class<?> clazz, final Object object, final String fieldName ) throws IllegalArgumentException, IllegalAccessException, SecurityException,
NoSuchFieldException {
final Field field = clazz.getDeclaredField( fieldName );
boolean oldAccessible = field.isAccessible();
field.setAccessible( DISABLE_SECURITY );
Object result = field.get( object );
field.setAccessible( oldAccessible );
return result;
}
public static void setValue( final Object target, final Object value, final String fieldName ) throws IllegalArgumentException, IllegalAccessException, SecurityException,
NoSuchFieldException {
setValue( target.getClass(), target, value, fieldName );
}
public static void setValue( final Class<?> clazz, final Object target, final Object value, final String fieldName ) throws IllegalArgumentException, IllegalAccessException,
SecurityException, NoSuchFieldException {
final Field field = clazz.getDeclaredField( fieldName );
boolean oldAccessible = field.isAccessible();
field.setAccessible( DISABLE_SECURITY );
field.set( target, value );
field.setAccessible( oldAccessible );
}
public static void setIntValue( final Class<?> clazz, final Object target, final int value, final String fieldName ) throws IllegalArgumentException, IllegalAccessException,
SecurityException, NoSuchFieldException {
final Field field = clazz.getDeclaredField( fieldName );
boolean oldAccessible = field.isAccessible();
field.setAccessible( DISABLE_SECURITY );
field.setInt( target, value );
field.setAccessible( oldAccessible );
}
}