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

penghui pushed a commit to branch branch-2.7
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-2.7 by this push:
     new 8e55035  add properties default value for SchemaInfoBuilder (#8952)
8e55035 is described below

commit 8e55035f045924fc4bbd0704a3824c024919e6e1
Author: Jianyun Zhao <[email protected]>
AuthorDate: Tue Dec 15 09:05:38 2020 +0800

    add properties default value for SchemaInfoBuilder (#8952)
    
    ### Motivation
    
    When using SchemaInfoBuilder to create a SchemaInfo, not setting properties 
will result in an NPE. properties are optional in SchemaInfo and have default 
values.
    
    ### Modifications
    
    Add default values for properties in SchemaInfoBuilder
    
    (cherry picked from commit cb6617fa02d235f341026adf43fee87627a20c8b)
---
 .../apache/pulsar/common/schema/SchemaInfo.java    |  1 +
 .../pulsar/client/impl/schema/SchemaInfoTest.java  | 42 ++++++++++++++++++++--
 2 files changed, 41 insertions(+), 2 deletions(-)

diff --git 
a/pulsar-client-api/src/main/java/org/apache/pulsar/common/schema/SchemaInfo.java
 
b/pulsar-client-api/src/main/java/org/apache/pulsar/common/schema/SchemaInfo.java
index 44d74e2..64d36a7 100644
--- 
a/pulsar-client-api/src/main/java/org/apache/pulsar/common/schema/SchemaInfo.java
+++ 
b/pulsar-client-api/src/main/java/org/apache/pulsar/common/schema/SchemaInfo.java
@@ -62,6 +62,7 @@ public class SchemaInfo {
     /**
      * Additional properties of the schema definition (implementation defined).
      */
+    @Builder.Default
     private Map<String, String> properties = Collections.emptyMap();
 
     public String getSchemaDefinition() {
diff --git 
a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/schema/SchemaInfoTest.java
 
b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/schema/SchemaInfoTest.java
index cb65e42..5361060 100644
--- 
a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/schema/SchemaInfoTest.java
+++ 
b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/schema/SchemaInfoTest.java
@@ -18,14 +18,18 @@
  */
 package org.apache.pulsar.client.impl.schema;
 
-import static org.testng.Assert.assertEquals;
-
+import com.google.common.collect.Maps;
 import org.apache.pulsar.client.api.Schema;
 import org.apache.pulsar.common.schema.KeyValueEncodingType;
 import org.apache.pulsar.common.schema.SchemaInfo;
+import org.apache.pulsar.common.schema.SchemaType;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
+import java.util.Map;
+
+import static org.testng.Assert.assertEquals;
+
 /**
  * Unit test {@link org.apache.pulsar.common.schema.SchemaInfo}.
  */
@@ -280,4 +284,38 @@ public class SchemaInfoTest {
         assertEquals(si.toString(), jsonifiedStr);
     }
 
+    public static class SchemaInfoBuilderTest {
+
+        @Test
+        public void testUnsetProperties() {
+            final SchemaInfo schemaInfo = SchemaInfo.builder()
+                    .type(SchemaType.STRING)
+                    .schema(new byte[0])
+                    .name("string")
+                    .build();
+
+            assertEquals(schemaInfo.getSchema(), new byte[0]);
+            assertEquals(schemaInfo.getType(), SchemaType.STRING);
+            assertEquals(schemaInfo.getName(), "string");
+            assertEquals(schemaInfo.getProperties(), Maps.newHashMap());
+        }
+
+        @Test
+        public void testSetProperties() {
+            final Map<String, String> map = Maps.newHashMap();
+            map.put("test", "value");
+            final SchemaInfo schemaInfo = SchemaInfo.builder()
+                    .type(SchemaType.STRING)
+                    .schema(new byte[0])
+                    .name("string")
+                    .properties(map)
+                    .build();
+
+            assertEquals(schemaInfo.getSchema(), new byte[0]);
+            assertEquals(schemaInfo.getType(), SchemaType.STRING);
+            assertEquals(schemaInfo.getName(), "string");
+            assertEquals(schemaInfo.getProperties(), Maps.newHashMap(map));
+        }
+
+    }
 }

Reply via email to