You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by yo...@apache.org on 2021/04/14 02:26:29 UTC

[pulsar] 05/10: Fix AutoConsumeSchema KeyValue encoding (#10089)

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

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

commit bb410225394a3b0a9a1e87ece8d9845ce8b3a66e
Author: Vincent Royer <vr...@strapdata.com>
AuthorDate: Thu Apr 1 20:38:27 2021 +0200

    Fix AutoConsumeSchema KeyValue encoding (#10089)
    
    ### Motivation
    
    Keep the KeyValueEncodingType when auto-consuming a KeyValue schema.
    
    ### Modifications
    
    see the single commit.
    
    ### Verifying this change
    
    Add a unit test org.apache.pulsar.client.impl.schema.KeyValueSchemaTest.testKeyValueSchemaSeparatedEncoding
    checking that the encoding type is preserved.
    
    (cherry picked from commit 6717974eda5192666c7769efc87c80ecff381ce1)
---
 .../org/apache/pulsar/client/impl/schema/AutoConsumeSchema.java  | 3 ++-
 .../org/apache/pulsar/client/impl/schema/KeyValueSchemaTest.java | 9 +++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/AutoConsumeSchema.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/AutoConsumeSchema.java
index 442ede1..405b9cc 100644
--- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/AutoConsumeSchema.java
+++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/AutoConsumeSchema.java
@@ -209,7 +209,8 @@ public class AutoConsumeSchema implements Schema<GenericRecord> {
                     KeyValueSchemaInfo.decodeKeyValueSchemaInfo(schemaInfo);
                 Schema<?> keySchema = getSchema(kvSchemaInfo.getKey());
                 Schema<?> valueSchema = getSchema(kvSchemaInfo.getValue());
-                return KeyValueSchema.of(keySchema, valueSchema);
+                return KeyValueSchema.of(keySchema, valueSchema,
+                        KeyValueSchemaInfo.decodeKeyValueEncodingType(schemaInfo));
             default:
                 throw new IllegalArgumentException("Retrieve schema instance from schema info for type '"
                     + schemaInfo.getType() + "' is not supported yet");
diff --git a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/schema/KeyValueSchemaTest.java b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/schema/KeyValueSchemaTest.java
index 9c903fa..4692290 100644
--- a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/schema/KeyValueSchemaTest.java
+++ b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/schema/KeyValueSchemaTest.java
@@ -388,4 +388,13 @@ public class KeyValueSchemaTest {
         assertEquals(foo, fooBack);
         assertEquals(bar, barBack);
     }
+
+    @Test
+    public void testKeyValueSchemaSeparatedEncoding() {
+        KeyValueSchema<String, String> keyValueSchema = (KeyValueSchema<String,String>)
+                KeyValueSchema.of(Schema.STRING, Schema.STRING, KeyValueEncodingType.SEPARATED);
+        KeyValueSchema<String, String> keyValueSchema2 = (KeyValueSchema<String,String>)
+                AutoConsumeSchema.getSchema(keyValueSchema.getSchemaInfo());
+        assertEquals(keyValueSchema.getKeyValueEncodingType(), keyValueSchema2.getKeyValueEncodingType());
+    }
 }