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 <[email protected]> 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("^/", ""); + } }
