diff --git a/docs/changelog/126562.yaml b/docs/changelog/126562.yaml new file mode 100644 index 0000000000000..a02ae0aacd018 --- /dev/null +++ b/docs/changelog/126562.yaml @@ -0,0 +1,6 @@ +pr: 126562 +summary: Add a custom `toString` to `DynamicMap` +area: Infra/Scripting +type: bug +issues: + - 70262 diff --git a/server/src/main/java/org/elasticsearch/script/DynamicMap.java b/server/src/main/java/org/elasticsearch/script/DynamicMap.java index 99c4f3eb099e3..9e4819ff296e4 100644 --- a/server/src/main/java/org/elasticsearch/script/DynamicMap.java +++ b/server/src/main/java/org/elasticsearch/script/DynamicMap.java @@ -98,6 +98,17 @@ public Set> entrySet() { @Override public String toString() { - return delegate.toString(); + StringBuilder sb = new StringBuilder("{"); + int count = 0; + for (Map.Entry entry : entrySet()) { + sb.append(entry.getKey()); + sb.append("="); + sb.append(entry.getValue()); + if (++count < size()) { + sb.append(", "); + } + } + sb.append("}"); + return sb.toString(); } } diff --git a/server/src/test/java/org/elasticsearch/script/ScriptTests.java b/server/src/test/java/org/elasticsearch/script/ScriptTests.java index 5ff91bff68a9b..56ae23ddaca4f 100644 --- a/server/src/test/java/org/elasticsearch/script/ScriptTests.java +++ b/server/src/test/java/org/elasticsearch/script/ScriptTests.java @@ -29,6 +29,8 @@ import java.util.HashMap; import java.util.Map; +import static org.hamcrest.Matchers.both; +import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; public class ScriptTests extends ESTestCase { @@ -192,7 +194,6 @@ public void testDynamicMapToString() { map.put("long", 1L); map.put("string", "value"); DynamicMap dm = new DynamicMap(map, Collections.emptyMap()); - assertTrue(dm.toString().contains("string=value")); - assertTrue(dm.toString().contains("long=1")); + assertThat(dm.toString(), both(containsString("long=1")).and(containsString("string=value"))); } }