diff --git a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/AliasedEagerImportingStrategy.java b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/AliasedEagerImportingStrategy.java index 9558c4b4b..0d0bd5d64 100644 --- a/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/AliasedEagerImportingStrategy.java +++ b/src/main/java/com/hubspot/jinjava/lib/tag/eager/importing/AliasedEagerImportingStrategy.java @@ -14,7 +14,7 @@ import com.hubspot.jinjava.util.EagerReconstructionUtils; import com.hubspot.jinjava.util.PrefixToPreserveState; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -188,8 +188,8 @@ private static void constructFullAliasPathMap( currentMap.put( allAliases[allAliases.length - 1], child.getContext().isDeferredExecutionMode() - ? DeferredValue.instance(new PyMap(new HashMap<>())) - : new PyMap(new HashMap<>()) + ? DeferredValue.instance(new PyMap(new LinkedHashMap<>())) + : new PyMap(new LinkedHashMap<>()) ); } @@ -211,14 +211,14 @@ private static Map getMapForCurrentContextAlias( (DeferredValue) parentValueForChild ).getOriginalValue(); } - Map newMap = new PyMap(new HashMap<>()); + Map newMap = new PyMap(new LinkedHashMap<>()); child .getContext() .getParent() .put(currentImportAlias, DeferredValue.instance(newMap)); return newMap; } else { - Map newMap = new PyMap(new HashMap<>()); + Map newMap = new PyMap(new LinkedHashMap<>()); child .getContext() .getParent() diff --git a/src/test/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapperTest.java b/src/test/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapperTest.java index 0e0020be7..7a78ec144 100644 --- a/src/test/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapperTest.java +++ b/src/test/java/com/hubspot/jinjava/objects/serialization/PyishObjectMapperTest.java @@ -14,6 +14,7 @@ import java.util.AbstractMap; import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang3.RandomStringUtils; @@ -23,26 +24,26 @@ public class PyishObjectMapperTest { @Test public void itSerializesMapWithNullKeysAsEmptyString() { - Map map = new SizeLimitingPyMap(new HashMap<>(), 10); + Map map = new SizeLimitingPyMap(new LinkedHashMap<>(), 10); map.put("foo", "bar"); map.put(null, "null"); assertThat(PyishObjectMapper.getAsPyishString(map)) - .isEqualTo("{'': 'null', 'foo': 'bar'} "); + .isEqualTo("{'foo': 'bar', '': 'null'} "); } @Test public void itSerializesMapEntrySet() { - SizeLimitingPyMap map = new SizeLimitingPyMap(new HashMap<>(), 10); + SizeLimitingPyMap map = new SizeLimitingPyMap(new LinkedHashMap<>(), 10); map.put("foo", "bar"); map.put("bar", ImmutableMap.of("foobar", new ArrayList<>())); String result = PyishObjectMapper.getAsPyishString(map.items()); assertThat(result) - .isEqualTo("[fn:map_entry('bar', {'foobar': []} ), fn:map_entry('foo', 'bar')]"); + .isEqualTo("[fn:map_entry('foo', 'bar'), fn:map_entry('bar', {'foobar': []} )]"); } @Test public void itSerializesMapEntrySetWithLimit() { - SizeLimitingPyMap map = new SizeLimitingPyMap(new HashMap<>(), 10); + SizeLimitingPyMap map = new SizeLimitingPyMap(new LinkedHashMap<>(), 10); map.put("foo", "bar"); map.put("bar", ImmutableMap.of("foobar", new ArrayList<>())); @@ -53,7 +54,7 @@ public void itSerializesMapEntrySetWithLimit() { JinjavaInterpreter.pushCurrent(jinjava.newInterpreter()); String result = PyishObjectMapper.getAsPyishString(map.items()); assertThat(result) - .isEqualTo("[fn:map_entry('bar', {'foobar': []} ), fn:map_entry('foo', 'bar')]"); + .isEqualTo("[fn:map_entry('foo', 'bar'), fn:map_entry('bar', {'foobar': []} )]"); } finally { JinjavaInterpreter.popCurrent(); } @@ -61,11 +62,11 @@ public void itSerializesMapEntrySetWithLimit() { @Test public void itSerializesMapWithNullValues() { - Map map = new SizeLimitingPyMap(new HashMap<>(), 10); + Map map = new SizeLimitingPyMap(new LinkedHashMap<>(), 10); map.put("foo", "bar"); map.put("foobar", null); assertThat(PyishObjectMapper.getAsPyishString(map)) - .isEqualTo("{'foobar': null, 'foo': 'bar'} "); + .isEqualTo("{'foo': 'bar', 'foobar': null} "); } @Test