[prev in list] [next in list] [prev in thread] [next in thread] 

List:       avro-commits
Subject:    [avro] branch master updated: AVRO-2383: NPE during Schema.applyAliases (#510)
From:       fokko () apache ! org
Date:       2019-04-29 7:20:35
Message-ID: 155652243531.7757.16915150109377271882 () gitbox ! apache ! org
[Download RAW message or body]

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 196777c  AVRO-2383: NPE during Schema.applyAliases (#510)
196777c is described below

commit 196777ccc2e698e9dba153d48a08ef4b68b144a1
Author: Raman Gupta <rocketraman@gmail.com>
AuthorDate: Mon Apr 29 03:20:29 2019 -0400

    AVRO-2383: NPE during Schema.applyAliases (#510)
---
 lang/java/avro/src/main/java/org/apache/avro/Schema.java  |  2 +-
 .../ipc/src/test/java/org/apache/avro/TestSchema.java     | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/lang/java/avro/src/main/java/org/apache/avro/Schema.java \
b/lang/java/avro/src/main/java/org/apache/avro/Schema.java index 29c4a3a..f4dda26 \
                100644
--- a/lang/java/avro/src/main/java/org/apache/avro/Schema.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/Schema.java
@@ -886,7 +886,7 @@ public abstract class Schema extends JsonProperties {
       boolean first = seen.isEmpty();
       try {
         seen.add(here);
-        return fields.equals(((RecordSchema) o).fields);
+        return Objects.equals(fields, that.fields);
       } finally {
         if (first)
           seen.clear();
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/TestSchema.java \
b/lang/java/ipc/src/test/java/org/apache/avro/TestSchema.java index 8f77eb5..cd5413a \
                100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/TestSchema.java
+++ b/lang/java/ipc/src/test/java/org/apache/avro/TestSchema.java
@@ -594,6 +594,21 @@ public class TestSchema {
     assertEquals(s2, s3);
   }
 
+  @Test
+  public void testAliasesSelfReferential() {
+    String t1 = "{\"type\":\"record\",\"name\":\"a\",\"fields\":[{\"name\":\"f\",\"ty \
pe\":{\"type\":\"record\",\"name\":\"C\",\"fields\":[{\"name\":\"c\",\"type\":{\"type\":\"array\",\"items\":[\"null\",\"C\"]}}]}}]}";
 +    String t2 = "{\"type\":\"record\",\"name\":\"x\",\"fields\":[{\"name\":\"f\",\"t \
ype\":{\"type\":\"record\",\"name\":\"C\",\"fields\":[{\"name\":\"d\",\"type\":{\"type \
\":\"array\",\"items\":[\"null\",\"C\"]},\"aliases\":[\"c\"]}]}}],\"aliases\":[\"a\"]}";
 +    Schema s1 = new Schema.Parser().parse(t1);
+    Schema s2 = new Schema.Parser().parse(t2);
+
+    assertEquals(s1.getAliases(), Collections.emptySet());
+    assertEquals(s2.getAliases(), Collections.singleton("a"));
+
+    Schema s3 = Schema.applyAliases(s1, s2);
+    assertNotSame(s2, s3);
+    assertEquals(s2, s3);
+  }
+
   private static void check(File dst, String schemaJson, String defaultJson, Object \
defaultValue) throws Exception {  check(dst, schemaJson, defaultJson, defaultValue, \
true);  }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic