From 88cc72acf9a4902f47a942852bfdeb2484bea9e4 Mon Sep 17 00:00:00 2001 From: Srikanta Date: Fri, 31 Jul 2020 01:46:01 -0700 Subject: [PATCH 1/4] Update schema registry client APIs --- .../SchemaRegistryAvroSerializerBuilder.java | 4 +- .../AbstractSchemaRegistrySerializer.java | 8 +- .../CachedSchemaRegistryAsyncClient.java | 83 ++++++++++++++----- .../client/CachedSchemaRegistryClient.java | 34 +++++--- .../CachedSchemaRegistryClientBuilder.java | 13 ++- .../AbstractDataSerializerTest.java | 5 +- .../schemaregistry/TestDummySerializer.java | 18 ++-- .../CachedSchemaRegistryAsyncClientTest.java | 18 ++-- 8 files changed, 119 insertions(+), 64 deletions(-) diff --git a/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializerBuilder.java b/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializerBuilder.java index 83136b90893b..6dabfdc81f89 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializerBuilder.java +++ b/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializerBuilder.java @@ -134,13 +134,13 @@ public SchemaRegistryAvroAsyncSerializer buildAsyncClient() { .credential(credential); if (maxSchemaMapSize != null) { - builder.maxSchemaMapSize(maxSchemaMapSize); + builder.maxCacheSize(maxSchemaMapSize); } AvroCodec codec = new AvroCodec(this.avroSpecificReader); CachedSchemaRegistryAsyncClient client = builder - .addSchemaParser(codec) + .addCodec(codec) .buildAsyncClient(); return new SchemaRegistryAvroAsyncSerializer(client, codec, this.schemaGroup, diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/AbstractSchemaRegistrySerializer.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/AbstractSchemaRegistrySerializer.java index dcf9abf2d930..cbb93713d3ab 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/AbstractSchemaRegistrySerializer.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/AbstractSchemaRegistrySerializer.java @@ -165,9 +165,9 @@ protected Mono deserializeImpl(InputStream s) throws SerializationExcept String schemaId = getSchemaIdFromPayload(buffer); System.out.println(schemaId); - SchemaRegistryObject block = this.schemaRegistryClient.getSchemaById(schemaId).block(); + SchemaRegistryObject block = this.schemaRegistryClient.getSchema(schemaId).block(); System.out.println(block); - return this.schemaRegistryClient.getSchemaById(schemaId) + return this.schemaRegistryClient.getSchema(schemaId) .onErrorMap(IOException.class, e -> logger.logExceptionAsError(new SerializationException(e.getMessage(), e))) .handle((registryObject, sink) -> { @@ -244,7 +244,7 @@ private String getSchemaIdFromPayload(ByteBuffer buffer) throws SerializationExc throw logger.logExceptionAsError(new SerializationException("Payload too short, no readable guid.", e)); } - return new String(schemaGuidByteArray, schemaRegistryClient.getEncoding()); + return new String(schemaGuidByteArray, StandardCharsets.UTF_8); } /** @@ -275,7 +275,7 @@ protected void addDeserializerCodec(Codec codec) { private Mono maybeRegisterSchema( String schemaGroup, String schemaName, String schemaString, String schemaType) { if (this.autoRegisterSchemas) { - return this.schemaRegistryClient.register(schemaGroup, schemaName, schemaString, schemaType) + return this.schemaRegistryClient.registerSchema(schemaGroup, schemaName, schemaString, schemaType) .map(SchemaRegistryObject::getSchemaId); } else { return this.schemaRegistryClient.getSchemaId( diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClient.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClient.java index a244f03a896c..df86089a74d3 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClient.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClient.java @@ -5,6 +5,9 @@ import com.azure.core.annotation.ServiceClient; import com.azure.core.exception.HttpResponseException; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.SimpleResponse; +import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import com.azure.data.schemaregistry.client.implementation.AzureSchemaRegistryRestService; import com.azure.data.schemaregistry.client.implementation.models.SchemaId; @@ -22,7 +25,8 @@ * HTTP-based client that interacts with Azure Schema Registry service to store and retrieve schemas on demand. *

* Utilizes in-memory {@link Map} caching to minimize network I/O. Max size can be configured when instantiating by - * using {@link CachedSchemaRegistryClientBuilder#maxSchemaMapSize}, otherwise {@code 1000} will be used as the default. + * using {@link CachedSchemaRegistryClientBuilder#maxCacheSize(int)}, otherwise {@code 1000} will be used as the + * default. *

* Two maps are maintained. *

    @@ -37,9 +41,10 @@ builder = CachedSchemaRegistryClientBuilder.class, serviceInterfaces = AzureSchemaRegistryRestService.class) public final class CachedSchemaRegistryAsyncClient { + private final ClientLogger logger = new ClientLogger(CachedSchemaRegistryAsyncClient.class); - public static final Charset SCHEMA_REGISTRY_SERVICE_ENCODING = StandardCharsets.UTF_8; + static final Charset SCHEMA_REGISTRY_SERVICE_ENCODING = StandardCharsets.UTF_8; static final int MAX_SCHEMA_MAP_SIZE_DEFAULT = 1000; static final int MAX_SCHEMA_MAP_SIZE_MINIMUM = 10; @@ -73,26 +78,30 @@ public final class CachedSchemaRegistryAsyncClient { this.maxSchemaMapSize = MAX_SCHEMA_MAP_SIZE_DEFAULT; } - /** - * @return Azure Schema Registry service string encoding - */ - public Charset getEncoding() { - return CachedSchemaRegistryAsyncClient.SCHEMA_REGISTRY_SERVICE_ENCODING; - } - - public Mono register( + public Mono registerSchema( String schemaGroup, String schemaName, String schemaString, String schemaType) { if (schemaStringCache.containsKey(getSchemaStringCacheKey(schemaGroup, schemaName, schemaString))) { logger.verbose( - "Cache hit schema string. Group: '{}', name: '{}', schema type: '{}', payload: '{}'", - schemaGroup, schemaName, schemaType, schemaString); + "Cache hit schema string. Group: '{}', name: '{}', schema type: '{}', payload: '{}'", + schemaGroup, schemaName, schemaType, schemaString); return Mono.fromCallable( () -> schemaStringCache.get(getSchemaStringCacheKey(schemaGroup, schemaName, schemaString))); } + return registerSchemaWithResponse(schemaGroup, schemaName, schemaString, schemaType) + .map(response -> response.getValue()); + } + + public Mono> registerSchemaWithResponse(String schemaGroup, String schemaName, + String schemaString, String schemaType) { + return registerSchemaWithResponse(schemaGroup, schemaName, schemaString, schemaType, Context.NONE); + } + + Mono> registerSchemaWithResponse(String schemaGroup, String schemaName, + String schemaString, String schemaType, Context context) { logger.verbose( "Registering schema. Group: '{}', name: '{}', serialization type: '{}', payload: '{}'", - schemaGroup, schemaName, schemaType, schemaString); + schemaGroup, schemaName, schemaType, schemaString); return this.restService.createSchemaWithResponseAsync(schemaGroup, schemaName, schemaType, schemaString) .onErrorMap(HttpResponseException.class, e -> logger.logExceptionAsError( @@ -118,20 +127,30 @@ public Mono register( getParseFunc(schemaType)); resetIfNeeded(); - schemaStringCache.putIfAbsent(getSchemaStringCacheKey(schemaGroup, schemaName, schemaString), registered); + schemaStringCache + .putIfAbsent(getSchemaStringCacheKey(schemaGroup, schemaName, schemaString), registered); logger.verbose("Cached schema string. Group: '{}', name: '{}'", schemaGroup, schemaName); - sink.next(registered); + SimpleResponse schemaRegistryObjectSimpleResponse = new SimpleResponse<>( + response.getRequest(), response.getStatusCode(), + response.getHeaders(), registered); + sink.next(schemaRegistryObjectSimpleResponse); }); } - public Mono getSchemaById(String schemaId) { - Objects.requireNonNull(schemaId, "'schemaId' should not be null"); - + public Mono getSchema(String schemaId) { if (idCache.containsKey(schemaId)) { logger.verbose("Cache hit for schema id '{}'", schemaId); return Mono.fromCallable(() -> idCache.get(schemaId)); } + return getSchemaWithResponse(schemaId).map(Response::getValue); + } + + public Mono> getSchemaWithResponse(String schemaId) { + return getSchemaWithResponse(schemaId, Context.NONE); + } + Mono> getSchemaWithResponse(String schemaId, Context context) { + Objects.requireNonNull(schemaId, "'schemaId' should not be null"); return this.restService.getSchemaByIdWithResponseAsync(schemaId) .onErrorMap(HttpResponseException.class, e -> logger.logExceptionAsError( @@ -159,16 +178,33 @@ public Mono getSchemaById(String schemaId) { resetIfNeeded(); idCache.putIfAbsent(schemaId, schemaObject); logger.verbose("Cached schema object. Path: '{}'", schemaId); - sink.next(schemaObject); + SimpleResponse schemaRegistryObjectSimpleResponse = new SimpleResponse<>( + response.getRequest(), response.getStatusCode(), + response.getHeaders(), schemaObject); + sink.next(schemaRegistryObjectSimpleResponse); }); } + public Mono getSchemaId(String schemaGroup, String schemaName, String schemaString, String schemaType) { + if (schemaStringCache.containsKey(getSchemaStringCacheKey(schemaGroup, schemaName, schemaString))) { logger.verbose("Cache hit schema string. Group: '{}', name: '{}'", schemaGroup, schemaName); return Mono.fromCallable(() -> schemaStringCache.get(schemaString).getSchemaId()); } + return getSchemaIdWithResponse(schemaGroup, schemaName, schemaString, schemaType) + .map(response -> response.getValue()); + } + + public Mono> getSchemaIdWithResponse(String schemaGroup, String schemaName, String schemaString, + String schemaType) { + return getSchemaIdWithResponse(schemaGroup, schemaName, schemaString, schemaType, Context.NONE); + } + + Mono> getSchemaIdWithResponse(String schemaGroup, String schemaName, String schemaString, + String schemaType, Context context) { + return this.restService.getIdBySchemaContentWithResponseAsync(schemaGroup, schemaName, schemaType, schemaString) .onErrorMap(HttpResponseException.class, e -> logger.logExceptionAsError(new SchemaRegistryClientException(String.format( @@ -198,20 +234,25 @@ public Mono getSchemaId(String schemaGroup, String schemaName, String sc schemaString.getBytes(SCHEMA_REGISTRY_SERVICE_ENCODING), getParseFunc(schemaType))); logger.verbose("Cached schema string. Group: '{}', name: '{}'", schemaGroup, schemaName); - sink.next(schemaId.getId()); + + SimpleResponse schemaIdResponse = new SimpleResponse<>( + response.getRequest(), response.getStatusCode(), + response.getHeaders(), schemaId.getId()); + sink.next(schemaIdResponse); }); } /** * Explicit call to clear all caches. */ - public void reset() { + public void clearCache() { idCache.clear(); schemaStringCache.clear(); typeParserMap.clear(); } // TODO: max age for schema maps? or will schemas always be immutable? + /** * Checks if caches should be reinitialized to satisfy initial configuration */ diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClient.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClient.java index bc075b74ded6..3e4a3aa111ff 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClient.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClient.java @@ -1,11 +1,9 @@ package com.azure.data.schemaregistry.client; import com.azure.core.annotation.ServiceClient; -import com.azure.data.schemaregistry.Codec; +import com.azure.core.http.rest.Response; +import com.azure.core.util.Context; import com.azure.data.schemaregistry.client.implementation.AzureSchemaRegistryRestService; -import reactor.core.publisher.Mono; - -import java.nio.charset.Charset; @ServiceClient( builder = CachedSchemaRegistryClientBuilder.class, @@ -17,19 +15,33 @@ public final class CachedSchemaRegistryClient { this.asyncClient = asyncClient; } - public Charset getEncoding() { - return this.asyncClient.getEncoding(); + public SchemaRegistryObject registerSchema(String schemaGroup, String schemaName, String schemaString, + String schemaType) { + return registerSchemaWithResponse(schemaGroup, schemaName, schemaString, schemaType, Context.NONE).getValue(); + } + + public Response registerSchemaWithResponse(String schemaGroup, String schemaName, + String schemaString, String schemaType, Context context) { + return this.asyncClient.registerSchemaWithResponse(schemaGroup, schemaName, schemaString, schemaType, + context).block(); } - public SchemaRegistryObject register(String schemaGroup, String schemaName, String schemaString, String schemaType) { - return this.asyncClient.register(schemaGroup, schemaName, schemaString, schemaType).block(); + public SchemaRegistryObject getSchema(String schemaId) { + return getSchemaWithResponse(schemaId, Context.NONE).getValue(); } - public SchemaRegistryObject getSchemaById(String schemaId) { - return this.asyncClient.getSchemaById(schemaId).block(); + public Response getSchemaWithResponse(String schemaId, Context context) { + return this.asyncClient.getSchemaWithResponse(schemaId).block(); } public String getSchemaId(String schemaGroup, String schemaName, String schemaString, String schemaType) { - return this.asyncClient.getSchemaId(schemaGroup, schemaName, schemaString, schemaType).block(); + return getSchemaIdWithResponse(schemaGroup, schemaName, schemaString, schemaType, Context.NONE).getValue(); } + + public Response getSchemaIdWithResponse(String schemaGroup, String schemaName, String schemaString, + String schemaType, Context context) { + return this.asyncClient.getSchemaIdWithResponse(schemaGroup, schemaName, schemaString, schemaType, context) + .block(); + } + } diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClientBuilder.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClientBuilder.java index f9cc105ff3ea..36cec8ce65d1 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClientBuilder.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClientBuilder.java @@ -26,7 +26,6 @@ import com.azure.data.schemaregistry.Codec; import com.azure.data.schemaregistry.client.implementation.AzureSchemaRegistryRestService; import com.azure.data.schemaregistry.client.implementation.AzureSchemaRegistryRestServiceClientBuilder; - import java.net.MalformedURLException; import java.net.URL; import java.time.temporal.ChronoUnit; @@ -115,18 +114,18 @@ public CachedSchemaRegistryClientBuilder endpoint(String schemaRegistryUrl) { /** * Sets schema cache size limit. If limit is exceeded on any cache, all caches are recycled. * - * @param maxSchemaMapSize max size for internal schema caches in {@link CachedSchemaRegistryAsyncClient} + * @param maxCacheSize max size for internal schema caches in {@link CachedSchemaRegistryAsyncClient} * @return The updated {@link CachedSchemaRegistryClientBuilder} object. - * @throws IllegalArgumentException on invalid maxSchemaMapSize value + * @throws IllegalArgumentException on invalid maxCacheSize value */ - public CachedSchemaRegistryClientBuilder maxSchemaMapSize(int maxSchemaMapSize) { - if (maxSchemaMapSize < CachedSchemaRegistryAsyncClient.MAX_SCHEMA_MAP_SIZE_MINIMUM) { + public CachedSchemaRegistryClientBuilder maxCacheSize(int maxCacheSize) { + if (maxCacheSize < CachedSchemaRegistryAsyncClient.MAX_SCHEMA_MAP_SIZE_MINIMUM) { throw logger.logExceptionAsError(new IllegalArgumentException( String.format("Schema map size must be greater than %s entries", CachedSchemaRegistryAsyncClient.MAX_SCHEMA_MAP_SIZE_MINIMUM))); } - this.maxSchemaMapSize = maxSchemaMapSize; + this.maxSchemaMapSize = maxCacheSize; return this; } @@ -223,7 +222,7 @@ public CachedSchemaRegistryClientBuilder addPolicy(HttpPipelinePolicy policy) { * @param codec Codec class implementation * @return The updated {@link CachedSchemaRegistryClientBuilder} object. */ - public CachedSchemaRegistryClientBuilder addSchemaParser(Codec codec) { + public CachedSchemaRegistryClientBuilder addCodec(Codec codec) { Objects.requireNonNull(codec, "'codec' cannot be null."); if (CoreUtils.isNullOrEmpty(codec.getSchemaType())) { throw logger.logExceptionAsError( diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/AbstractDataSerializerTest.java b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/AbstractDataSerializerTest.java index 6ba39ea638dc..d68bfc3ced33 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/AbstractDataSerializerTest.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/AbstractDataSerializerTest.java @@ -130,15 +130,14 @@ public void testAddDeserializerCodec() throws IOException, SchemaRegistryClientE assertTrue(registered.deserialize() != null); CachedSchemaRegistryAsyncClient mockClient = getMockClient(); - Mockito.when(mockClient.getSchemaById(anyString())) + Mockito.when(mockClient.getSchema(anyString())) .thenReturn(Mono.just(registered)); - Mockito.when(mockClient.getEncoding()).thenReturn(StandardCharsets.UTF_8); // constructor loads deserializer codec TestDummySerializer serializer = new TestDummySerializer(mockClient, true, true); assertEquals(MOCK_GUID, - serializer.schemaRegistryClient.getSchemaById(MOCK_GUID).block().getSchemaId()); + serializer.schemaRegistryClient.getSchema(MOCK_GUID).block().getSchemaId()); serializer.deserializeImpl(new ByteArrayInputStream(getPayload())) .subscribe(unused -> { diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/TestDummySerializer.java b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/TestDummySerializer.java index 94d45bb54da9..762cc6e859d7 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/TestDummySerializer.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/TestDummySerializer.java @@ -4,21 +4,25 @@ package com.azure.data.schemaregistry; import com.azure.data.schemaregistry.client.CachedSchemaRegistryAsyncClient; +import java.util.HashMap; +import java.util.Map; public class TestDummySerializer extends AbstractSchemaRegistrySerializer { TestDummySerializer( CachedSchemaRegistryAsyncClient mockClient, boolean byteEncoder, boolean autoRegisterSchemas) { - super(mockClient); - // allows simulating improperly written serializer constructor that does not initialize byte encoder - if (byteEncoder) { - setSerializerCodec(new SampleCodec()); - } - - this.addDeserializerCodec(new SampleCodec()); + super(mockClient, new SampleCodec(), getDeserializerCodec()); + // allows simulating improperly written serializer constructor that does not initialize byte encoder this.autoRegisterSchemas = autoRegisterSchemas; } + + private static Map getDeserializerCodec() { + HashMap codecMap = new HashMap<>(); + SampleCodec codec = new SampleCodec(); + codecMap.put(codec.getSchemaType(), codec); + return codecMap; + } } diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClientTest.java b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClientTest.java index c2b4792b5a00..e89cdee32366 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClientTest.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClientTest.java @@ -68,10 +68,10 @@ public void testRegisterThenSchemaCacheHit() throws Exception { assertEquals( MOCK_ID, - client.register(MOCK_GROUP, MOCK_SCHEMA_NAME, MOCK_AVRO_SCHEMA, MOCK_SERIALIZATION).block().getSchemaId()); + client.registerSchema(MOCK_GROUP, MOCK_SCHEMA_NAME, MOCK_AVRO_SCHEMA, MOCK_SERIALIZATION).block().getSchemaId()); assertEquals( MOCK_ID, - client.register(MOCK_GROUP, MOCK_SCHEMA_NAME, MOCK_AVRO_SCHEMA, MOCK_SERIALIZATION).block().getSchemaId()); + client.registerSchema(MOCK_GROUP, MOCK_SCHEMA_NAME, MOCK_AVRO_SCHEMA, MOCK_SERIALIZATION).block().getSchemaId()); verify(restService, times(1)) .createSchemaWithResponseAsync(MOCK_GROUP, MOCK_SCHEMA_NAME, MOCK_SERIALIZATION, MOCK_AVRO_SCHEMA); @@ -113,8 +113,8 @@ public void testGetSchemaThenGuidCacheHit() throws Exception { MOCK_AVRO_SCHEMA, mockHeaders))); - SchemaRegistryObject first = client.getSchemaById(mockId.toString()).block(); - SchemaRegistryObject second = client.getSchemaById(mockId.toString()).block(); + SchemaRegistryObject first = client.getSchema(mockId.toString()).block(); + SchemaRegistryObject second = client.getSchema(mockId.toString()).block(); assertTrue(first.equals(second)); assertEquals(mockId.toString(), first.getSchemaId()); @@ -137,9 +137,9 @@ public void testClientReset() throws Exception { assertEquals( MOCK_ID, - client.register(MOCK_GROUP, MOCK_SCHEMA_NAME, MOCK_AVRO_SCHEMA, MOCK_SERIALIZATION).block().getSchemaId()); + client.registerSchema(MOCK_GROUP, MOCK_SCHEMA_NAME, MOCK_AVRO_SCHEMA, MOCK_SERIALIZATION).block().getSchemaId()); - client.reset(); + client.clearCache(); assertEquals(0, guidCache.size()); assertEquals(0, schemaStringCache.size()); @@ -149,7 +149,7 @@ public void testClientReset() throws Exception { assertEquals( MOCK_ID, - client.register(MOCK_GROUP, MOCK_SCHEMA_NAME, MOCK_AVRO_SCHEMA, MOCK_SERIALIZATION).block().getSchemaId()); + client.registerSchema(MOCK_GROUP, MOCK_SCHEMA_NAME, MOCK_AVRO_SCHEMA, MOCK_SERIALIZATION).block().getSchemaId()); verify(restService, times(2)) .createSchemaWithResponseAsync(MOCK_GROUP, MOCK_SCHEMA_NAME, MOCK_SERIALIZATION, MOCK_AVRO_SCHEMA); @@ -168,7 +168,7 @@ public void testBadRegisterRequestThenThrows() { null, null))); try { - client.register( + client.registerSchema( "doesn't matter", "doesn't matter", "doesn't matter", @@ -223,7 +223,7 @@ public void testGetSchemaByIdNotFoundThenThrows() { null))); try { - client.getSchemaById(mockId).block(); + client.getSchema(mockId).block(); fail("Should have thrown on 404 status code"); } catch (SchemaRegistryClientException e) { assert true; From 90b23b0110ffc397fa67ca62dc1e5bb15d90a747 Mon Sep 17 00:00:00 2001 From: Srikanta Date: Fri, 31 Jul 2020 03:08:10 -0700 Subject: [PATCH 2/4] Update package structure for schema registry --- .../checkstyle/checkstyle-suppressions.xml | 2 +- .../data/schemaregistry/avro/AvroCodec.java | 13 +++++++---- .../SchemaRegistryAvroAsyncSerializer.java | 4 ++-- .../avro/SchemaRegistryAvroSerializer.java | 2 +- .../SchemaRegistryAvroSerializerBuilder.java | 4 ++-- .../CachedSchemaRegistryAsyncClient.java | 23 ++++++++++++++++--- .../CachedSchemaRegistryClient.java | 13 +++++++++-- .../CachedSchemaRegistryClientBuilder.java | 7 +++--- .../com/azure/data/schemaregistry/Codec.java | 8 ++++--- .../SchemaRegistrySerializer.java | 16 ++++++------- .../schemaregistry/client/package-info.java | 7 ------ .../AzureSchemaRegistryRestService.java | 22 +++++++++--------- ...chemaRegistryRestServiceClientBuilder.java | 2 +- .../models/CreateGroupHeaders.java | 2 +- .../models/CreateGroupResponse.java | 2 +- .../models/CreateSchemaHeaders.java | 2 +- .../models/CreateSchemaResponse.java | 2 +- .../models/GetIdBySchemaContentHeaders.java | 2 +- .../models/GetIdBySchemaContentResponse.java | 2 +- .../models/GetLatestSchemaHeaders.java | 2 +- .../models/GetLatestSchemaResponse.java | 2 +- .../models/GetSchemaByIdHeaders.java | 2 +- .../models/GetSchemaByIdResponse.java | 2 +- .../models/GetSchemaVersionHeaders.java | 2 +- .../models/GetSchemaVersionResponse.java | 2 +- .../models/GetSchemaVersionsHeaders.java | 2 +- .../models/GetSchemaVersionsResponse.java | 2 +- .../models/GetSchemasByGroupHeaders.java | 2 +- .../models/GetSchemasByGroupResponse.java | 2 +- .../implementation/models/SchemaGroup.java | 2 +- .../implementation/models/SchemaId.java | 2 +- .../implementation/models/package-info.java | 2 +- .../implementation/package-info.java | 2 +- .../SchemaRegistryClientException.java | 2 +- .../SchemaRegistryObject.java | 19 +++++++++++++-- .../{ => models}/SerializationException.java | 2 +- .../schemaregistry/models/package-info.java | 7 ++++++ .../data/schemaregistry/package-info.java | 3 +++ .../src/main/module-info.java | 2 +- .../CachedSchemaRegistryAsyncClientTest.java | 14 +++++++---- .../data/schemaregistry/SampleCodec.java | 12 +++++++--- .../SchemaRegistrySerializerTest.java | 16 ++++++++----- .../schemaregistry/TestDummySerializer.java | 2 -- 43 files changed, 153 insertions(+), 89 deletions(-) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/CachedSchemaRegistryAsyncClient.java (93%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/CachedSchemaRegistryClient.java (77%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/CachedSchemaRegistryClientBuilder.java (97%) delete mode 100644 sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/package-info.java rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/AzureSchemaRegistryRestService.java (98%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/AzureSchemaRegistryRestServiceClientBuilder.java (97%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/CreateGroupHeaders.java (93%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/CreateGroupResponse.java (93%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/CreateSchemaHeaders.java (98%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/CreateSchemaResponse.java (94%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetIdBySchemaContentHeaders.java (98%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetIdBySchemaContentResponse.java (94%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetLatestSchemaHeaders.java (98%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetLatestSchemaResponse.java (94%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetSchemaByIdHeaders.java (98%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetSchemaByIdResponse.java (94%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetSchemaVersionHeaders.java (98%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetSchemaVersionResponse.java (94%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetSchemaVersionsHeaders.java (94%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetSchemaVersionsResponse.java (94%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetSchemasByGroupHeaders.java (94%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/GetSchemasByGroupResponse.java (94%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/SchemaGroup.java (98%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/SchemaId.java (93%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/models/package-info.java (55%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => }/implementation/package-info.java (56%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => models}/SchemaRegistryClientException.java (93%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{client => models}/SchemaRegistryObject.java (83%) rename sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/{ => models}/SerializationException.java (94%) create mode 100644 sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/package-info.java rename sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/{client => }/CachedSchemaRegistryAsyncClientTest.java (92%) diff --git a/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml b/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml index c2c99513d90a..b572d64f95b8 100755 --- a/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml +++ b/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml @@ -408,7 +408,7 @@ - + diff --git a/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/AvroCodec.java b/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/AvroCodec.java index ae022820c587..7ef823a93061 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/AvroCodec.java +++ b/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/AvroCodec.java @@ -5,7 +5,7 @@ import com.azure.core.util.logging.ClientLogger; import com.azure.data.schemaregistry.Codec; -import com.azure.data.schemaregistry.SerializationException; +import com.azure.data.schemaregistry.models.SerializationException; import org.apache.avro.Schema; import org.apache.avro.generic.GenericDatumReader; import org.apache.avro.generic.GenericDatumWriter; @@ -79,6 +79,11 @@ public String getSchemaName(Object object) { return AvroSchemaUtils.getSchema(object).getFullName(); } + @Override + public String getSchemaGroup() { + return "$Default"; + } + /** * Returns ByteArrayOutputStream containing Avro encoding of object parameter * @param object Object to be encoded into byte stream @@ -86,7 +91,7 @@ public String getSchemaName(Object object) { * @throws SerializationException wraps runtime exceptions */ @Override - public ByteArrayOutputStream encode(Object object) { + public byte[] encode(Object object) { Schema schema = AvroSchemaUtils.getSchema(object); try { @@ -104,7 +109,7 @@ public ByteArrayOutputStream encode(Object object) { writer.write(object, encoder); encoder.flush(); } - return out; + return out.toByteArray(); } catch (IOException | RuntimeException e) { // Avro serialization can throw AvroRuntimeException, NullPointerException, ClassCastException, etc throw logger.logExceptionAsError( @@ -119,7 +124,7 @@ public ByteArrayOutputStream encode(Object object) { * @return deserialized object * @throws SerializationException upon deserialization failure */ - public Object decodeBytes(byte[] b, Object object) { + public Object decode(byte[] b, Object object) { Objects.requireNonNull(object, "Schema must not be null."); if (!(object instanceof Schema)) { diff --git a/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroAsyncSerializer.java b/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroAsyncSerializer.java index a875e7a9161c..ad2356ed07a1 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroAsyncSerializer.java +++ b/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroAsyncSerializer.java @@ -6,8 +6,8 @@ import com.azure.core.experimental.serializer.ObjectSerializer; import com.azure.core.util.logging.ClientLogger; import com.azure.data.schemaregistry.SchemaRegistrySerializer; -import com.azure.data.schemaregistry.SerializationException; -import com.azure.data.schemaregistry.client.CachedSchemaRegistryAsyncClient; +import com.azure.data.schemaregistry.models.SerializationException; +import com.azure.data.schemaregistry.CachedSchemaRegistryAsyncClient; import reactor.core.publisher.Mono; import java.io.InputStream; import java.io.OutputStream; diff --git a/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializer.java b/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializer.java index fbc89c7134e8..595833250d9c 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializer.java +++ b/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializer.java @@ -4,7 +4,7 @@ package com.azure.data.schemaregistry.avro; import com.azure.data.schemaregistry.SchemaRegistrySerializer; -import com.azure.data.schemaregistry.SerializationException; +import com.azure.data.schemaregistry.models.SerializationException; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializerBuilder.java b/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializerBuilder.java index 5c6c2da73a65..ab9ded5e224d 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializerBuilder.java +++ b/sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializerBuilder.java @@ -4,8 +4,8 @@ package com.azure.data.schemaregistry.avro; import com.azure.core.credential.TokenCredential; -import com.azure.data.schemaregistry.client.CachedSchemaRegistryAsyncClient; -import com.azure.data.schemaregistry.client.CachedSchemaRegistryClientBuilder; +import com.azure.data.schemaregistry.CachedSchemaRegistryAsyncClient; +import com.azure.data.schemaregistry.CachedSchemaRegistryClientBuilder; import java.util.Objects; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClient.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryAsyncClient.java similarity index 93% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClient.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryAsyncClient.java index df86089a74d3..94e9b1f95aaf 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClient.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryAsyncClient.java @@ -1,16 +1,20 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client; +package com.azure.data.schemaregistry; +import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; +import com.azure.core.annotation.ServiceMethod; import com.azure.core.exception.HttpResponseException; import com.azure.core.http.rest.Response; import com.azure.core.http.rest.SimpleResponse; import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; -import com.azure.data.schemaregistry.client.implementation.AzureSchemaRegistryRestService; -import com.azure.data.schemaregistry.client.implementation.models.SchemaId; +import com.azure.data.schemaregistry.implementation.AzureSchemaRegistryRestService; +import com.azure.data.schemaregistry.implementation.models.SchemaId; +import com.azure.data.schemaregistry.models.SchemaRegistryClientException; +import com.azure.data.schemaregistry.models.SchemaRegistryObject; import reactor.core.publisher.Mono; import java.nio.charset.Charset; @@ -78,8 +82,10 @@ public final class CachedSchemaRegistryAsyncClient { this.maxSchemaMapSize = MAX_SCHEMA_MAP_SIZE_DEFAULT; } + @ServiceMethod(returns = ReturnType.SINGLE) public Mono registerSchema( String schemaGroup, String schemaName, String schemaString, String schemaType) { + if (schemaStringCache.containsKey(getSchemaStringCacheKey(schemaGroup, schemaName, schemaString))) { logger.verbose( "Cache hit schema string. Group: '{}', name: '{}', schema type: '{}', payload: '{}'", @@ -92,6 +98,7 @@ public Mono registerSchema( .map(response -> response.getValue()); } + @ServiceMethod(returns = ReturnType.SINGLE) public Mono> registerSchemaWithResponse(String schemaGroup, String schemaName, String schemaString, String schemaType) { return registerSchemaWithResponse(schemaGroup, schemaName, schemaString, schemaType, Context.NONE); @@ -123,6 +130,8 @@ Mono> registerSchemaWithResponse(String schemaGro SchemaRegistryObject registered = new SchemaRegistryObject(schemaId.getId(), schemaType, + schemaName, + schemaGroup, schemaString.getBytes(SCHEMA_REGISTRY_SERVICE_ENCODING), getParseFunc(schemaType)); @@ -137,6 +146,7 @@ Mono> registerSchemaWithResponse(String schemaGro }); } + @ServiceMethod(returns = ReturnType.SINGLE) public Mono getSchema(String schemaId) { if (idCache.containsKey(schemaId)) { logger.verbose("Cache hit for schema id '{}'", schemaId); @@ -145,6 +155,7 @@ public Mono getSchema(String schemaId) { return getSchemaWithResponse(schemaId).map(Response::getValue); } + @ServiceMethod(returns = ReturnType.SINGLE) public Mono> getSchemaWithResponse(String schemaId) { return getSchemaWithResponse(schemaId, Context.NONE); } @@ -172,6 +183,8 @@ Mono> getSchemaWithResponse(String schemaId, Cont SchemaRegistryObject schemaObject = new SchemaRegistryObject(schemaId, schemaType, + null, + null, response.getValue().getBytes(SCHEMA_REGISTRY_SERVICE_ENCODING), getParseFunc(schemaType)); @@ -186,6 +199,7 @@ Mono> getSchemaWithResponse(String schemaId, Cont } + @ServiceMethod(returns = ReturnType.SINGLE) public Mono getSchemaId(String schemaGroup, String schemaName, String schemaString, String schemaType) { if (schemaStringCache.containsKey(getSchemaStringCacheKey(schemaGroup, schemaName, schemaString))) { @@ -197,6 +211,7 @@ public Mono getSchemaId(String schemaGroup, String schemaName, String sc .map(response -> response.getValue()); } + @ServiceMethod(returns = ReturnType.SINGLE) public Mono> getSchemaIdWithResponse(String schemaGroup, String schemaName, String schemaString, String schemaType) { return getSchemaIdWithResponse(schemaGroup, schemaName, schemaString, schemaType, Context.NONE); @@ -231,6 +246,8 @@ Mono> getSchemaIdWithResponse(String schemaGroup, String schema new SchemaRegistryObject( schemaId.getId(), schemaType, + schemaName, + schemaGroup, schemaString.getBytes(SCHEMA_REGISTRY_SERVICE_ENCODING), getParseFunc(schemaType))); logger.verbose("Cached schema string. Group: '{}', name: '{}'", schemaGroup, schemaName); diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClient.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryClient.java similarity index 77% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClient.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryClient.java index 3e4a3aa111ff..900503c6d78d 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClient.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryClient.java @@ -1,9 +1,12 @@ -package com.azure.data.schemaregistry.client; +package com.azure.data.schemaregistry; +import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; +import com.azure.core.annotation.ServiceMethod; import com.azure.core.http.rest.Response; import com.azure.core.util.Context; -import com.azure.data.schemaregistry.client.implementation.AzureSchemaRegistryRestService; +import com.azure.data.schemaregistry.implementation.AzureSchemaRegistryRestService; +import com.azure.data.schemaregistry.models.SchemaRegistryObject; @ServiceClient( builder = CachedSchemaRegistryClientBuilder.class, @@ -15,29 +18,35 @@ public final class CachedSchemaRegistryClient { this.asyncClient = asyncClient; } + @ServiceMethod(returns = ReturnType.SINGLE) public SchemaRegistryObject registerSchema(String schemaGroup, String schemaName, String schemaString, String schemaType) { return registerSchemaWithResponse(schemaGroup, schemaName, schemaString, schemaType, Context.NONE).getValue(); } + @ServiceMethod(returns = ReturnType.SINGLE) public Response registerSchemaWithResponse(String schemaGroup, String schemaName, String schemaString, String schemaType, Context context) { return this.asyncClient.registerSchemaWithResponse(schemaGroup, schemaName, schemaString, schemaType, context).block(); } + @ServiceMethod(returns = ReturnType.SINGLE) public SchemaRegistryObject getSchema(String schemaId) { return getSchemaWithResponse(schemaId, Context.NONE).getValue(); } + @ServiceMethod(returns = ReturnType.SINGLE) public Response getSchemaWithResponse(String schemaId, Context context) { return this.asyncClient.getSchemaWithResponse(schemaId).block(); } + @ServiceMethod(returns = ReturnType.SINGLE) public String getSchemaId(String schemaGroup, String schemaName, String schemaString, String schemaType) { return getSchemaIdWithResponse(schemaGroup, schemaName, schemaString, schemaType, Context.NONE).getValue(); } + @ServiceMethod(returns = ReturnType.SINGLE) public Response getSchemaIdWithResponse(String schemaGroup, String schemaName, String schemaString, String schemaType, Context context) { return this.asyncClient.getSchemaIdWithResponse(schemaGroup, schemaName, schemaString, schemaType, context) diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClientBuilder.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryClientBuilder.java similarity index 97% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClientBuilder.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryClientBuilder.java index 36cec8ce65d1..e4b14e27595d 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryClientBuilder.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryClientBuilder.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client; +package com.azure.data.schemaregistry; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.credential.TokenCredential; @@ -23,9 +23,8 @@ import com.azure.core.util.Configuration; import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; -import com.azure.data.schemaregistry.Codec; -import com.azure.data.schemaregistry.client.implementation.AzureSchemaRegistryRestService; -import com.azure.data.schemaregistry.client.implementation.AzureSchemaRegistryRestServiceClientBuilder; +import com.azure.data.schemaregistry.implementation.AzureSchemaRegistryRestService; +import com.azure.data.schemaregistry.implementation.AzureSchemaRegistryRestServiceClientBuilder; import java.net.MalformedURLException; import java.net.URL; import java.time.temporal.ChronoUnit; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/Codec.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/Codec.java index ca4ff37afedf..8703c9e0b15f 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/Codec.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/Codec.java @@ -3,7 +3,7 @@ package com.azure.data.schemaregistry; -import java.io.ByteArrayOutputStream; +import com.azure.data.schemaregistry.models.SerializationException; /** * An interface defining operations required for registry-based serialization and deserialization. @@ -34,6 +34,8 @@ public interface Codec { */ String getSchemaName(Object object); + String getSchemaGroup(); + /** * Returns string representation of schema object to be stored in the service. * @@ -49,7 +51,7 @@ public interface Codec { * @return output stream containing byte representation of object * @throws SerializationException if generating byte representation of object fails */ - ByteArrayOutputStream encode(Object object); + byte[] encode(Object object); /** * Decodes byte array into Object given provided schema object. @@ -58,5 +60,5 @@ public interface Codec { * @return deserialized object * @throws SerializationException if decode operation fails */ - Object decodeBytes(byte[] encodedBytes, Object schemaObject); + Object decode(byte[] encodedBytes, Object schemaObject); } diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/SchemaRegistrySerializer.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/SchemaRegistrySerializer.java index f6740ab5a089..029762354116 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/SchemaRegistrySerializer.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/SchemaRegistrySerializer.java @@ -5,9 +5,9 @@ import com.azure.core.exception.HttpResponseException; import com.azure.core.util.logging.ClientLogger; -import com.azure.data.schemaregistry.client.CachedSchemaRegistryAsyncClient; -import com.azure.data.schemaregistry.client.SchemaRegistryClientException; -import com.azure.data.schemaregistry.client.SchemaRegistryObject; +import com.azure.data.schemaregistry.models.SchemaRegistryClientException; +import com.azure.data.schemaregistry.models.SchemaRegistryObject; +import com.azure.data.schemaregistry.models.SerializationException; import reactor.core.publisher.Mono; import java.io.IOException; @@ -55,7 +55,7 @@ public SchemaRegistrySerializer(CachedSchemaRegistryAsyncClient schemaRegistryCl this(schemaRegistryClient, serializerCodec, deserializerCodecList, null, null); } - public SchemaRegistrySerializer(CachedSchemaRegistryAsyncClient schemaRegistryClient, + public SchemaRegistrySerializer(CachedSchemaRegistryAsyncClient schemaRegistryClient, Codec serializerCodec, List deserializerCodecList, Boolean autoRegisterSchemas, String schemaGroup) { @@ -153,7 +153,7 @@ protected Mono serialize(T s, Object object) { .put(id.getBytes(StandardCharsets.UTF_8)); try { s.write(idBuffer.array()); - serializerCodec.encode(object).writeTo(s); + s.write(serializerCodec.encode(object)); } catch (IOException e) { sink.error(new SerializationException(e.getMessage(), e)); } @@ -170,7 +170,7 @@ protected Mono serialize(T s, Object object) { * @return object, deserialized with the prefixed schema * @throws SerializationException if deserialization of registry schema or message payload fails. */ - protected Mono deserialize(InputStream s) throws SerializationException { + protected Mono deserialize(InputStream s) { if (s == null) { return Mono.empty(); } @@ -195,7 +195,7 @@ protected Mono deserialize(InputStream s) throws SerializationException .onErrorMap(IOException.class, e -> logger.logExceptionAsError(new SerializationException(e.getMessage(), e))) .handle((registryObject, sink) -> { - Object payloadSchema = registryObject.deserialize(); + Object payloadSchema = registryObject.getSchema(); if (payloadSchema == null) { sink.error(logger.logExceptionAsError( @@ -210,7 +210,7 @@ protected Mono deserialize(InputStream s) throws SerializationException byte[] b = Arrays.copyOfRange(buffer.array(), start, start + length); Codec codec = getDeserializerCodec(registryObject); - sink.next(codec.decodeBytes(b, payloadSchema)); + sink.next(codec.decode(b, payloadSchema)); }) .onErrorMap(e -> { if (e instanceof SchemaRegistryClientException) { diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/package-info.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/package-info.java deleted file mode 100644 index 037a0fecb158..000000000000 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Package containing the classes for - * - CachedSchemaRegistryClient - * - CachedSchemaRegistryAsyncClient - * - AzureSchemaRegistryRestService. - */ -package com.azure.data.schemaregistry.client; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/AzureSchemaRegistryRestService.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/AzureSchemaRegistryRestService.java similarity index 98% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/AzureSchemaRegistryRestService.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/AzureSchemaRegistryRestService.java index f44e765505af..3c8be332324b 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/AzureSchemaRegistryRestService.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/AzureSchemaRegistryRestService.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation; +package com.azure.data.schemaregistry.implementation; import com.azure.core.annotation.BodyParam; import com.azure.core.annotation.Delete; @@ -27,16 +27,16 @@ import com.azure.core.http.rest.RestProxy; import com.azure.core.util.Context; import com.azure.core.util.FluxUtil; -import com.azure.data.schemaregistry.client.implementation.models.CreateGroupResponse; -import com.azure.data.schemaregistry.client.implementation.models.CreateSchemaResponse; -import com.azure.data.schemaregistry.client.implementation.models.GetIdBySchemaContentResponse; -import com.azure.data.schemaregistry.client.implementation.models.GetLatestSchemaResponse; -import com.azure.data.schemaregistry.client.implementation.models.GetSchemaByIdResponse; -import com.azure.data.schemaregistry.client.implementation.models.GetSchemaVersionResponse; -import com.azure.data.schemaregistry.client.implementation.models.GetSchemaVersionsResponse; -import com.azure.data.schemaregistry.client.implementation.models.GetSchemasByGroupResponse; -import com.azure.data.schemaregistry.client.implementation.models.SchemaGroup; -import com.azure.data.schemaregistry.client.implementation.models.SchemaId; +import com.azure.data.schemaregistry.implementation.models.CreateGroupResponse; +import com.azure.data.schemaregistry.implementation.models.CreateSchemaResponse; +import com.azure.data.schemaregistry.implementation.models.GetIdBySchemaContentResponse; +import com.azure.data.schemaregistry.implementation.models.GetLatestSchemaResponse; +import com.azure.data.schemaregistry.implementation.models.GetSchemaByIdResponse; +import com.azure.data.schemaregistry.implementation.models.GetSchemaVersionResponse; +import com.azure.data.schemaregistry.implementation.models.GetSchemaVersionsResponse; +import com.azure.data.schemaregistry.implementation.models.GetSchemasByGroupResponse; +import com.azure.data.schemaregistry.implementation.models.SchemaGroup; +import com.azure.data.schemaregistry.implementation.models.SchemaId; import java.util.List; import reactor.core.publisher.Mono; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/AzureSchemaRegistryRestServiceClientBuilder.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/AzureSchemaRegistryRestServiceClientBuilder.java similarity index 97% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/AzureSchemaRegistryRestServiceClientBuilder.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/AzureSchemaRegistryRestServiceClientBuilder.java index 4dbf94d09ca5..4aea3ea89ef5 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/AzureSchemaRegistryRestServiceClientBuilder.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/AzureSchemaRegistryRestServiceClientBuilder.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation; +package com.azure.data.schemaregistry.implementation; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.http.HttpPipeline; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateGroupHeaders.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateGroupHeaders.java similarity index 93% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateGroupHeaders.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateGroupHeaders.java index ba373f71b19d..c3db80e8040c 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateGroupHeaders.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateGroupHeaders.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateGroupResponse.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateGroupResponse.java similarity index 93% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateGroupResponse.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateGroupResponse.java index 7f6b958bbd68..bc20e0ac954e 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateGroupResponse.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateGroupResponse.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpRequest; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateSchemaHeaders.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateSchemaHeaders.java similarity index 98% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateSchemaHeaders.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateSchemaHeaders.java index fcdac46e5b9f..d2f470271d9c 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateSchemaHeaders.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateSchemaHeaders.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateSchemaResponse.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateSchemaResponse.java similarity index 94% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateSchemaResponse.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateSchemaResponse.java index 5612686cb87f..cd37671a2514 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/CreateSchemaResponse.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/CreateSchemaResponse.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpRequest; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetIdBySchemaContentHeaders.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetIdBySchemaContentHeaders.java similarity index 98% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetIdBySchemaContentHeaders.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetIdBySchemaContentHeaders.java index 45e63cd1e4a1..b825d8118cd7 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetIdBySchemaContentHeaders.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetIdBySchemaContentHeaders.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetIdBySchemaContentResponse.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetIdBySchemaContentResponse.java similarity index 94% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetIdBySchemaContentResponse.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetIdBySchemaContentResponse.java index 4061fd93f937..cf780ffaad79 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetIdBySchemaContentResponse.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetIdBySchemaContentResponse.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpRequest; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetLatestSchemaHeaders.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetLatestSchemaHeaders.java similarity index 98% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetLatestSchemaHeaders.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetLatestSchemaHeaders.java index 6fc62f9ad809..646bffe9411d 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetLatestSchemaHeaders.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetLatestSchemaHeaders.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetLatestSchemaResponse.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetLatestSchemaResponse.java similarity index 94% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetLatestSchemaResponse.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetLatestSchemaResponse.java index b1aec099e868..2e4e65822c92 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetLatestSchemaResponse.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetLatestSchemaResponse.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpRequest; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaByIdHeaders.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaByIdHeaders.java similarity index 98% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaByIdHeaders.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaByIdHeaders.java index cb6e7f5df947..d31de2971a2e 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaByIdHeaders.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaByIdHeaders.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaByIdResponse.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaByIdResponse.java similarity index 94% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaByIdResponse.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaByIdResponse.java index 9f5f8392a987..5a0c67a8c992 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaByIdResponse.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaByIdResponse.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpRequest; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionHeaders.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionHeaders.java similarity index 98% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionHeaders.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionHeaders.java index 6210361d7a1c..014da2ac0bd0 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionHeaders.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionHeaders.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionResponse.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionResponse.java similarity index 94% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionResponse.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionResponse.java index 4b4f3bfbc24c..fe2d718d28dd 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionResponse.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionResponse.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpRequest; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionsHeaders.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionsHeaders.java similarity index 94% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionsHeaders.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionsHeaders.java index db011b690a66..4902359c6f4b 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionsHeaders.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionsHeaders.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionsResponse.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionsResponse.java similarity index 94% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionsResponse.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionsResponse.java index 67afbfed471b..4da3f44617cd 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemaVersionsResponse.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemaVersionsResponse.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpRequest; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemasByGroupHeaders.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemasByGroupHeaders.java similarity index 94% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemasByGroupHeaders.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemasByGroupHeaders.java index a8162e0af75a..7597a0a0a03c 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemasByGroupHeaders.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemasByGroupHeaders.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemasByGroupResponse.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemasByGroupResponse.java similarity index 94% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemasByGroupResponse.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemasByGroupResponse.java index 796219fe422d..0c29e36fc758 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/GetSchemasByGroupResponse.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/GetSchemasByGroupResponse.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpRequest; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/SchemaGroup.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/SchemaGroup.java similarity index 98% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/SchemaGroup.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/SchemaGroup.java index 98d2e8e3ca71..fc416152e629 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/SchemaGroup.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/SchemaGroup.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/SchemaId.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/SchemaId.java similarity index 93% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/SchemaId.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/SchemaId.java index 6fa7927c4cc4..80e6b35775ff 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/SchemaId.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/SchemaId.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; import com.azure.core.annotation.Fluent; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/package-info.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/package-info.java similarity index 55% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/package-info.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/package-info.java index cdb3fcbbeaf8..bdeef3522a14 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/models/package-info.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/models/package-info.java @@ -1,2 +1,2 @@ /** Package containing the data models for AzureSchemaRegistryRestService. null. */ -package com.azure.data.schemaregistry.client.implementation.models; +package com.azure.data.schemaregistry.implementation.models; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/package-info.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/package-info.java similarity index 56% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/package-info.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/package-info.java index b9afd3e65bc9..6f1ee3cf00e9 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/implementation/package-info.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/implementation/package-info.java @@ -1,2 +1,2 @@ /** Package containing the classes for AzureSchemaRegistryRestService. null. */ -package com.azure.data.schemaregistry.client.implementation; +package com.azure.data.schemaregistry.implementation; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/SchemaRegistryClientException.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryClientException.java similarity index 93% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/SchemaRegistryClientException.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryClientException.java index 92e302e422d5..9a0df582913c 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/SchemaRegistryClientException.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryClientException.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client; +package com.azure.data.schemaregistry.models; import com.azure.core.exception.AzureException; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/SchemaRegistryObject.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryObject.java similarity index 83% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/SchemaRegistryObject.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryObject.java index e152c13f1819..f4bfb3c66226 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/client/SchemaRegistryObject.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryObject.java @@ -1,9 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client; +package com.azure.data.schemaregistry.models; import com.azure.core.util.logging.ClientLogger; +import com.azure.data.schemaregistry.CachedSchemaRegistryAsyncClient; import java.util.function.Function; /** @@ -16,6 +17,8 @@ public class SchemaRegistryObject { private final String schemaType; private final Function parseMethod; private final byte[] schemaBytes; + private final String schemaName; + private final String schemaGroup; private Object deserialized; @@ -30,6 +33,8 @@ public class SchemaRegistryObject { public SchemaRegistryObject( String schemaId, String schemaType, + String schemaName, + String schemaGroup, byte[] schemaByteArray, Function parseMethod) { this.schemaId = schemaId; @@ -37,6 +42,8 @@ public SchemaRegistryObject( this.schemaBytes = schemaByteArray.clone(); this.deserialized = null; this.parseMethod = parseMethod; + this.schemaGroup = schemaGroup; + this.schemaName = schemaName; } /** @@ -53,13 +60,21 @@ public String getSchemaType() { return schemaType; } + public String getSchemaGroup() { + return null; + } + + public String getSchemaName() { + return null; + } + /** * Deserialize schema bytes returned from Schema Registry. If deserialization has happened once, the deserialized * object is stored and returned. * * @return schema object, deserialized using stored schema parser method. */ - public Object deserialize() { + public Object getSchema() { if (this.deserialized == null) { String schemaString = new String( this.schemaBytes, CachedSchemaRegistryAsyncClient.SCHEMA_REGISTRY_SERVICE_ENCODING); diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/SerializationException.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SerializationException.java similarity index 94% rename from sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/SerializationException.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SerializationException.java index b526a8843721..52f0aa20284d 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/SerializationException.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SerializationException.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry; +package com.azure.data.schemaregistry.models; import com.azure.core.exception.AzureException; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/package-info.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/package-info.java new file mode 100644 index 000000000000..3e1fe45c92d8 --- /dev/null +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/package-info.java @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +/** + * Package containing the model classes for schema registry. + */ +package com.azure.data.schemaregistry.models; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/package-info.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/package-info.java index f04c2e22d1ed..f0a21847c2ff 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/package-info.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/package-info.java @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + /** * Package containing core serialization and deserialization implementations for Azure Schema Registry SDK. */ diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/module-info.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/module-info.java index 1858b02d6f17..d14d3288f09e 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/module-info.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/module-info.java @@ -5,7 +5,7 @@ requires transitive com.azure.core; exports com.azure.data.schemaregistry; - exports com.azure.data.schemaregistry.client; + exports com.azure.data.schemaregistry.models; opens com.azure.data.schemaregistry to com.fasterxml.jackson.databind, com.azure.core; } diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClientTest.java b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/CachedSchemaRegistryAsyncClientTest.java similarity index 92% rename from sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClientTest.java rename to sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/CachedSchemaRegistryAsyncClientTest.java index e89cdee32366..c7e31a1f5ca2 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/client/CachedSchemaRegistryAsyncClientTest.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/CachedSchemaRegistryAsyncClientTest.java @@ -1,10 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.data.schemaregistry.client; - -import com.azure.data.schemaregistry.client.implementation.AzureSchemaRegistryRestService; -import com.azure.data.schemaregistry.client.implementation.models.*; +package com.azure.data.schemaregistry; + +import com.azure.data.schemaregistry.implementation.models.CreateSchemaResponse; +import com.azure.data.schemaregistry.implementation.models.GetIdBySchemaContentResponse; +import com.azure.data.schemaregistry.implementation.models.GetSchemaByIdHeaders; +import com.azure.data.schemaregistry.implementation.models.GetSchemaByIdResponse; +import com.azure.data.schemaregistry.implementation.models.SchemaId; +import com.azure.data.schemaregistry.models.SchemaRegistryClientException; +import com.azure.data.schemaregistry.models.SchemaRegistryObject; +import com.azure.data.schemaregistry.implementation.AzureSchemaRegistryRestService; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/SampleCodec.java b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/SampleCodec.java index 41882d67b189..529c0db93694 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/SampleCodec.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/SampleCodec.java @@ -3,6 +3,7 @@ package com.azure.data.schemaregistry; +import com.azure.data.schemaregistry.models.SerializationException; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -15,13 +16,18 @@ public String getSchemaName(Object object) throws SerializationException { return "schema name"; } + @Override + public String getSchemaGroup() { + return "schema group"; + } + @Override public String getSchemaString(Object object) { return "string representation of schema"; } @Override - public ByteArrayOutputStream encode(Object object) throws SerializationException { + public byte[] encode(Object object) throws SerializationException { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { outputStream.write("sample payload".getBytes()); @@ -31,7 +37,7 @@ public ByteArrayOutputStream encode(Object object) throws SerializationException e.printStackTrace(); throw new SerializationException("this should never happen", e); } - return outputStream; + return outputStream.toByteArray(); } @Override @@ -47,7 +53,7 @@ public String parseSchemaString(String s) { public static final String CONSTANT_PAYLOAD = "sample payload!"; @Override - public Object decodeBytes(byte[] bytes, Object o) throws SerializationException { + public Object decode(byte[] bytes, Object o) throws SerializationException { return CONSTANT_PAYLOAD; } } diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/SchemaRegistrySerializerTest.java b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/SchemaRegistrySerializerTest.java index 101f9ce39cdb..69120ae5e4db 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/SchemaRegistrySerializerTest.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/SchemaRegistrySerializerTest.java @@ -3,9 +3,9 @@ package com.azure.data.schemaregistry; -import com.azure.data.schemaregistry.client.CachedSchemaRegistryAsyncClient; -import com.azure.data.schemaregistry.client.SchemaRegistryClientException; -import com.azure.data.schemaregistry.client.SchemaRegistryObject; +import com.azure.data.schemaregistry.models.SchemaRegistryClientException; +import com.azure.data.schemaregistry.models.SchemaRegistryObject; +import com.azure.data.schemaregistry.models.SerializationException; import org.apache.avro.Schema; import org.apache.avro.generic.GenericData; import org.apache.avro.generic.GenericDatumWriter; @@ -40,10 +40,12 @@ public void testRegistryGuidPrefixedToPayload() { SampleCodec encoder = new SampleCodec(); SchemaRegistryObject registered = new SchemaRegistryObject(MOCK_GUID, encoder.getSchemaType(), + encoder.getSchemaName(null), + encoder.getSchemaGroup(), encoder.getSchemaString(null).getBytes(), // always returns same schema string encoder::parseSchemaString); - assertEquals(encoder.getSchemaString(null), registered.deserialize()); + assertEquals(encoder.getSchemaString(null), registered.getSchema()); CachedSchemaRegistryAsyncClient mockRegistryClient = getMockClient(); Mockito.when(mockRegistryClient.getSchemaId(anyString(), anyString(), anyString(), anyString())) @@ -68,7 +70,7 @@ public void testRegistryGuidPrefixedToPayload() { int start = buffer.position() + buffer.arrayOffset(); int length = buffer.limit() - SchemaRegistrySerializer.SCHEMA_ID_SIZE; byte[] encodedBytes = Arrays.copyOfRange(buffer.array(), start, start + length); - assertTrue(Arrays.equals(encoder.encode(null).toByteArray(), encodedBytes)); + assertTrue(Arrays.equals(encoder.encode(null), encodedBytes)); } catch (SerializationException e) { e.printStackTrace(); fail(); @@ -111,10 +113,12 @@ public void testAddDeserializerCodec() throws IOException, SchemaRegistryClientE // manually add SchemaRegistryObject to cache SchemaRegistryObject registered = new SchemaRegistryObject(MOCK_GUID, decoder.getSchemaType(), + decoder.getSchemaName(null), + decoder.getSchemaGroup(), MOCK_AVRO_SCHEMA_STRING.getBytes(), decoder::parseSchemaString); - assertTrue(registered.deserialize() != null); + assertTrue(registered.getSchema() != null); CachedSchemaRegistryAsyncClient mockClient = getMockClient(); Mockito.when(mockClient.getSchema(anyString())) diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/TestDummySerializer.java b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/TestDummySerializer.java index 833dd1654bf1..e585b5d8ae49 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/TestDummySerializer.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/test/java/com/azure/data/schemaregistry/TestDummySerializer.java @@ -3,8 +3,6 @@ package com.azure.data.schemaregistry; -import com.azure.data.schemaregistry.client.CachedSchemaRegistryAsyncClient; - import java.util.Collections; public class TestDummySerializer extends SchemaRegistrySerializer { From 79b8307a54b0d789407829b5ee2bce38c5de17c4 Mon Sep 17 00:00:00 2001 From: Srikanta Date: Fri, 31 Jul 2020 03:11:55 -0700 Subject: [PATCH 3/4] Update model classes --- .../schemaregistry/models/SchemaRegistryClientException.java | 4 ++-- .../data/schemaregistry/models/SchemaRegistryObject.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryClientException.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryClientException.java index 9a0df582913c..474c0f059996 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryClientException.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryClientException.java @@ -12,7 +12,7 @@ public class SchemaRegistryClientException extends AzureException { /** * @param s error message returned from schema registry client */ - SchemaRegistryClientException(String s) { + public SchemaRegistryClientException(String s) { super(s); } @@ -20,7 +20,7 @@ public class SchemaRegistryClientException extends AzureException { * @param s error message returned from schema registry client * @param cause Throwable cause of the exception */ - SchemaRegistryClientException(String s, Throwable cause) { + public SchemaRegistryClientException(String s, Throwable cause) { super(s, cause); } } diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryObject.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryObject.java index f4bfb3c66226..97eeb5df1906 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryObject.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/models/SchemaRegistryObject.java @@ -5,6 +5,7 @@ import com.azure.core.util.logging.ClientLogger; import com.azure.data.schemaregistry.CachedSchemaRegistryAsyncClient; +import java.nio.charset.StandardCharsets; import java.util.function.Function; /** @@ -77,7 +78,7 @@ public String getSchemaName() { public Object getSchema() { if (this.deserialized == null) { String schemaString = new String( - this.schemaBytes, CachedSchemaRegistryAsyncClient.SCHEMA_REGISTRY_SERVICE_ENCODING); + this.schemaBytes, StandardCharsets.UTF_8); logger.verbose("Deserializing schema, id: '{}', schema string '{}'", this.schemaId, schemaString); From 43b885abfbc9fd8d2358aa527e98c21aa8553335 Mon Sep 17 00:00:00 2001 From: Srikanta Date: Fri, 31 Jul 2020 03:15:36 -0700 Subject: [PATCH 4/4] Add clear cache method to sync client --- .../azure/data/schemaregistry/CachedSchemaRegistryClient.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryClient.java b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryClient.java index 900503c6d78d..c0c3a5c2f5f1 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryClient.java +++ b/sdk/schemaregistry/azure-data-schemaregistry/src/main/java/com/azure/data/schemaregistry/CachedSchemaRegistryClient.java @@ -53,4 +53,8 @@ public Response getSchemaIdWithResponse(String schemaGroup, String schem .block(); } + public void clearCache() { + this.asyncClient.clearCache(); + } + }