From 0a427c9f5a90b35a23fb2955552a94c0663b31d1 Mon Sep 17 00:00:00 2001
From: Robert Scott <code@humanleg.org.uk>
Date: Thu, 1 Nov 2018 22:02:17 +0000
Subject: [PATCH v1 1/4] TestUtils: add setPrivateField
---
test/unit/org/openstreetmap/josm/TestUtils.java | 37 +++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/test/unit/org/openstreetmap/josm/TestUtils.java b/test/unit/org/openstreetmap/josm/TestUtils.java
index d5684b3da..5f073b44c 100644
|
a
|
b
|
public final class TestUtils {
|
| 203 | 203 | } |
| 204 | 204 | |
| 205 | 205 | /** |
| | 206 | * Sets a private field value. |
| | 207 | * @param obj object |
| | 208 | * @param fieldName private field name |
| | 209 | * @param value replacement value |
| | 210 | * @throws ReflectiveOperationException if a reflection operation error occurs |
| | 211 | */ |
| | 212 | public static void setPrivateField( |
| | 213 | final Object obj, |
| | 214 | final String fieldName, |
| | 215 | final Object value |
| | 216 | ) throws ReflectiveOperationException { |
| | 217 | setPrivateField(obj.getClass(), obj, fieldName, value); |
| | 218 | } |
| | 219 | |
| | 220 | /** |
| | 221 | * Sets a private field value. |
| | 222 | * @param cls object class |
| | 223 | * @param obj object |
| | 224 | * @param fieldName private field name |
| | 225 | * @param value replacement value |
| | 226 | * @throws ReflectiveOperationException if a reflection operation error occurs |
| | 227 | */ |
| | 228 | public static void setPrivateField( |
| | 229 | final Class<?> cls, |
| | 230 | final Object obj, |
| | 231 | final String fieldName, |
| | 232 | final Object value |
| | 233 | ) throws ReflectiveOperationException { |
| | 234 | Field f = cls.getDeclaredField(fieldName); |
| | 235 | AccessController.doPrivileged((PrivilegedAction<Void>) () -> { |
| | 236 | f.setAccessible(true); |
| | 237 | return null; |
| | 238 | }); |
| | 239 | f.set(obj, value); |
| | 240 | } |
| | 241 | |
| | 242 | /** |
| 206 | 243 | * Returns a private static field value. |
| 207 | 244 | * @param cls object class |
| 208 | 245 | * @param fieldName private field name |