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