package org.radargun.util; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Modifier; /** * Test support class providing reflection tools. * * @author Matej Cimbora */ public final class ReflectionUtils { private ReflectionUtils() { } public static <T> T getClassProperty(Class clazz, Object invoker, String property, Class<? extends T> castTo) throws NoSuchFieldException, IllegalAccessException { Field field = clazz.getDeclaredField(property); field.setAccessible(true); return (T) field.get(invoker); } public static void setClassProperty(Class clazz, Object invoker, String property, Object value) throws NoSuchFieldException, IllegalAccessException { Field field = clazz.getDeclaredField(property); field.setAccessible(true); Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); field.set(invoker, value); } public static <T> Constructor<T> getConstructor(Class clazz, Class<?>... parameterTypes) throws NoSuchMethodException { Constructor<T> constructor = clazz.getDeclaredConstructor(parameterTypes); constructor.setAccessible(true); return constructor; } }