You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2022/06/02 20:24:19 UTC
[synapse] branch master updated: Make serializeRegistry deterministic
This is an automated email from the ASF dual-hosted git repository.
veithen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/synapse.git
The following commit(s) were added to refs/heads/master by this push:
new f31acacc6 Make serializeRegistry deterministic
f31acacc6 is described below
commit f31acacc60b2fb0e5eebd9c97e7b3bba393beee2
Author: Andreas Veithen <an...@gmail.com>
AuthorDate: Thu Jun 2 20:22:25 2022 +0000
Make serializeRegistry deterministic
RegistrySerializer.serializeRegistry iterates over the entries of a
hash map and produces a result that depends on the Java version. Fix
that by sorting the entries.
---
.../java/org/apache/synapse/config/xml/RegistrySerializer.java | 10 ++++++----
.../apache/synapse/config/xml/RegistrySerializationTest.java | 2 +-
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/synapse/config/xml/RegistrySerializer.java b/modules/core/src/main/java/org/apache/synapse/config/xml/RegistrySerializer.java
index 6ba990f6d..80438e8ed 100644
--- a/modules/core/src/main/java/org/apache/synapse/config/xml/RegistrySerializer.java
+++ b/modules/core/src/main/java/org/apache/synapse/config/xml/RegistrySerializer.java
@@ -30,6 +30,8 @@ import org.apache.synapse.SynapseConstants;
import org.apache.synapse.registry.Registry;
import java.util.Iterator;
+import java.util.Map;
+import java.util.TreeMap;
/**
* <registry [name="string"] provider="provider.class">
@@ -55,10 +57,10 @@ public class RegistrySerializer {
handleException("Invalid registry. Provider is required");
}
- Iterator iter = registry.getConfigurationProperties().keySet().iterator();
- while (iter.hasNext()) {
- String name = (String) iter.next();
- String value = (String) registry.getConfigurationProperties().get(name);
+ // Sort the properties to make the result deterministic.
+ for (Map.Entry<Object, Object> entry : new TreeMap<>(registry.getConfigurationProperties()).entrySet()) {
+ String name = (String) entry.getKey();
+ String value = (String) entry.getValue();
OMElement property = fac.createOMElement("parameter", synNS);
property.addAttribute(fac.createOMAttribute(
"name", nullNS, name));
diff --git a/modules/core/src/test/java/org/apache/synapse/config/xml/RegistrySerializationTest.java b/modules/core/src/test/java/org/apache/synapse/config/xml/RegistrySerializationTest.java
index b87138435..db34f1dde 100644
--- a/modules/core/src/test/java/org/apache/synapse/config/xml/RegistrySerializationTest.java
+++ b/modules/core/src/test/java/org/apache/synapse/config/xml/RegistrySerializationTest.java
@@ -33,8 +33,8 @@ public class RegistrySerializationTest extends AbstractTestCase {
String regitryConfiguration = "<syn:registry xmlns:syn=\"http://ws.apache.org/ns/synapse\" " +
"provider=\"org.apache.synapse.registry.url.SimpleURLRegistry\">" +
- "<syn:parameter name=\"root\">file:./../../repository/</syn:parameter>" +
"<syn:parameter name=\"cachableDuration\">15000</syn:parameter>" +
+ "<syn:parameter name=\"root\">file:./../../repository/</syn:parameter>" +
"</syn:registry>";
OMElement registryElement = createOMElement(regitryConfiguration);