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(