aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/api/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech/api/helpers')
-rw-r--r--src/main/java/kubatech/api/helpers/ReflectionHelper.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/main/java/kubatech/api/helpers/ReflectionHelper.java b/src/main/java/kubatech/api/helpers/ReflectionHelper.java
index 1d7449afc4..7b02fe6c82 100644
--- a/src/main/java/kubatech/api/helpers/ReflectionHelper.java
+++ b/src/main/java/kubatech/api/helpers/ReflectionHelper.java
@@ -45,6 +45,7 @@ public class ReflectionHelper {
boolean exceptionDetected = false;
Field f = null;
do {
+ exceptionDetected = false;
try {
f = cl.getDeclaredField(fieldName);
f.setAccessible(true);
@@ -61,6 +62,38 @@ public class ReflectionHelper {
}
}
+ public static <T> boolean setField(Object obj, String fieldName, T value) {
+ Class<?> cl = obj.getClass();
+ String clName = cl.getName();
+ HashMap<String, Field> classmap = classes.computeIfAbsent(clName, s -> new _FieldsMethods()).fields;
+ try {
+ if (classmap.containsKey(fieldName)) {
+ Field f = classmap.get(fieldName);
+ if (f == null) return false;
+ f.set(obj, value);
+ return true;
+ }
+ boolean exceptionDetected = false;
+ Field f = null;
+ do {
+ exceptionDetected = false;
+ try {
+ f = cl.getDeclaredField(fieldName);
+ f.setAccessible(true);
+ } catch (Exception ex) {
+ exceptionDetected = true;
+ cl = cl.getSuperclass();
+ }
+ } while (exceptionDetected && !cl.equals(Object.class));
+ classmap.put(fieldName, f);
+ if (f == null) return false;
+ f.set(obj, value);
+ return true;
+ } catch (Exception ex) {
+ return false;
+ }
+ }
+
public static <T> T getField(Object obj, String fieldName) {
return getField(obj, fieldName, null);
}
@@ -87,6 +120,7 @@ public class ReflectionHelper {
boolean exceptionDetected = false;
Method m = null;
do {
+ exceptionDetected = false;
try {
m = cl.getDeclaredMethod(methodName, argsTypes);
m.setAccessible(true);