瀏覽代碼

Merge pull request #11790 from jbarthelmes/master

Add a null-check for XContentBuilder#field for BigDecimals
Adrien Grand 10 年之前
父節點
當前提交
7cf3096c3c
共有 1 個文件被更改,包括 20 次插入12 次删除
  1. 20 12
      core/src/main/java/org/elasticsearch/common/xcontent/XContentBuilder.java

+ 20 - 12
core/src/main/java/org/elasticsearch/common/xcontent/XContentBuilder.java

@@ -500,28 +500,36 @@ public final class XContentBuilder implements BytesStream, Releasable {
 
     public XContentBuilder field(String name, BigDecimal value, int scale, RoundingMode rounding, boolean toDouble) throws IOException {
         field(name);
-        if (toDouble) {
-            try {
-                generator.writeNumber(value.setScale(scale, rounding).doubleValue());
-            } catch (ArithmeticException e) {
+        if (value == null) {
+            generator.writeNull();
+        } else {
+            if (toDouble) {
+                try {
+                    generator.writeNumber(value.setScale(scale, rounding).doubleValue());
+                } catch (ArithmeticException e) {
+                    generator.writeString(value.toEngineeringString());
+                }
+            } else {
                 generator.writeString(value.toEngineeringString());
             }
-        } else {
-            generator.writeString(value.toEngineeringString());
         }
         return this;
     }
 
     public XContentBuilder field(XContentBuilderString name, BigDecimal value, int scale, RoundingMode rounding, boolean toDouble) throws IOException {
         field(name);
-        if (toDouble) {
-            try {
-                generator.writeNumber(value.setScale(scale, rounding).doubleValue());
-            } catch (ArithmeticException e) {
+        if (value == null) {
+            generator.writeNull();
+        } else {
+            if (toDouble) {
+                try {
+                    generator.writeNumber(value.setScale(scale, rounding).doubleValue());
+                } catch (ArithmeticException e) {
+                    generator.writeString(value.toEngineeringString());
+                }
+            } else {
                 generator.writeString(value.toEngineeringString());
             }
-        } else {
-            generator.writeString(value.toEngineeringString());
         }
         return this;
     }