[2/2] avro git commit: AVRO-1966: Java: Fix NPE When copying builder with nullable record.
AVRO-1966: Java: Fix NPE When copying builder with nullable record. Project: http://git-wip-us.apache.org/repos/asf/avro/repo Commit: http://git-wip-us.apache.org/repos/asf/avro/commit/8bed58c6 Tree: http://git-wip-us.apache.org/repos/asf/avro/tree/8bed58c6 Diff: http://git-wip-us.apache.org/repos/asf/avro/diff/8bed58c6 Branch: refs/heads/branch-1.8 Commit: 8bed58c6ca57f43c20d2c0eae30e0d4e82d5e6fc Parents: d35724e Author: Niels Basjes Authored: Wed Nov 30 21:50:13 2016 +0100 Committer: Niels Basjes Committed: Fri Dec 22 23:29:48 2017 +0100 -- CHANGES.txt | 2 + .../specific/templates/java/classic/record.vm | 2 +- .../avro/specific/TestSpecificBuilderTree.java | 29 ++ .../avro/examples/baseball/Player.java | 8 ++-- .../tools/src/test/compiler/output/Player.java | 8 ++-- share/test/schemas/nestedNullable.avdl | 41 6 files changed, 81 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/avro/blob/8bed58c6/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index d542d30..ff4e51f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -28,6 +28,8 @@ Trunk (not yet released) AVRO-1485: Specification says Record field type can be record name but implementation allows any named type. (Nandor Kollar via gabor) +AVRO-1966: Java: Fix NPE When copying builder with nullable record. (Niels Basjes) + Avro 1.8.2 (10 April 2017) INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/avro/blob/8bed58c6/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm -- diff --git a/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm b/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm index 94090d8..50c9ecf 100644 --- a/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm +++ b/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm @@ -274,7 +274,7 @@ public class ${this.mangle($schema.getName())}#if ($schema.isError()) extends or #foreach ($field in $schema.getFields()) if (isValidValue(fields()[$field.pos()], other.${this.mangle($field.name(), $schema.isError())})) { this.${this.mangle($field.name(), $schema.isError())} = data().deepCopy(fields()[$field.pos()].schema(), other.${this.mangle($field.name(), $schema.isError())}); -fieldSetFlags()[$field.pos()] = true; +fieldSetFlags()[$field.pos()] = other.fieldSetFlags()[$field.pos()]; } #if (${this.hasBuilder($field.schema())}) if (other.${this.generateHasBuilderMethod($schema, $field)}()) { http://git-wip-us.apache.org/repos/asf/avro/blob/8bed58c6/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificBuilderTree.java -- diff --git a/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificBuilderTree.java b/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificBuilderTree.java index 24afd52..f9856e9 100644 --- a/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificBuilderTree.java +++ b/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificBuilderTree.java @@ -19,11 +19,15 @@ package org.apache.avro.specific; import org.apache.avro.AvroMissingFieldException; import org.apache.avro.test.http.*; +import org.apache.avro.test.nullable.Nullable; +import org.apache.avro.test.nullable.RecordWithNullables; import org.junit.Test; import java.util.ArrayList; +import static org.apache.avro.test.nullable.Nullable.*; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; public class TestSpecificBuilderTree { @@ -260,4 +264,29 @@ public class TestSpecificBuilderTree { assertEquals("/index.html", request.getHttpRequest().getURI().getPath()); } + @Test + public void copyBuilderWithNullables() { +RecordWithNullables.Builder builder = RecordWithNullables.newBuilder(); + +assertFalse(builder.hasNullableRecordBuilder()); +assertFalse(builder.hasNullableRecord()); +assertFalse(builder.hasNullableString()); +assertFalse(builder.hasNullableLong ()); +assertFalse(builder.hasNullableInt ()); +assertFalse(builder.hasNullableMap ()); +assertFalse(builder.hasNullableArray ()); + +RecordWithNullables.Builder builderCopy = RecordWithNullables.newBuilder(builder); + +assertFalse(builderCopy.hasNullableRecordBuilder()); +
avro git commit: AVRO-1966: Java: Fix NPE When copying builder with nullable record.
Repository: avro Updated Branches: refs/heads/master cae491a62 -> a53a4fd10 AVRO-1966: Java: Fix NPE When copying builder with nullable record. Project: http://git-wip-us.apache.org/repos/asf/avro/repo Commit: http://git-wip-us.apache.org/repos/asf/avro/commit/a53a4fd1 Tree: http://git-wip-us.apache.org/repos/asf/avro/tree/a53a4fd1 Diff: http://git-wip-us.apache.org/repos/asf/avro/diff/a53a4fd1 Branch: refs/heads/master Commit: a53a4fd10072471aa7c8170499a10792e61e0d95 Parents: cae491a Author: Niels Basjes Authored: Wed Nov 30 21:50:13 2016 +0100 Committer: Niels Basjes Committed: Wed Nov 30 21:50:13 2016 +0100 -- CHANGES.txt | 2 + .../specific/templates/java/classic/record.vm | 2 +- .../avro/specific/TestSpecificBuilderTree.java | 29 ++ .../avro/examples/baseball/Player.java | 8 ++-- .../tools/src/test/compiler/output/Player.java | 8 ++-- share/test/schemas/nestedNullable.avdl | 41 6 files changed, 81 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/avro/blob/a53a4fd1/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 3553e2a..fa11bb8 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -104,6 +104,8 @@ Trunk (not yet released) AVRO-1951: Python: Fix ipc_test.py with a valid DNS name. (blue) +AVRO-1966: Java: Fix NPE When copying builder with nullable record. (Niels Basjes) + Avro 1.8.1 (14 May 2016) INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/avro/blob/a53a4fd1/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm -- diff --git a/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm b/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm index 85c5e9d..c333dd0 100644 --- a/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm +++ b/lang/java/compiler/src/main/velocity/org/apache/avro/compiler/specific/templates/java/classic/record.vm @@ -264,7 +264,7 @@ public class ${this.mangle($schema.getName())}#if ($schema.isError()) extends or #foreach ($field in $schema.getFields()) if (isValidValue(fields()[$field.pos()], other.${this.mangle($field.name(), $schema.isError())})) { this.${this.mangle($field.name(), $schema.isError())} = data().deepCopy(fields()[$field.pos()].schema(), other.${this.mangle($field.name(), $schema.isError())}); -fieldSetFlags()[$field.pos()] = true; +fieldSetFlags()[$field.pos()] = other.fieldSetFlags()[$field.pos()]; } #if (${this.hasBuilder($field.schema())}) if (other.${this.generateHasBuilderMethod($schema, $field)}()) { http://git-wip-us.apache.org/repos/asf/avro/blob/a53a4fd1/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificBuilderTree.java -- diff --git a/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificBuilderTree.java b/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificBuilderTree.java index a0ad619..87b9e6f 100644 --- a/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificBuilderTree.java +++ b/lang/java/ipc/src/test/java/org/apache/avro/specific/TestSpecificBuilderTree.java @@ -18,11 +18,15 @@ package org.apache.avro.specific; import org.apache.avro.test.http.*; +import org.apache.avro.test.nullable.Nullable; +import org.apache.avro.test.nullable.RecordWithNullables; import org.junit.Test; import java.util.ArrayList; +import static org.apache.avro.test.nullable.Nullable.*; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.fail; public class TestSpecificBuilderTree { @@ -254,4 +258,29 @@ public class TestSpecificBuilderTree { assertEquals("/index.html", request.getHttpRequest().getURI().getPath()); } + @Test + public void copyBuilderWithNullables() { +RecordWithNullables.Builder builder = RecordWithNullables.newBuilder(); + +assertFalse(builder.hasNullableRecordBuilder()); +assertFalse(builder.hasNullableRecord()); +assertFalse(builder.hasNullableString()); +assertFalse(builder.hasNullableLong ()); +assertFalse(builder.hasNullableInt ()); +assertFalse(builder.hasNullableMap ()); +assertFalse(builder.hasNullableArray ()); + +RecordWithNullables.Builder builderCopy = RecordWithNullables.newBuilder(builder); + +assertFalse(builderCopy.hasNullableRecordBuilder()); +assertFalse(builderCopy.hasNullableRecord())