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