You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by fo...@apache.org on 2020/05/03 07:12:16 UTC

[avro] branch master updated: AVRO-2819: Add type BigInteger/BigDecimal for JacksonUtils (#859)

This is an automated email from the ASF dual-hosted git repository.

fokko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to refs/heads/master by this push:
     new 07fd336  AVRO-2819: Add type BigInteger/BigDecimal for JacksonUtils (#859)
07fd336 is described below

commit 07fd336c6e5cc052931405b7257d9d06b5337d7c
Author: Zezeng Wang <51...@qq.com>
AuthorDate: Sun May 3 15:12:03 2020 +0800

    AVRO-2819: Add type BigInteger/BigDecimal for JacksonUtils (#859)
---
 .../src/main/java/org/apache/avro/util/internal/JacksonUtils.java   | 6 ++++++
 .../test/java/org/apache/avro/util/internal/TestJacksonUtils.java   | 4 ++++
 2 files changed, 10 insertions(+)

diff --git a/lang/java/avro/src/main/java/org/apache/avro/util/internal/JacksonUtils.java b/lang/java/avro/src/main/java/org/apache/avro/util/internal/JacksonUtils.java
index c0ab60c..11f7fd1 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/util/internal/JacksonUtils.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/util/internal/JacksonUtils.java
@@ -18,6 +18,8 @@
 package org.apache.avro.util.internal;
 
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -86,6 +88,10 @@ public class JacksonUtils {
       generator.writeNumber((Integer) datum);
     } else if (datum instanceof Boolean) { // boolean
       generator.writeBoolean((Boolean) datum);
+    } else if (datum instanceof BigInteger) {
+      generator.writeNumber((BigInteger) datum);
+    } else if (datum instanceof BigDecimal) {
+      generator.writeNumber((BigDecimal) datum);
     } else {
       throw new AvroRuntimeException("Unknown datum class: " + datum.getClass());
     }
diff --git a/lang/java/avro/src/test/java/org/apache/avro/util/internal/TestJacksonUtils.java b/lang/java/avro/src/test/java/org/apache/avro/util/internal/TestJacksonUtils.java
index ebd1f37..bf989f6 100644
--- a/lang/java/avro/src/test/java/org/apache/avro/util/internal/TestJacksonUtils.java
+++ b/lang/java/avro/src/test/java/org/apache/avro/util/internal/TestJacksonUtils.java
@@ -22,6 +22,8 @@ import static org.apache.avro.util.internal.JacksonUtils.toObject;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.util.Collections;
 
 import com.fasterxml.jackson.databind.node.*;
@@ -48,6 +50,8 @@ public class TestJacksonUtils {
     assertEquals(TextNode.valueOf("\u0001\u0002"), toJsonNode(new byte[] { 1, 2 }));
     assertEquals(TextNode.valueOf("a"), toJsonNode("a"));
     assertEquals(TextNode.valueOf("UP"), toJsonNode(Direction.UP));
+    assertEquals(BigIntegerNode.valueOf(BigInteger.ONE), toJsonNode(BigInteger.ONE));
+    assertEquals(DecimalNode.valueOf(BigDecimal.ONE), toJsonNode(BigDecimal.ONE));
 
     ArrayNode an = JsonNodeFactory.instance.arrayNode();
     an.add(1);