Преглед на файлове

Add missing boolean array to unknown value writers for xcontent (#71651)

This change adds the ability to call value on an XContentBuilder and consume a boolean[]. This was 
missing from the set of other writers for the unknown value call.
Jack Conradson преди 4 години
родител
ревизия
065d7696c2

+ 1 - 0
libs/x-content/src/main/java/org/elasticsearch/common/xcontent/XContentBuilder.java

@@ -95,6 +95,7 @@ public final class XContentBuilder implements Closeable, Flushable {
     static {
         Map<Class<?>, Writer> writers = new HashMap<>();
         writers.put(Boolean.class, (b, v) -> b.value((Boolean) v));
+        writers.put(boolean[].class, (b, v) -> b.values((boolean[]) v));
         writers.put(Byte.class, (b, v) -> b.value((Byte) v));
         writers.put(byte[].class, (b, v) -> b.value((byte[]) v));
         writers.put(Date.class, XContentBuilder::timeValue);

+ 2 - 0
server/src/test/java/org/elasticsearch/common/xcontent/BaseXContentTestCase.java

@@ -163,6 +163,8 @@ public abstract class BaseXContentTestCase extends ESTestCase {
         assertResult("{'boolean':false}", () -> builder().startObject().field("boolean", Boolean.FALSE).endObject());
         assertResult("{'boolean':[true,false,true]}", () -> builder().startObject().array("boolean", true, false, true).endObject());
         assertResult("{'boolean':[false,true]}", () -> builder().startObject().array("boolean", new boolean[]{false, true}).endObject());
+        assertResult("{'boolean':[false,true]}",
+                () -> builder().startObject().field("boolean").value(new boolean[]{false, true}).endObject());
         assertResult("{'boolean':null}", () -> builder().startObject().array("boolean", (boolean[]) null).endObject());
         assertResult("{'boolean':[]}", () -> builder().startObject().array("boolean", new boolean[]{}).endObject());
         assertResult("{'boolean':null}", () -> builder().startObject().field("boolean").value((Boolean) null).endObject());