Skip to content

Commit ebc71be

Browse files
authored
API SchemaRegistryClient updates (Azure#24529)
* Updating SchemaProperties and adding SchemaRegistrySchema. * Fix client errors with SchemaRegistrySchema creation. * Update methods for getSchema and getSchemaProperties. * Fixing test breaks in SchemaRegistryAvroSerializerTest. * Fix async client to return correct objects. * Fix GetSchema example. * Fixing build breaks in samples and tests. * Updating README snippets. * Fixing test failures. * Update parameter to schemaDefinition. * Update from getContent() -> getSchemaDefinition. * Fix samples.
1 parent 01bef1c commit ebc71be

File tree

13 files changed

+275
-211
lines changed

13 files changed

+275
-211
lines changed

sdk/schemaregistry/azure-data-schemaregistry-avro/src/main/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public <T> Mono<T> deserializeAsync(InputStream inputStream, TypeReference<T> ty
114114

115115
return this.schemaRegistryClient.getSchema(schemaId)
116116
.handle((registryObject, sink) -> {
117-
byte[] payloadSchema = registryObject.getSchema();
117+
byte[] payloadSchema = registryObject.getSchemaDefinition().getBytes(StandardCharsets.UTF_8);
118118
int start = buffer.position() + buffer.arrayOffset();
119119
int length = buffer.limit() - SCHEMA_ID_SIZE;
120120
byte[] b = Arrays.copyOfRange(buffer.array(), start, start + length);
@@ -201,8 +201,8 @@ private Mono<String> maybeRegisterSchema(String schemaGroup, String schemaName,
201201
.registerSchema(schemaGroup, schemaName, schemaString, SchemaFormat.AVRO)
202202
.map(SchemaProperties::getSchemaId);
203203
} else {
204-
return this.schemaRegistryClient.getSchemaId(
205-
schemaGroup, schemaName, schemaString, SchemaFormat.AVRO);
204+
return this.schemaRegistryClient.getSchemaProperties(
205+
schemaGroup, schemaName, schemaString, SchemaFormat.AVRO).map(properties -> properties.getSchemaId());
206206
}
207207
}
208208

sdk/schemaregistry/azure-data-schemaregistry-avro/src/test/java/com/azure/data/schemaregistry/avro/SchemaRegistryAvroSerializerTest.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.azure.data.schemaregistry.avro.generatedtestsources.PlayingCardSuit;
1010
import com.azure.data.schemaregistry.models.SchemaFormat;
1111
import com.azure.data.schemaregistry.models.SchemaProperties;
12+
import com.azure.data.schemaregistry.models.SchemaRegistrySchema;
1213
import org.apache.avro.Schema;
1314
import org.apache.avro.generic.GenericData;
1415
import org.apache.avro.io.DecoderFactory;
@@ -88,11 +89,10 @@ void testRegistryGuidPrefixedToPayload() throws IOException {
8889
final PlayingCard playingCard = new PlayingCard(true, 10, PlayingCardSuit.DIAMONDS);
8990
final Schema playingClassSchema = PlayingCard.getClassSchema();
9091
final byte[] schemaBytes = playingClassSchema.toString().getBytes(StandardCharsets.UTF_8);
91-
final SchemaProperties registered = new SchemaProperties(MOCK_GUID, SchemaFormat.AVRO,
92-
playingClassSchema.getFullName(), schemaBytes);
92+
final SchemaProperties registered = new SchemaProperties(MOCK_GUID, SchemaFormat.AVRO);
9393

94-
when(client.getSchemaId(MOCK_SCHEMA_GROUP, registered.getSchemaName(), playingClassSchema.toString(),
95-
SchemaFormat.AVRO)).thenReturn(Mono.just(MOCK_GUID));
94+
when(client.getSchemaProperties(MOCK_SCHEMA_GROUP, playingClassSchema.getFullName(),
95+
playingClassSchema.toString(), SchemaFormat.AVRO)).thenReturn(Mono.just(registered));
9696

9797
final SchemaRegistryAvroSerializer serializer = new SchemaRegistryAvroSerializer(client, avroSerializer,
9898
MOCK_SCHEMA_GROUP, false);
@@ -144,18 +144,23 @@ void testGetSchemaAndDeserialize() throws IOException {
144144
final AvroSerializer decoder = new AvroSerializer(false, parser, ENCODER_FACTORY,
145145
DECODER_FACTORY);
146146
final PlayingCard playingCard = new PlayingCard(true, 10, PlayingCardSuit.DIAMONDS);
147-
final Schema playingClassSchema = PlayingCard.getClassSchema();
148-
final SchemaProperties registered = new SchemaProperties(MOCK_GUID, SchemaFormat.AVRO,
149-
playingClassSchema.getFullName(), playingClassSchema.toString().getBytes(StandardCharsets.UTF_8));
147+
final String playingClassSchema = PlayingCard.getClassSchema().toString();
148+
final SchemaProperties registered = new SchemaProperties(MOCK_GUID, SchemaFormat.AVRO);
149+
final SchemaRegistrySchema registrySchema = new SchemaRegistrySchema(registered, playingClassSchema);
150150
final SchemaRegistryAvroSerializer serializer = new SchemaRegistryAvroSerializer(client, decoder,
151151
MOCK_SCHEMA_GROUP, true);
152152

153-
assertNotNull(registered.getSchema());
153+
assertNotNull(registrySchema.getProperties());
154154

155-
when(client.getSchema(MOCK_GUID)).thenReturn(Mono.just(registered));
155+
when(client.getSchema(MOCK_GUID)).thenReturn(Mono.just(registrySchema));
156156

157157
StepVerifier.create(client.getSchema(MOCK_GUID))
158-
.assertNext(properties -> assertEquals(MOCK_GUID, properties.getSchemaId()))
158+
.assertNext(schema -> {
159+
assertNotNull(schema.getProperties());
160+
161+
assertEquals(playingClassSchema, schema.getSchemaDefinition());
162+
assertEquals(MOCK_GUID, schema.getProperties().getSchemaId());
163+
})
159164
.verifyComplete();
160165

161166
final byte[] serializedPayload = getPayload(playingCard);

sdk/schemaregistry/azure-data-schemaregistry/README.md

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -52,23 +52,23 @@ You will also need to [register a new AAD application][register_aad_app] and [gr
5252
Set the values of the client ID, tenant ID, and client secret of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET.
5353

5454
##### Async client
55-
<!-- embedme ./src/samples/java/com/azure/data/schemaregistry/ReadmeSamples.java#L24-L29 -->
55+
<!-- embedme ./src/samples/java/com/azure/data/schemaregistry/ReadmeSamples.java#L25-L30 -->
5656
```java
5757
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
5858

5959
SchemaRegistryAsyncClient schemaRegistryAsyncClient = new SchemaRegistryClientBuilder()
60-
.endpoint("{schema-registry-endpoint")
60+
.fullyQualifiedNamespace("{schema-registry-endpoint")
6161
.credential(tokenCredential)
6262
.buildAsyncClient();
6363
```
6464

6565
##### Sync client
66-
<!-- embedme ./src/samples/java/com/azure//data/schemaregistry/ReadmeSamples.java#L36-L41 -->
66+
<!-- embedme ./src/samples/java/com/azure/data/schemaregistry/ReadmeSamples.java#L37-L42 -->
6767
```java
6868
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
6969

7070
SchemaRegistryClient schemaRegistryClient = new SchemaRegistryClientBuilder()
71-
.endpoint("{schema-registry-endpoint")
71+
.fullyQualifiedNamespace("{schema-registry-endpoint")
7272
.credential(tokenCredential)
7373
.buildClient();
7474
```
@@ -91,17 +91,18 @@ SchemaRegistry operations. Those exposed properties are `Content` and `Id`.
9191
## Examples
9292

9393
* [Register a schema](#register-a-schema)
94-
* [Retrieve a schema ID](#retrieve-a-schema-id)
94+
* [Retrieve a schema's properties](#retrieve-a-schemas-properties)
9595
* [Retrieve a schema](#retrieve-a-schema)
9696

9797
### Register a schema
9898
Register a schema to be stored in the Azure Schema Registry.
99-
<!-- embedme ./src/samples/java/com/azure//data/schemaregistry/ReadmeSamples.java#L48-L70 -->
99+
100+
<!-- embedme ./src/samples/java/com/azure/data/schemaregistry/ReadmeSamples.java#L49-L72 -->
100101
```java
101102
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
102103

103104
SchemaRegistryClient schemaRegistryClient = new SchemaRegistryClientBuilder()
104-
.endpoint("{schema-registry-endpoint")
105+
.fullyQualifiedNamespace("{schema-registry-endpoint")
105106
.credential(tokenCredential)
106107
.buildClient();
107108

@@ -119,34 +120,38 @@ String schemaContent = "{\n"
119120
+ " ]\n"
120121
+ "}";
121122
SchemaProperties schemaProperties = schemaRegistryClient.registerSchema("{schema-group}", "{schema-name}",
122-
schemaContent, SerializationFormat.AVRO);
123+
schemaContent, SchemaFormat.AVRO);
124+
123125
System.out.println("Registered schema: " + schemaProperties.getSchemaId());
124126
```
125127

126-
### Retrieve a schema ID
127-
Retrieve a previously registered schema ID from the Azure Schema Registry.
128+
### Retrieve a schema's properties
129+
Retrieve a previously registered schema's properties from the Azure Schema Registry.
128130

129-
<!-- embedme ./src/samples/java/com/azure//data/schemaregistry/ReadmeSamples.java#L77-L85 -->
131+
<!-- embedme ./src/samples/java/com/azure/data/schemaregistry/ReadmeSamples.java#L79-L89 -->
130132
```java
131133
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
132134

133135
SchemaRegistryClient schemaRegistryClient = new SchemaRegistryClientBuilder()
134-
.endpoint("{schema-registry-endpoint")
136+
.fullyQualifiedNamespace("{schema-registry-endpoint")
135137
.credential(tokenCredential)
136138
.buildClient();
137139

138-
SchemaProperties schemaProperties = schemaRegistryClient.getSchema("{schema-id}");
139-
System.out.println("Retrieved schema: " + schemaProperties.getSchemaName());
140+
SchemaRegistrySchema schema = schemaRegistryClient.getSchema("{schema-id}");
141+
142+
System.out.printf("Retrieved schema: '%s'. Contents: %s%n", schema.getProperties().getSchemaId(),
143+
schema.getSchemaDefinition());
140144
```
145+
141146
### Retrieve a schema
142-
Retrieve a previously registered schema's content from the Azure Schema Registry.
147+
Retrieve a previously registered schema's content and properties from the Azure Schema Registry.
143148

144-
<!-- embedme ./src/samples/java/com/azure//data/schemaregistry/ReadmeSamples.java#L92-L114 -->
149+
<!-- embedme ./src/samples/java/com/azure/data/schemaregistry/ReadmeSamples.java#L96-L119 -->
145150
```java
146151
TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
147152

148153
SchemaRegistryClient schemaRegistryClient = new SchemaRegistryClientBuilder()
149-
.endpoint("{schema-registry-endpoint")
154+
.fullyQualifiedNamespace("{schema-registry-endpoint")
150155
.credential(tokenCredential)
151156
.buildClient();
152157

@@ -163,9 +168,10 @@ String schemaContent = "{\n"
163168
+ " }\n"
164169
+ " ]\n"
165170
+ "}";
166-
String schemaId = schemaRegistryClient.getSchemaId("{schema-group}", "{schema-name}",
167-
schemaContent, SerializationFormat.AVRO);
168-
System.out.println("Retreived schema id: " + schemaId);
171+
SchemaProperties properties = schemaRegistryClient.getSchemaProperties("{schema-group}", "{schema-name}",
172+
schemaContent, SchemaFormat.AVRO);
173+
174+
System.out.println("Retrieved schema id: " + properties.getSchemaId());
169175
```
170176

171177
## Troubleshooting

0 commit comments

Comments
 (0)