Skip to content

Commit abfeb65

Browse files
committed
Preserve HTTP parameter order
Signed-off-by: Richard Ogin <rogin@users.noreply.github.com>
1 parent 7178846 commit abfeb65

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

server/src/com/mirth/connect/util/HttpUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
import java.nio.charset.Charset;
1313
import java.util.ArrayList;
14-
import java.util.HashMap;
14+
import java.util.LinkedHashMap;
1515
import java.util.List;
1616
import java.util.Map;
1717
import java.util.Map.Entry;
@@ -104,7 +104,7 @@ public static Map<String, List<String>> getTableMap(boolean useVariable, String
104104
}
105105

106106
public static Map<String, List<String>> getTableMap(String mapVariable, MessageMaps messageMaps, ConnectorMessage connectorMessage) {
107-
Map<String, List<String>> map = new HashMap<String, List<String>>();
107+
Map<String, List<String>> map = new LinkedHashMap<String, List<String>>();
108108

109109
try {
110110
Map<?, ?> source = (Map<?, ?>) messageMaps.get(mapVariable, connectorMessage);

server/test/com/mirth/connect/util/HttpUtilTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@
99

1010
package com.mirth.connect.util;
1111

12+
import static org.junit.Assert.assertArrayEquals;
1213
import static org.junit.Assert.assertFalse;
1314
import static org.junit.Assert.fail;
1415

1516
import java.security.KeyStore;
17+
import java.util.LinkedHashMap;
18+
import java.util.Map;
1619
import java.util.UUID;
1720

1821
import javax.net.ssl.SSLContext;
@@ -22,6 +25,9 @@
2225
import org.apache.http.ssl.SSLContexts;
2326
import org.junit.Test;
2427

28+
import com.mirth.connect.donkey.model.message.ConnectorMessage;
29+
import com.mirth.connect.donkey.util.MessageMaps;
30+
2531
public class HttpUtilTest {
2632

2733
@Test
@@ -40,4 +46,20 @@ public void testExecuteGetRequest() throws Exception {
4046
} catch (Exception e) {
4147
}
4248
}
49+
50+
@Test
51+
public void testMapOrderPreserved() throws Exception {
52+
final String MAP_KEY = "MyMap";
53+
54+
Map<String, Object> initial = new LinkedHashMap<>();
55+
initial.put("First", 1);
56+
initial.put("Second", 2);
57+
initial.put("Third", 3);
58+
59+
ConnectorMessage cm = new ConnectorMessage();
60+
cm.getSourceMap().put(MAP_KEY, initial);
61+
62+
Map<String, ?> copied = HttpUtil.getTableMap(MAP_KEY, new MessageMaps(), cm);
63+
assertArrayEquals("Failed to preserve key order", initial.keySet().toArray(), copied.keySet().toArray());
64+
}
4365
}

0 commit comments

Comments
 (0)