diff --git a/server/src/com/mirth/connect/util/HttpUtil.java b/server/src/com/mirth/connect/util/HttpUtil.java index 1b0b80854..b2ec75437 100644 --- a/server/src/com/mirth/connect/util/HttpUtil.java +++ b/server/src/com/mirth/connect/util/HttpUtil.java @@ -11,7 +11,7 @@ import java.nio.charset.Charset; import java.util.ArrayList; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -104,7 +104,7 @@ public static Map> getTableMap(boolean useVariable, String } public static Map> getTableMap(String mapVariable, MessageMaps messageMaps, ConnectorMessage connectorMessage) { - Map> map = new HashMap>(); + Map> map = new LinkedHashMap>(); try { Map source = (Map) messageMaps.get(mapVariable, connectorMessage); diff --git a/server/test/com/mirth/connect/util/HttpUtilTest.java b/server/test/com/mirth/connect/util/HttpUtilTest.java index f13811902..62912424b 100644 --- a/server/test/com/mirth/connect/util/HttpUtilTest.java +++ b/server/test/com/mirth/connect/util/HttpUtilTest.java @@ -9,10 +9,13 @@ package com.mirth.connect.util; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; import java.security.KeyStore; +import java.util.LinkedHashMap; +import java.util.Map; import java.util.UUID; import javax.net.ssl.SSLContext; @@ -22,6 +25,9 @@ import org.apache.http.ssl.SSLContexts; import org.junit.Test; +import com.mirth.connect.donkey.model.message.ConnectorMessage; +import com.mirth.connect.donkey.util.MessageMaps; + public class HttpUtilTest { @Test @@ -40,4 +46,20 @@ public void testExecuteGetRequest() throws Exception { } catch (Exception e) { } } + + @Test + public void testMapOrderPreserved() throws Exception { + final String MAP_KEY = "MyMap"; + + Map initial = new LinkedHashMap<>(); + initial.put("First", 1); + initial.put("Second", 2); + initial.put("Third", 3); + + ConnectorMessage cm = new ConnectorMessage(); + cm.getSourceMap().put(MAP_KEY, initial); + + Map copied = HttpUtil.getTableMap(MAP_KEY, new MessageMaps(), cm); + assertArrayEquals("Failed to preserve key order", initial.keySet().toArray(), copied.keySet().toArray()); + } }