From 0f2aef6910c1d0f40d1b6d90aa6ce62e1539387e Mon Sep 17 00:00:00 2001 From: Zhangmei Li Date: Sun, 24 Apr 2022 23:30:15 +0800 Subject: [PATCH] delete Whitebox.setInternalFinalState() method since ineffective Change-Id: I0497e1206b59131a219d2941237a7b3a6a46df6f --- .../baidu/hugegraph/testutil/Whitebox.java | 37 ----------------- .../hugegraph/testutil/WhiteboxTest.java | 40 ------------------- 2 files changed, 77 deletions(-) diff --git a/hugegraph-common/src/main/java/com/baidu/hugegraph/testutil/Whitebox.java b/hugegraph-common/src/main/java/com/baidu/hugegraph/testutil/Whitebox.java index b9473142..826ab01e 100644 --- a/hugegraph-common/src/main/java/com/baidu/hugegraph/testutil/Whitebox.java +++ b/hugegraph-common/src/main/java/com/baidu/hugegraph/testutil/Whitebox.java @@ -22,7 +22,6 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Objects; @@ -86,42 +85,6 @@ public static T getInternalState(Object target, String fieldName) { } } - public static void setInternalFinalState(Object target, - String fieldName, Object value) { - Class c = target instanceof Class ? - (Class) target : target.getClass(); - try { - Field field = c.getDeclaredField(fieldName); - - // Remove final like FieldUtils.removeFinalModifier() - Field modifiersField = Field.class.getDeclaredField("modifiers"); - modifiersField.setAccessible(true); - int oldModifiers = field.getModifiers(); - int nonFinal = oldModifiers & ~Modifier.FINAL; - modifiersField.setInt(field, nonFinal); - - // Reset overrideFieldAccessor - Field overrideFAField = Field.class.getDeclaredField("overrideFieldAccessor"); - overrideFAField.setAccessible(true); - if (overrideFAField.get(field) != null) { - setInternalState(field, "overrideFieldAccessor", null); - } - - try { - field.setAccessible(true); - field.set(target, value); - } finally { - // Resume old modifiers (final) - modifiersField.setInt(field, oldModifiers); - } - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException(String.format( - "Can't set value of '%s' against object '%s'", - fieldName, target), e); - } - } - private static Field getFieldFromHierarchy(Class clazz, String field) { Field f = getField(clazz, field); while (f == null && clazz != Object.class) { diff --git a/hugegraph-common/src/test/java/com/baidu/hugegraph/testutil/WhiteboxTest.java b/hugegraph-common/src/test/java/com/baidu/hugegraph/testutil/WhiteboxTest.java index 855c6adb..9afbd117 100644 --- a/hugegraph-common/src/test/java/com/baidu/hugegraph/testutil/WhiteboxTest.java +++ b/hugegraph-common/src/test/java/com/baidu/hugegraph/testutil/WhiteboxTest.java @@ -107,41 +107,6 @@ public void testSetInternalFinalState() { Assert.assertEquals(2, Whitebox.getInternalState(test1, "ivalueFinal")); // FIXME: seems don't take effect!!! Assert.assertEquals(1, test1.ivalueFinal); - - Whitebox.setInternalFinalState(test1, "ivalueFinal", 3); - Assert.assertEquals(3, Whitebox.getInternalState(test1, "ivalueFinal")); - // FIXME: seems don't take effect!!! - Assert.assertEquals(1, test1.ivalueFinal); - } - - @Test - public void testSetInternalStaticFinalState() { -// Assert.assertThrows(RuntimeException.class, () -> { -// Whitebox.setInternalState(Test4.class, "staticFinalValue", 11); -// }, e -> { -// Assert.assertContains("Can't set value of 'staticFinalValue'", -// e.getMessage()); -// }); - - Assert.assertEquals(1, Test4.staticFinalValue); - // Can only call at the first reflect time - Whitebox.setInternalFinalState(Test4.class, "staticFinalValue", 11); - Assert.assertEquals(11, Whitebox.getInternalState(Test4.class, - "staticFinalValue")); - - Whitebox.setInternalFinalState(Test4.class, "staticFinalValue", 12); - Assert.assertEquals(12, Whitebox.getInternalState(Test4.class, - "staticFinalValue")); - - // FIXME: seems don't take effect!!! - Assert.assertEquals(1, Test4.staticFinalValue); - - Assert.assertThrows(RuntimeException.class, () -> { - Whitebox.setInternalState(Test4.class, "staticFinalValue", 1); - }, e -> { - Assert.assertContains("Can't set value of 'staticFinalValue'", - e.getMessage()); - }); } @Test @@ -268,11 +233,6 @@ private String value() { } } - private static class Test4 { - - private static final int staticFinalValue = 1; - } - @SuppressWarnings("unused") private static class TestSubClass extends Test1 {