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);