This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new 2a5d56a33b ARTEMIS-5380 have json properties respect insertion order
2a5d56a33b is described below

commit 2a5d56a33bc6f21d62f567cdbc5e4ccd0ab3c325
Author: Gary Tully <[email protected]>
AuthorDate: Thu Apr 3 11:46:16 2025 +0100

    ARTEMIS-5380 have json properties respect insertion order
---
 .../core/config/impl/ConfigurationImpl.java        |  2 +-
 .../core/config/impl/ConfigurationImplTest.java    | 36 ++++++++++++++++++++--
 2 files changed, 34 insertions(+), 4 deletions(-)

diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java
index 78a7780125..2c09dac3e5 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java
@@ -3930,7 +3930,7 @@ public class ConfigurationImpl implements Configuration, 
Serializable {
       }
 
       private void loadJsonObject(String keySurroundString, String parentKey, 
JsonObject jsonObject) {
-         
jsonObject.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(jsonEntry
 -> {
+         jsonObject.entrySet().stream().forEach(jsonEntry -> {
             JsonValue jsonValue = jsonEntry.getValue();
             JsonValue.ValueType jsonValueType = jsonValue.getValueType();
             String jsonKey = jsonEntry.getKey();
diff --git 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
index 1aaf82b060..2dde0aa4c4 100644
--- 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
+++ 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
@@ -2038,12 +2038,42 @@ public class ConfigurationImplTest extends 
AbstractConfigurationTestBase {
       List<String> keys = new ArrayList<>();
       properties.entrySet().forEach(entry -> keys.add((String) 
entry.getKey()));
 
-      List<String> sortedKeys = 
keys.stream().sorted().collect(Collectors.toList());
-      for (int i = 0; i < sortedKeys.size(); i++) {
-         assertEquals(i, keys.indexOf(sortedKeys.get(i)));
+      List<String> keysFromJson = 
configJsonObject.keySet().stream().collect(Collectors.toList());
+      // first 4 are root attributes which we can compare by key
+      for (int i = 0; i < 4; i++) {
+         assertEquals(keysFromJson.get(i), keys.get(i), "index " + i);
       }
    }
 
+   @Test
+   public void testJsonNeedsInsertionOrder() throws Exception {
+
+      File tmpFile = File.createTempFile("insertion-order-props-test", 
".json", temporaryFolder);
+      try (FileOutputStream fileOutputStream = new FileOutputStream(tmpFile);
+           PrintWriter printWriter = new PrintWriter(fileOutputStream)) {
+
+         printWriter.write("{\n");
+         printWriter.write("  \"AMQPConnections\" : {\n");
+         printWriter.write("    \"target\" : {\n");
+         printWriter.write("      \"uri\" : 
\"tcp://host:6449?trustStorePath=/client.ts\",\n");
+         printWriter.write("      \"transportConfigurations\" : {\n");
+         printWriter.write("        \"target\" : {\n");
+         printWriter.write("          \"params\" : { \"trustStorePassword\" : 
\"pass\"\n }\n");
+         printWriter.write("        }\n");
+         printWriter.write("      }\n");
+         printWriter.write("    }\n");
+         printWriter.write("  }\n");
+         printWriter.write("}\n");
+      }
+
+      ConfigurationImpl configuration = new ConfigurationImpl();
+      configuration.parseProperties(tmpFile.getAbsolutePath());
+
+      String matchNoErrors = "\"errors\":\\[]";
+      assertEquals(3, configuration.getStatus().split(matchNoErrors, 
10).length, configuration.getStatus());
+      assertEquals(4, 
configuration.getAMQPConnections().get(0).getTransportConfigurations().get(0).getParams().size());
+   }
+
    @Test
    public void testTextPropertiesReaderFromFile() throws Exception {
       List<String> textProperties = buildSimpleConfigTextList();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to