summaryrefslogtreecommitdiff
path: root/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java')
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java
index 7946c6a6d1..83294c13ad 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java
@@ -21,6 +21,7 @@
package org.apache.qpid.test.utils;
import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -225,4 +226,34 @@ public class ReflectionUtils
throw new ReflectionUtilsException("NoSuchMethodException", e);
}
}
+
+ @SuppressWarnings("unchecked")
+ public static <T> T getDeclaredField(final Object obj, final String fieldName)
+ {
+ try
+ {
+ final Field field = obj.getClass().getDeclaredField(fieldName);
+ if (!field.isAccessible())
+ {
+ field.setAccessible(true);
+ }
+ return (T) field.get(obj);
+ }
+ catch (NoSuchFieldException e)
+ {
+ throw new ReflectionUtilsException("Unable to read field " + fieldName + "from object " + obj, e);
+ }
+ catch (SecurityException e)
+ {
+ throw new ReflectionUtilsException("Unable to read field " + fieldName + "from object " + obj, e);
+ }
+ catch (IllegalArgumentException e)
+ {
+ throw new ReflectionUtilsException("Unable to read field " + fieldName + "from object " + obj, e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new ReflectionUtilsException("Unable to read field " + fieldName + "from object " + obj, e);
+ }
+ }
}