You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by sa...@apache.org on 2019/05/24 23:06:09 UTC

[pulsar] branch master updated: Fixed the display of schema information (#4318)

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

sanjeevrk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 5d688ee  Fixed the display of schema information (#4318)
5d688ee is described below

commit 5d688eec2596a784254e0580e865fbf287963915
Author: Sanjeev Kulkarni <sa...@gmail.com>
AuthorDate: Fri May 24 16:06:03 2019 -0700

    Fixed the display of schema information (#4318)
    
    * Fixed the display of schema information
    
    * Fixed test
    
    * Took feedback into account
    
    * Use SchemaInfo.getSchemaDefinition to get information about schema
    
    * Reverted the rest api changes
    
    * Fixed integration test
---
 .../pulsar/admin/cli/PulsarAdminToolTest.java      |  1 -
 .../org/apache/pulsar/admin/cli/CmdSchemas.java    | 28 ++++++++++++++++++++--
 .../pulsar/tests/integration/cli/CLITest.java      |  2 +-
 3 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
index 186a038..025a818 100644
--- a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
+++ b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
@@ -44,7 +44,6 @@ import org.apache.pulsar.client.admin.Lookup;
 import org.apache.pulsar.client.admin.Namespaces;
 import org.apache.pulsar.client.admin.NonPersistentTopics;
 import org.apache.pulsar.client.admin.PulsarAdmin;
-import org.apache.pulsar.client.admin.PulsarAdminBuilder;
 import org.apache.pulsar.client.admin.ResourceQuotas;
 import org.apache.pulsar.client.admin.Tenants;
 import org.apache.pulsar.client.admin.Topics;
diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSchemas.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSchemas.java
index 554f290..0ac8e41 100644
--- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSchemas.java
+++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdSchemas.java
@@ -22,12 +22,20 @@ import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.File;
+import java.lang.reflect.Type;
 import java.net.URL;
 import java.net.URLClassLoader;
 
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
 import org.apache.pulsar.admin.cli.utils.SchemaExtractor;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.common.schema.PostSchemaPayload;
+import org.apache.pulsar.common.schema.SchemaInfo;
 
 @Parameters(commandDescription = "Operations about schemas")
 public class CmdSchemas extends CmdBase {
@@ -52,11 +60,27 @@ public class CmdSchemas extends CmdBase {
         @Override
         void run() throws Exception {
             String topic = validateTopicName(params);
+            SchemaInfo schemaInfo;
             if (version == null) {
-                print(admin.schemas().getSchemaInfo(topic));
+                schemaInfo = admin.schemas().getSchemaInfo(topic);
             } else {
-                print(admin.schemas().getSchemaInfo(topic, version));
+                schemaInfo = admin.schemas().getSchemaInfo(topic, version);
             }
+            Gson customGson = new GsonBuilder().registerTypeHierarchyAdapter(byte[].class,
+                    new ByteArrayToStringAdapter(schemaInfo)).create();
+            System.out.println(customGson.toJson(schemaInfo));
+        }
+    }
+
+    // Using Android's base64 libraries. This can be replaced with any base64 library.
+    private class ByteArrayToStringAdapter implements JsonSerializer<byte[]> {
+        private SchemaInfo schemaInfo;
+        public ByteArrayToStringAdapter(SchemaInfo schemaInfo) {
+            this.schemaInfo = schemaInfo;
+        }
+
+        public JsonElement serialize(byte[] src, Type typeOfSrc, JsonSerializationContext context) {
+            return new JsonPrimitive(schemaInfo.getSchemaDefinition());
         }
     }
 
diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/CLITest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/CLITest.java
index 3995ebf..2a400ae 100644
--- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/CLITest.java
+++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/CLITest.java
@@ -159,7 +159,7 @@ public class CLITest extends PulsarTestSuite {
             "schemas",
             "get",
             topicName);
-        assertTrue(result.getStdout().contains("\"type\" : \"STRING\""));
+        assertTrue(result.getStdout().contains("\"type\":\"STRING\""));
 
         // delete the schema
         result = container.execCmd(