You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by rs...@apache.org on 2022/11/23 18:37:17 UTC

[avro] branch master updated: AVRO-3676: Produce valid toString() for UUID JSON

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

rskraba 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 bd18dbd28 AVRO-3676: Produce valid toString() for UUID JSON
bd18dbd28 is described below

commit bd18dbd28f66d98a5cdfb0a033457cd8cb2b139a
Author: Anderson de Borba <an...@gmail.com>
AuthorDate: Wed Nov 23 18:37:10 2022 +0000

    AVRO-3676: Produce valid toString() for UUID JSON
---
 .../avro/src/main/java/org/apache/avro/generic/GenericData.java  | 3 ++-
 .../src/test/java/org/apache/avro/generic/TestGenericData.java   | 9 +++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java b/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
index 8f7391f59..d33f8bbf0 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
@@ -33,6 +33,7 @@ import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 import java.util.WeakHashMap;
 
 import org.apache.avro.AvroMissingFieldException;
@@ -704,7 +705,7 @@ public class GenericData {
       ByteBuffer bytes = ((ByteBuffer) datum).duplicate();
       writeEscapedString(StandardCharsets.ISO_8859_1.decode(bytes), buffer);
       buffer.append("\"");
-    } else if (isNanOrInfinity(datum) || isTemporal(datum)) {
+    } else if (isNanOrInfinity(datum) || isTemporal(datum) || datum instanceof UUID) {
       buffer.append("\"");
       buffer.append(datum);
       buffer.append("\"");
diff --git a/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java b/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
index c8690ea92..21492d1b0 100644
--- a/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
+++ b/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
@@ -45,6 +45,8 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
+
 import org.apache.avro.AvroRuntimeException;
 import org.apache.avro.Schema;
 import org.apache.avro.Schema.Field;
@@ -432,6 +434,13 @@ public class TestGenericData {
     assertEquals("\"10:10:10\"", data.toString(LocalTime.parse("10:10:10")));
   }
 
+  @Test
+  public void testToStringConvertsUuidsAsStrings() throws Exception {
+    GenericData data = GenericData.get();
+    assertEquals("\"abf2f1e8-cece-4fdc-290a-babaca09ec74\"",
+        data.toString(UUID.fromString("abf2f1e8-cece-4fdc-290a-babaca09ec74")));
+  }
+
   @Test
   public void testCompare() {
     // Prepare a schema for testing.