Author: reschke
Date: Thu Oct 1 11:51:51 2015
New Revision: 1706218
URL: http://svn.apache.org/viewvc?rev=1706218&view=rev
Log:
OAK-3449: test case bug fix: restore default behavior after hacking the class
using reflection
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java?rev=1706218&r1=1706217&r2=1706218&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java
Thu Oct 1 11:51:51 2015
@@ -602,30 +602,38 @@ public class DocumentDiscoveryLiteServic
* http://stackoverflow.com/questions/3301635/change-private-static-final-
* field-using-java-reflection
*/
- static void setFinalStatic(Field field, Object newValue) throws Exception {
+ static Object setFinalStatic(Field field, Object newValue) throws
Exception {
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
+ Object prev = field.get(null);
field.set(null, newValue);
+ return prev;
}
// subsequent tests should get a DocumentDiscoveryLiteService setup from
the
// start
private DocumentNodeStore createNodeStore(String workingDir) throws
SecurityException, Exception {
- // ensure that we always get a fresh cluster[node]id
- setFinalStatic(ClusterNodeInfo.class.getDeclaredField("WORKING_DIR"),
workingDir);
-
- // then create the DocumentNodeStore
- DocumentMK mk1 = createMK(
- 0 /* to make sure the clusterNodes collection is used **/,
- 500 /* asyncDelay: background interval */);
-
- logger.info("createNodeStore: created DocumentNodeStore with cid=" +
mk1.nodeStore.getClusterId() + ", workingDir="
- + workingDir);
- return mk1.nodeStore;
+ Object prevWorkingDir = System.getProperty("user.dir", "");
+ try {
+ // ensure that we always get a fresh cluster[node]id
+ prevWorkingDir =
setFinalStatic(ClusterNodeInfo.class.getDeclaredField("WORKING_DIR"),
workingDir);
+
+ // then create the DocumentNodeStore
+ DocumentMK mk1 = createMK(
+ 0 /* to make sure the clusterNodes collection is used **/,
+ 500 /* asyncDelay: background interval */);
+
+ logger.info("createNodeStore: created DocumentNodeStore with cid="
+ mk1.nodeStore.getClusterId() + ", workingDir="
+ + workingDir);
+ return mk1.nodeStore;
+ }
+ finally {
+
setFinalStatic(ClusterNodeInfo.class.getDeclaredField("WORKING_DIR"),
prevWorkingDir);
+ }
}
private SimplifiedInstance createInstance() throws Exception {