You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by du...@apache.org on 2022/07/29 11:49:36 UTC

[rocketmq-schema-registry] 22/23: adapt for new changes

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

duhengforever pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/rocketmq-schema-registry.git

commit 71612308d15b93764d7c58f51f1f0aae7a2e32be
Author: hankunming <ha...@xiaomi.com>
AuthorDate: Fri Jul 29 19:37:49 2022 +0800

    adapt for new changes
---
 .../client/NormalSchemaRegistryClient.java         | 51 ++++++++++++++----
 .../registry/client/SchemaRegistryClient.java      | 31 +++++------
 .../schema/registry/client/rest/RestService.java   | 63 ++++++++++++++++------
 .../schema/registry/client/util/HttpUtil.java      |  4 ++
 4 files changed, 107 insertions(+), 42 deletions(-)

diff --git a/client/src/main/java/org/apache/rocketmq/schema/registry/client/NormalSchemaRegistryClient.java b/client/src/main/java/org/apache/rocketmq/schema/registry/client/NormalSchemaRegistryClient.java
index 522b6a2..21cf9d2 100644
--- a/client/src/main/java/org/apache/rocketmq/schema/registry/client/NormalSchemaRegistryClient.java
+++ b/client/src/main/java/org/apache/rocketmq/schema/registry/client/NormalSchemaRegistryClient.java
@@ -17,14 +17,14 @@
 
 package org.apache.rocketmq.schema.registry.client;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.rocketmq.schema.registry.client.exceptions.RestClientException;
-import org.apache.rocketmq.schema.registry.client.rest.JacksonMapper;
 import org.apache.rocketmq.schema.registry.client.rest.RestService;
 import org.apache.rocketmq.schema.registry.common.dto.SchemaDto;
 import org.apache.rocketmq.schema.registry.common.dto.SchemaRecordDto;
 
 import java.io.IOException;
+import java.util.List;
+import java.util.Map;
 
 public class NormalSchemaRegistryClient implements SchemaRegistryClient{
 
@@ -34,6 +34,11 @@ public class NormalSchemaRegistryClient implements SchemaRegistryClient{
         this.restService = restService;
     }
 
+    @Override
+    public SchemaDto registerSchema(String subject, String schemaName, SchemaDto schemaDto) throws RestClientException, IOException {
+        return restService.registerSchema(subject, schemaName, schemaDto);
+    }
+
     @Override
     public SchemaDto registerSchema(String clusterName, String tenant, String subjectName,
                                     String schemaName, SchemaDto schemaDto) throws IOException, RestClientException {
@@ -41,8 +46,18 @@ public class NormalSchemaRegistryClient implements SchemaRegistryClient{
     }
 
     @Override
-    public SchemaDto deleteSchema(String tenant, String schemaName) throws IOException, RestClientException {
-        return restService.deleteSchema(tenant, schemaName);
+    public SchemaDto deleteSchema(String cluster, String tenant, String subject) throws IOException, RestClientException {
+        return restService.deleteSchema(cluster, tenant, subject);
+    }
+
+    @Override
+    public SchemaDto deleteSchema(String cluster, String tenant, String subject, long version) throws IOException, RestClientException {
+        return restService.deleteSchema(cluster, tenant, subject, version);
+    }
+
+    @Override
+    public SchemaDto updateSchema(String subject, String schemaName, SchemaDto schemaDto) throws RestClientException, IOException {
+        return restService.updateSchema(subject, schemaName, schemaDto);
     }
 
     @Override
@@ -52,14 +67,32 @@ public class NormalSchemaRegistryClient implements SchemaRegistryClient{
     }
 
     @Override
-    public SchemaDto getSchema(String cluster, String tenant,
-                               String subject, String schemaName) throws IOException, RestClientException {
-        return restService.getSchema(cluster, tenant, subject, schemaName);
+    public SchemaRecordDto getSchemaBySubject(String subject) throws RestClientException, IOException {
+        return restService.getSchemaBySubject(subject);
+    }
+
+    public SchemaRecordDto getSchemaBySubject(String cluster, String tenant, String subject) throws RestClientException, IOException {
+        return restService.getSchemaBySubject(cluster, tenant, subject);
+    }
+
+    @Override
+    public SchemaRecordDto getSchemaBySubject(String cluster, String tenant, String subject, long version) throws IOException, RestClientException {
+        return restService.getSchemaBySubject(cluster, tenant, subject, version);
+    }
+
+    @Override
+    public List<SchemaRecordDto> getSchemaListBySubject(String cluster, String tenant, String subject) throws RestClientException, IOException {
+        return restService.getSchemaListBySubject(cluster, tenant, subject);
+    }
+
+    @Override
+    public SchemaRecordDto getSchemaById(long schemaId) {
+        throw new UnsupportedOperationException();
     }
 
     @Override
-    public SchemaRecordDto getSchemaBySubject(String cluster, String subject) throws IOException, RestClientException {
-        return restService.getSchemaBySubject(cluster, subject);
+    public SchemaRecordDto getSchemaBySubjectAndId(String subject, long schemaId) {
+        throw new UnsupportedOperationException();
     }
 
 }
diff --git a/client/src/main/java/org/apache/rocketmq/schema/registry/client/SchemaRegistryClient.java b/client/src/main/java/org/apache/rocketmq/schema/registry/client/SchemaRegistryClient.java
index 343f0d8..851fcf9 100644
--- a/client/src/main/java/org/apache/rocketmq/schema/registry/client/SchemaRegistryClient.java
+++ b/client/src/main/java/org/apache/rocketmq/schema/registry/client/SchemaRegistryClient.java
@@ -22,38 +22,33 @@ import org.apache.rocketmq.schema.registry.common.dto.SchemaDto;
 import org.apache.rocketmq.schema.registry.common.dto.SchemaRecordDto;
 
 import java.io.IOException;
+import java.util.List;
 
 public interface SchemaRegistryClient {
 
-    default SchemaDto registerSchema(String clusterName, String subjectName, String schemaName, SchemaDto schemaDto) throws IOException, RestClientException {
-        return registerSchema(clusterName, "default", subjectName, schemaName, schemaDto);
-    }
+    SchemaDto registerSchema(String subject, String schemaName, SchemaDto schemaDto) throws RestClientException, IOException;
 
     SchemaDto registerSchema(String clusterName, String tenant, String subjectName, String schemaName, SchemaDto schemaDto) throws IOException, RestClientException;
 
 
-    SchemaDto deleteSchema(String tenant, String schemaName) throws IOException, RestClientException;
+    SchemaDto deleteSchema(String cluster, String tenant, String subject) throws IOException, RestClientException;
 
-    default SchemaDto updateSchema(String cluster, String subjectName, String schemaName, SchemaDto schemaDto) throws IOException, RestClientException {
-        return updateSchema(cluster, "default", subjectName, schemaName, schemaDto);
-    }
+    SchemaDto deleteSchema(String cluster, String tenant, String subject, long version) throws IOException, RestClientException;
+
+    SchemaDto updateSchema(String subject, String schemaName, SchemaDto schemaDto) throws RestClientException, IOException;
 
     SchemaDto updateSchema(String cluster, String tenant, String subjectName, String schemaName, SchemaDto schemaDto) throws IOException, RestClientException;
 
-    SchemaDto getSchema(String cluster, String tenant, String subject, String schemaName) throws IOException, RestClientException;
+    SchemaRecordDto getSchemaBySubject(String subject) throws RestClientException, IOException;
+
+    SchemaRecordDto getSchemaBySubject(String cluster, String tenant, String subject) throws IOException, RestClientException;
 
-    default SchemaRecordDto getSchemaBySubject(String subject) throws IOException, RestClientException {
-        return getSchemaBySubject("default", subject);
-    }
+    SchemaRecordDto getSchemaBySubject(String cluster, String tenant, String subject, long version) throws IOException, RestClientException;
 
-    SchemaRecordDto getSchemaBySubject(String cluster, String subject) throws IOException, RestClientException;
+    List<SchemaRecordDto> getSchemaListBySubject(String cluster, String tenant, String subject) throws RestClientException, IOException;
 
-    default SchemaRecordDto getSchemaById(long schemaId) {
-        throw new UnsupportedOperationException();
-    }
+    SchemaRecordDto getSchemaById(long schemaId);
 
-    default SchemaRecordDto getSchemaBySubjectAndId(String subject, long schemaId) {
-        throw new UnsupportedOperationException();
-    }
+    SchemaRecordDto getSchemaBySubjectAndId(String subject, long schemaId);
 
 }
diff --git a/client/src/main/java/org/apache/rocketmq/schema/registry/client/rest/RestService.java b/client/src/main/java/org/apache/rocketmq/schema/registry/client/rest/RestService.java
index 42d45ba..f45b3c7 100644
--- a/client/src/main/java/org/apache/rocketmq/schema/registry/client/rest/RestService.java
+++ b/client/src/main/java/org/apache/rocketmq/schema/registry/client/rest/RestService.java
@@ -23,11 +23,10 @@ import org.apache.rocketmq.schema.registry.client.exceptions.RestClientException
 import org.apache.rocketmq.schema.registry.client.util.HttpUtil;
 import org.apache.rocketmq.schema.registry.common.dto.SchemaDto;
 import org.apache.rocketmq.schema.registry.common.dto.SchemaRecordDto;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 public class RestService {
@@ -37,6 +36,9 @@ public class RestService {
     private static final TypeReference<SchemaRecordDto> SCHEMA_RECORD_DTO_TYPE_REFERENCE =
             new TypeReference<SchemaRecordDto>() {
             };
+    private static final TypeReference<List<SchemaRecordDto>> SCHEMA_RECORD_DTO_TYPE_LIST_REFERENCE =
+            new TypeReference<List<SchemaRecordDto>>() {
+            };
 
     public static ObjectMapper jsonParser = JacksonMapper.INSTANCE;
 
@@ -59,38 +61,69 @@ public class RestService {
         this.httpHeaders = httpHeaders;
     }
 
+    public SchemaDto registerSchema(String subject, String schemaName, SchemaDto schemaDto) throws IOException, RestClientException {
+        UrlBuilder urlBuilder = UrlBuilder.fromPath("/subject/{subject-name}/schema/{schema-name}");
+        String path = HttpUtil.buildRequestUrl(baseUri, urlBuilder.build(subject, schemaName).toString());
+        String data = jsonParser.writeValueAsString(schemaDto);
+        return HttpUtil.sendHttpRequest(path, HTTP_POST, data, httpHeaders, SCHEMA_DTO_TYPE_REFERENCE);
+    }
+
     public SchemaDto registerSchema(String clusterName, String tenant, String subjectName,
                                     String schemaName, SchemaDto schemaDto) throws IOException, RestClientException {
         UrlBuilder urlBuilder = UrlBuilder.fromPath("/cluster/{cluster-name}/tenant/{tenant-name}/subject/{subject-name}/schema/{schema-name}");
-        String path = baseUri + urlBuilder.build(clusterName, tenant, subjectName, schemaName).toString();
+        String path = HttpUtil.buildRequestUrl(baseUri, urlBuilder.build(clusterName, tenant, subjectName, schemaName).toString());
         String data = jsonParser.writeValueAsString(schemaDto);
         return HttpUtil.sendHttpRequest(path, HTTP_POST, data, httpHeaders, SCHEMA_DTO_TYPE_REFERENCE);
     }
 
-    public SchemaDto deleteSchema(String tenant, String schemaName) throws IOException, RestClientException {
-        UrlBuilder urlBuilder = UrlBuilder.fromPath("/tenant/{tenant-name}/schema/{schema-name}");
-        String path = baseUri + urlBuilder.build(tenant, schemaName).toString();
+    public SchemaDto deleteSchema(String cluster, String tenant, String subject) throws RestClientException, IOException {
+        UrlBuilder urlBuilder = UrlBuilder.fromPath("/cluster/{cluster-name}/tenant/{tenant-name}/subject/{subject-name}/schema");
+        String path = HttpUtil.buildRequestUrl(baseUri, urlBuilder.build(cluster, tenant, subject).toString());
         return HttpUtil.sendHttpRequest(path, HTTP_DELETE, null, httpHeaders, SCHEMA_DTO_TYPE_REFERENCE);
     }
 
+    public SchemaDto deleteSchema(String cluster, String tenant, String subject, long version) throws IOException, RestClientException {
+        UrlBuilder urlBuilder = UrlBuilder.fromPath("/cluster/{cluster-name}/tenant/{tenant-name}/subject/{subject-name}/schema/versions/{version}");
+        String path = HttpUtil.buildRequestUrl(baseUri, urlBuilder.build(cluster, tenant, subject, version).toString());
+        return HttpUtil.sendHttpRequest(path, HTTP_DELETE, null, httpHeaders, SCHEMA_DTO_TYPE_REFERENCE);
+    }
+
+    public SchemaDto updateSchema(String subject, String schemaName, SchemaDto schemaDto) throws IOException, RestClientException {
+        UrlBuilder urlBuilder = UrlBuilder.fromPath("/subject/{subject-name}/schema/{schema-name}");
+        String path = HttpUtil.buildRequestUrl(baseUri, urlBuilder.build(subject, schemaName).toString());
+        String data = jsonParser.writeValueAsString(schemaDto);
+        return HttpUtil.sendHttpRequest(path, HTTP_PUT, data, httpHeaders, SCHEMA_DTO_TYPE_REFERENCE);
+    }
+
     public SchemaDto updateSchema(String cluster, String tenant, String subject,
                                   String schemaName, SchemaDto schemaDto) throws IOException, RestClientException {
         UrlBuilder urlBuilder = UrlBuilder.fromPath("/cluster/{cluster-name}/tenant/{tenant-name}/subject/{subject-name}/schema/{schema-name}");
-        String path = baseUri + urlBuilder.build(cluster, tenant, subject, schemaName).toString();
+        String path = HttpUtil.buildRequestUrl(baseUri, urlBuilder.build(cluster, tenant, subject, schemaName).toString());
         String data = jsonParser.writeValueAsString(schemaDto);
         return HttpUtil.sendHttpRequest(path, HTTP_PUT, data, httpHeaders, SCHEMA_DTO_TYPE_REFERENCE);
     }
 
-    public SchemaDto getSchema(String cluster, String tenant,
-                               String subject, String schemaName) throws IOException, RestClientException {
-        UrlBuilder urlBuilder = UrlBuilder.fromPath("/cluster/{cluster-name}/tenant/{tenant-name}/subject/{subject-name}/schema/{schema-name}");
-        String path = baseUri + urlBuilder.build(cluster, tenant, subject, schemaName).toString();
-        return HttpUtil.sendHttpRequest(path, HTTP_GET , null, httpHeaders, SCHEMA_DTO_TYPE_REFERENCE);
+    public SchemaRecordDto getSchemaBySubject(String subject) throws RestClientException, IOException {
+        UrlBuilder urlBuilder = UrlBuilder.fromPath("/subject/{subject-name}/schema");
+        String path = HttpUtil.buildRequestUrl(baseUri, urlBuilder.build(subject).toString());
+        return HttpUtil.sendHttpRequest(path, HTTP_GET, null, httpHeaders, SCHEMA_RECORD_DTO_TYPE_REFERENCE);
     }
 
-    public SchemaRecordDto getSchemaBySubject(String cluster, String subject) throws IOException, RestClientException {
-        UrlBuilder urlBuilder = UrlBuilder.fromPath("/cluster/{cluster-name}/subject/{subject-name}");
-        String path = baseUri + urlBuilder.build(cluster, subject).toString();
+    public SchemaRecordDto getSchemaBySubject(String cluster, String tenant, String subject) throws IOException, RestClientException {
+        UrlBuilder urlBuilder = UrlBuilder.fromPath("/cluster/{cluster-name}/tenant/{tenant-name}/subject/{subject-name}/schema");
+        String path = HttpUtil.buildRequestUrl(baseUri, urlBuilder.build(cluster, tenant, subject).toString());
         return HttpUtil.sendHttpRequest(path, HTTP_GET, null, httpHeaders, SCHEMA_RECORD_DTO_TYPE_REFERENCE);
     }
+
+    public SchemaRecordDto getSchemaBySubject(String cluster, String tenant, String subject, long version) throws IOException, RestClientException {
+        UrlBuilder urlBuilder = UrlBuilder.fromPath("/cluster/{cluster-name}/tenant/{tenant-name}/subject/{subject-name}/schema/versions/{version}");
+        String path = HttpUtil.buildRequestUrl(baseUri, urlBuilder.build(cluster, tenant, subject, version).toString());
+        return HttpUtil.sendHttpRequest(path, HTTP_GET, null, httpHeaders, SCHEMA_RECORD_DTO_TYPE_REFERENCE);
+    }
+
+    public List<SchemaRecordDto> getSchemaListBySubject(String cluster, String tenant, String subject) throws RestClientException, IOException {
+        UrlBuilder urlBuilder = UrlBuilder.fromPath("/cluster/{cluster-name}/tenant/{tenant-name}/subject/{subject-name}/schema/versions");
+        String path = HttpUtil.buildRequestUrl(baseUri, urlBuilder.build(cluster, tenant, subject).toString());
+        return HttpUtil.sendHttpRequest(path, HTTP_GET, null, httpHeaders, SCHEMA_RECORD_DTO_TYPE_LIST_REFERENCE);
+    }
 }
diff --git a/client/src/main/java/org/apache/rocketmq/schema/registry/client/util/HttpUtil.java b/client/src/main/java/org/apache/rocketmq/schema/registry/client/util/HttpUtil.java
index 9ae4495..54afc0b 100644
--- a/client/src/main/java/org/apache/rocketmq/schema/registry/client/util/HttpUtil.java
+++ b/client/src/main/java/org/apache/rocketmq/schema/registry/client/util/HttpUtil.java
@@ -94,4 +94,8 @@ public class HttpUtil {
 
         return connection;
     }
+
+    public static String buildRequestUrl(String baseUrl, String path) {
+        return baseUrl.replaceFirst("/$", "") + "/" + path.replaceFirst("^/", "");
+    }
 }