FELIX-6386 : Unable to read persisted state from state.ser
diff --git a/configurator/pom.xml b/configurator/pom.xml
index da59ea0..64005b8 100644
--- a/configurator/pom.xml
+++ b/configurator/pom.xml
@@ -111,7 +111,7 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.cm.json</artifactId>
- <version>1.0.0</version>
+ <version>1.0.6</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/configurator/src/main/java/org/apache/felix/configurator/impl/model/Config.java b/configurator/src/main/java/org/apache/felix/configurator/impl/model/Config.java
index 30fa956..2e8c634 100644
--- a/configurator/src/main/java/org/apache/felix/configurator/impl/model/Config.java
+++ b/configurator/src/main/java/org/apache/felix/configurator/impl/model/Config.java
@@ -22,6 +22,8 @@
import java.io.IOException;
import java.io.Serializable;
import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.Hashtable;
import java.util.List;
public class Config implements Serializable, Comparable<Config> {
@@ -62,7 +64,7 @@
this.pid = pid;
this.ranking = ranking;
this.bundleId = bundleId;
- this.properties = properties;
+ this.properties = this.getPrivateCopyOf(properties);
this.policy = policy;
}
@@ -87,6 +89,22 @@
}
/**
+ * Copy given Dictionary
+ */
+ private Dictionary<String, Object> getPrivateCopyOf(final Dictionary<String, Object> input) {
+ if ( input == null ) {
+ return null;
+ }
+
+ final Dictionary<String, Object> result = new Hashtable<>();
+ final Enumeration<String> e = input.keys();
+ while(e.hasMoreElements()) {
+ final String key = e.nextElement();
+ result.put(key, input.get(key));
+ }
+ return result;
+ }
+ /**
* Deserialize the object
* - read version id
* - deserialize fields