• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1diff --git a/src/main/java/org/mockito/internal/util/reflection/AccessibilityChanger.java b/src/main/java/org/mockito/internal/util/reflection/AccessibilityChanger.java
2new file mode 100644
3index 0000000..9d1b756
4--- /dev/null
5+++ b/src/main/java/org/mockito/internal/util/reflection/AccessibilityChanger.java
6@@ -0,0 +1,32 @@
7+/*
8+ * Copyright (c) 2007 Mockito contributors
9+ * This program is made available under the terms of the MIT License.
10+ */
11+package org.mockito.internal.util.reflection;
12+
13+import java.lang.reflect.AccessibleObject;
14+
15+class AccessibilityChanger {
16+
17+    private Boolean wasAccessible = null;
18+
19+    /**
20+     * safely disables access
21+     */
22+    public void safelyDisableAccess(AccessibleObject accessibleObject) {
23+        assert wasAccessible != null : "accessibility info shall not be null";
24+        try {
25+            accessibleObject.setAccessible(wasAccessible);
26+        } catch (Throwable t) {
27+            //ignore
28+        }
29+    }
30+
31+    /**
32+     * changes the accessibleObject accessibility and returns true if accessibility was changed
33+     */
34+    public void enableAccess(AccessibleObject accessibleObject) {
35+        wasAccessible = accessibleObject.isAccessible();
36+        accessibleObject.setAccessible(true);
37+    }
38+}
39diff --git a/src/main/java/org/mockito/internal/util/reflection/FieldSetter.java b/src/main/java/org/mockito/internal/util/reflection/FieldSetter.java
40new file mode 100644
41index 0000000..35b1210
42--- /dev/null
43+++ b/src/main/java/org/mockito/internal/util/reflection/FieldSetter.java
44@@ -0,0 +1,30 @@
45+/*
46+ * Copyright (c) 2007 Mockito contributors
47+ * This program is made available under the terms of the MIT License.
48+ */
49+package org.mockito.internal.util.reflection;
50+
51+import java.lang.reflect.Field;
52+
53+/** Do not use. To be removed after last usage is gone. */
54+@Deprecated
55+public class FieldSetter {
56+
57+    private FieldSetter(){}
58+
59+    /** Do not use. To be removed after last usage is gone. */
60+    @Deprecated
61+    public static void setField(Object target, Field field,Object value) {
62+        AccessibilityChanger changer = new AccessibilityChanger();
63+        changer.enableAccess(field);
64+        try {
65+            field.set(target, value);
66+        } catch (IllegalAccessException e) {
67+            throw new RuntimeException("Access not authorized on field '" + field + "' of object '" + target + "' with value: '" + value + "'", e);
68+        } catch (IllegalArgumentException e) {
69+            throw new RuntimeException("Wrong argument on field '" + field + "' of object '" + target + "' with value: '" + value + "', \n" +
70+                    "reason : " + e.getMessage(), e);
71+        }
72+        changer.safelyDisableAccess(field);
73+    }
74+}
75