Skip to content

Commit 74332fa

Browse files
committed
Sort map items alphabetically before calculating blueId.
1 parent 64053c4 commit 74332fa

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/main/java/blue/language/utils/BlueIdCalculator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ private String calculateMap(Map<String, Object> map) {
5151
return (String) map.get(OBJECT_BLUE_ID);
5252
}
5353

54-
Map<String, Object> hashes = new LinkedHashMap<>();
54+
Map<String, Object> hashes = new TreeMap<>(String::compareTo);
5555
for (Map.Entry<String, Object> entry : map.entrySet()) {
5656
String key = entry.getKey();
5757
if (OBJECT_NAME.equals(key) || OBJECT_VALUE.equals(key) || OBJECT_DESCRIPTION.equals(key)) {

src/test/java/blue/language/utils/BlueIdCalculatorTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,13 @@ public void testSortingOfObjectProperties() {
124124
assertEquals(blueId2, blueId);
125125
}
126126

127+
@Test
128+
public void testLexicographicSorting() {
129+
Map map = JSON_MAPPER.readValue("{\"z\":1,\"aa\":65,\"q\":3,\"12\":3.5,\"a\":55,\"ab\":\"sad\"}", Map.class);
130+
String expectedBlueId = "hash({12={blueId=hash(3.5)}, a={blueId=hash(55)}, aa={blueId=hash(65)}, ab={blueId=hash(sad)}, q={blueId=hash(3)}, z={blueId=hash(1)}})";
131+
assertEquals(expectedBlueId, new BlueIdCalculator(fakeHashValueProvider()).calculate(map));
132+
}
133+
127134
@Test
128135
public void testInteger() {
129136
String yaml = "num: 36";

0 commit comments

Comments
 (0)