You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2023/06/27 11:49:34 UTC

[sling-org-apache-sling-testing-caconfig-mock-plugin] branch master updated: SLING-11915 caconfig-mock-plugin: Order of collection items may be lost in writeConfigurationCollection

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

sseifert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-caconfig-mock-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 4c987ec  SLING-11915 caconfig-mock-plugin: Order of collection items may be lost in writeConfigurationCollection
4c987ec is described below

commit 4c987ec627fc7b1f84bd630fe9dd2f6a01dea878
Author: Stefan Seifert <st...@users.noreply.github.com>
AuthorDate: Tue Jun 27 13:41:34 2023 +0200

    SLING-11915 caconfig-mock-plugin: Order of collection items may be lost in writeConfigurationCollection
---
 .../mock/caconfig/ConfigurationPersistHelper.java  |  4 ++--
 .../mock/caconfig/MockContextAwareConfigTest.java  | 24 ++++++++++++++++++++++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationPersistHelper.java b/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationPersistHelper.java
index db39882..87d8c26 100644
--- a/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationPersistHelper.java
+++ b/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationPersistHelper.java
@@ -19,7 +19,7 @@
 package org.apache.sling.testing.mock.caconfig;
 
 import java.util.Collection;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -81,7 +81,7 @@ class ConfigurationPersistHelper {
      */
     void writeConfigurationCollection(@NotNull String configName, @NotNull Collection<@NotNull Map<String, Object>> values) {
         // split each collection item map in it's parts
-        Map<String, ConfigurationDataParts> partsCollection = new HashMap<>();
+        Map<String, ConfigurationDataParts> partsCollection = new LinkedHashMap<>();
         int index = 0;
         for (Map<String, Object> map : values) {
             partsCollection.put("item" + (index++), new ConfigurationDataParts(map));
diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java
index 0e448e5..f040654 100644
--- a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java
@@ -91,6 +91,30 @@ public class MockContextAwareConfigTest {
         assertEquals(5, item2.intParam());
     }
 
+    @Test
+    public void testCollectionConfig_DifferentOrder() {
+        MockContextAwareConfig.writeConfigurationCollection(context, "/content/region/site", ListConfig.class, ImmutableList.of(
+                ImmutableMap.<String,Object>of("stringParam", "value2"),
+                ImmutableMap.<String,Object>of("stringParam", "value3"),
+                ImmutableMap.<String,Object>of("stringParam", "value1")));
+
+        Collection<ListConfig> config = getConfigCollection(ListConfig.class);
+        assertEquals(3, config.size());
+        Iterator<ListConfig> items = config.iterator();
+
+        ListConfig item1 = items.next();
+        assertEquals("value2", item1.stringParam());
+        assertEquals(5, item1.intParam());
+
+        ListConfig item2 = items.next();
+        assertEquals("value3", item2.stringParam());
+        assertEquals(5, item2.intParam());
+
+        ListConfig item3 = items.next();
+        assertEquals("value1", item3.stringParam());
+        assertEquals(5, item3.intParam());
+    }
+
     @Test
     public void testNestedSingletonConfig() {
         MockContextAwareConfig.writeConfiguration(context, "/content/region/site", NestedConfig.class,