This is an automated email from the ASF dual-hosted git repository.
karp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/rocketmq-schema-registry.git
The following commit(s) were added to refs/heads/main by this push:
new 5f3fe3f fix Avro serde should support T extends record not a specific
record (#54)
5f3fe3f is described below
commit 5f3fe3fd8c7adb0d2d6fba05b2fa6e4a96e9d2d9
Author: Humkum <[email protected]>
AuthorDate: Wed Aug 31 10:52:55 2022 +0800
fix Avro serde should support T extends record not a specific record (#54)
---
.../client/serde/avro/GenericAvroDeserializer.java | 6 +++---
.../registry/client/serde/avro/GenericAvroSerde.java | 14 +++++++-------
.../registry/client/serde/avro/GenericAvroSerializer.java | 10 +++++-----
.../client/serde/avro/SpecificAvroDeserializer.java | 7 ++++---
.../registry/client/serde/avro/SpecificAvroSerde.java | 10 +++++-----
.../registry/client/serde/avro/SpecificAvroSerializer.java | 7 +++----
.../registry/client/serde/avro/GenericAvroSerdeTest.java | 2 +-
.../registry/example/serde/avro/GenericAvroSerdeDemo.java | 2 +-
.../registry/example/serde/avro/SpecificAvroSerdeDemo.java | 4 ++--
9 files changed, 31 insertions(+), 31 deletions(-)
diff --git
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroDeserializer.java
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroDeserializer.java
index 0c58699..0028ace 100644
---
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroDeserializer.java
+++
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroDeserializer.java
@@ -22,8 +22,8 @@ import
org.apache.rocketmq.schema.registry.client.serde.Deserializer;
import java.util.Map;
-public class GenericAvroDeserializer implements Deserializer<GenericRecord> {
- private final AvroDeserializer<GenericRecord> inner;
+public class GenericAvroDeserializer<T extends GenericRecord> implements
Deserializer<T> {
+ private final AvroDeserializer<T> inner;
public GenericAvroDeserializer() {
this.inner = new AvroDeserializer<>();
@@ -39,7 +39,7 @@ public class GenericAvroDeserializer implements
Deserializer<GenericRecord> {
}
@Override
- public GenericRecord deserialize(String subject, byte[] bytes) {
+ public T deserialize(String subject, byte[] bytes) {
return this.inner.deserialize(subject, bytes);
}
diff --git
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerde.java
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerde.java
index 3abe215..240c10d 100644
---
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerde.java
+++
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerde.java
@@ -25,13 +25,13 @@ import java.io.Closeable;
import java.io.IOException;
import java.util.Map;
-public class GenericAvroSerde implements Closeable {
- private final Serializer<GenericRecord> serializer;
- private final Deserializer<GenericRecord> deserializer;
+public class GenericAvroSerde<T extends GenericRecord> implements Closeable {
+ private final Serializer<T> serializer;
+ private final Deserializer<T> deserializer;
public GenericAvroSerde() {
- this.serializer = new GenericAvroSerializer();
- this.deserializer = new GenericAvroDeserializer();
+ this.serializer = new GenericAvroSerializer<T>();
+ this.deserializer = new GenericAvroDeserializer<T>();
}
public GenericAvroSerde(final SchemaRegistryClient client) {
@@ -47,11 +47,11 @@ public class GenericAvroSerde implements Closeable {
this.deserializer.configure(configs);
}
- public Serializer<GenericRecord> serializer() {
+ public Serializer<T> serializer() {
return this.serializer;
}
- public Deserializer<GenericRecord> deserializer() {
+ public Deserializer<T> deserializer() {
return this.deserializer;
}
diff --git
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerializer.java
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerializer.java
index 8eb1dbf..d178502 100644
---
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerializer.java
+++
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerializer.java
@@ -22,16 +22,16 @@ import
org.apache.rocketmq.schema.registry.client.serde.Serializer;
import java.util.Map;
-public class GenericAvroSerializer implements Serializer<GenericRecord> {
+public class GenericAvroSerializer<T extends GenericRecord> implements
Serializer<T> {
- private final AvroSerializer<GenericRecord> inner;
+ private final AvroSerializer<T> inner;
public GenericAvroSerializer() {
- this.inner = new AvroSerializer<GenericRecord>();
+ this.inner = new AvroSerializer<T>();
}
public GenericAvroSerializer(final SchemaRegistryClient client) {
- this.inner = new AvroSerializer<GenericRecord>(client);
+ this.inner = new AvroSerializer<T>(client);
}
@Override
public void configure(final Map<String, Object> configs) {
@@ -39,7 +39,7 @@ public class GenericAvroSerializer implements
Serializer<GenericRecord> {
}
@Override
- public byte[] serialize(final String subject, final GenericRecord record) {
+ public byte[] serialize(final String subject, final T record) {
return this.inner.serialize(subject, record);
}
diff --git
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroDeserializer.java
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroDeserializer.java
index f6f90e5..192a626 100644
---
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroDeserializer.java
+++
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroDeserializer.java
@@ -22,7 +22,7 @@ import
org.apache.rocketmq.schema.registry.client.serde.Deserializer;
import java.util.Map;
-public class SpecificAvroDeserializer implements Deserializer<SpecificRecord> {
+public class SpecificAvroDeserializer<T extends SpecificRecord> implements
Deserializer<T> {
private final AvroDeserializer<SpecificRecord> inner;
@@ -39,9 +39,10 @@ public class SpecificAvroDeserializer implements
Deserializer<SpecificRecord> {
this.inner.configure(configs);
}
+ @SuppressWarnings("unchecked")
@Override
- public SpecificRecord deserialize(String subject, byte[] bytes) {
- return this.inner.deserialize(subject, bytes);
+ public T deserialize(String subject, byte[] bytes) {
+ return (T) this.inner.deserialize(subject, bytes);
}
@Override
diff --git
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroSerde.java
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroSerde.java
index afaf508..b4b5206 100644
---
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroSerde.java
+++
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroSerde.java
@@ -25,9 +25,9 @@ import java.io.Closeable;
import java.io.IOException;
import java.util.Map;
-public class SpecificAvroSerde implements Closeable {
- private final AvroSerializer<SpecificRecord> serializer;
- private final AvroDeserializer<SpecificRecord> deserializer;
+public class SpecificAvroSerde<T extends SpecificRecord> implements Closeable {
+ private final AvroSerializer<T> serializer;
+ private final AvroDeserializer<T> deserializer;
public SpecificAvroSerde() {
this.serializer = new AvroSerializer<>();
@@ -43,11 +43,11 @@ public class SpecificAvroSerde implements Closeable {
this.deserializer = new AvroDeserializer<>(client);
}
- public Serializer<SpecificRecord> serializer() {
+ public Serializer<T> serializer() {
return this.serializer;
}
- public Deserializer<SpecificRecord> deserializer() {
+ public Deserializer<T> deserializer() {
return this.deserializer;
}
diff --git
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroSerializer.java
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroSerializer.java
index 12ed260..69b095e 100644
---
a/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroSerializer.java
+++
b/client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/SpecificAvroSerializer.java
@@ -16,15 +16,14 @@
*/
package org.apache.rocketmq.schema.registry.client.serde.avro;
-import org.apache.avro.specific.SpecificRecord;
import org.apache.rocketmq.schema.registry.client.SchemaRegistryClient;
import org.apache.rocketmq.schema.registry.client.serde.Serializer;
import java.util.Map;
-public class SpecificAvroSerializer implements Serializer<SpecificRecord> {
+public class SpecificAvroSerializer<T> implements Serializer<T> {
- private final AvroSerializer<SpecificRecord> inner;
+ private final AvroSerializer<T> inner;
public SpecificAvroSerializer() {
this.inner = new AvroSerializer<>();
@@ -40,7 +39,7 @@ public class SpecificAvroSerializer implements
Serializer<SpecificRecord> {
}
@Override
- public byte[] serialize(String subject, SpecificRecord record) {
+ public byte[] serialize(String subject, T record) {
return this.inner.serialize(subject, record);
}
diff --git
a/client/src/test/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerdeTest.java
b/client/src/test/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerdeTest.java
index 4ed8f65..b25485f 100644
---
a/client/src/test/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerdeTest.java
+++
b/client/src/test/java/org/apache/rocketmq/schema/registry/client/serde/avro/GenericAvroSerdeTest.java
@@ -69,7 +69,7 @@ public class GenericAvroSerdeTest {
byte[] bytes = serde.serializer().serialize("TopicTest", record);
//deserialize
- GenericRecord record1 =
serde.deserializer().deserialize("TopicTest", bytes);
+ GenericRecord record1 = (GenericRecord)
serde.deserializer().deserialize("TopicTest", bytes);
assertThat(record1).isEqualTo(record);
} catch (IOException e) {
System.out.println("serde shutdown failed");
diff --git
a/example/src/main/java/org/apache/rocketmq/schema/registry/example/serde/avro/GenericAvroSerdeDemo.java
b/example/src/main/java/org/apache/rocketmq/schema/registry/example/serde/avro/GenericAvroSerdeDemo.java
index 641f1c4..69dd52c 100644
---
a/example/src/main/java/org/apache/rocketmq/schema/registry/example/serde/avro/GenericAvroSerdeDemo.java
+++
b/example/src/main/java/org/apache/rocketmq/schema/registry/example/serde/avro/GenericAvroSerdeDemo.java
@@ -41,7 +41,7 @@ public class GenericAvroSerdeDemo {
.set("amount", 100.0)
.build();
- try (GenericAvroSerde serde = new
GenericAvroSerde(schemaRegistryClient)) {
+ try (GenericAvroSerde<GenericRecord> serde = new
GenericAvroSerde<>(schemaRegistryClient)) {
//configure
Map<String, Object> configs = new HashMap<>();
configs.put(AvroSerializerConfig.USE_GENERIC_DATUM_READER, true);
diff --git
a/example/src/main/java/org/apache/rocketmq/schema/registry/example/serde/avro/SpecificAvroSerdeDemo.java
b/example/src/main/java/org/apache/rocketmq/schema/registry/example/serde/avro/SpecificAvroSerdeDemo.java
index b74af60..aaec0ec 100644
---
a/example/src/main/java/org/apache/rocketmq/schema/registry/example/serde/avro/SpecificAvroSerdeDemo.java
+++
b/example/src/main/java/org/apache/rocketmq/schema/registry/example/serde/avro/SpecificAvroSerdeDemo.java
@@ -36,7 +36,7 @@ public class SpecificAvroSerdeDemo {
Map<String, Object> serializeConfigs = new HashMap<>();
- try (SpecificAvroSerde serde = new
SpecificAvroSerde(schemaRegistryClient)) {
+ try (SpecificAvroSerde<Charge> serde = new
SpecificAvroSerde<Charge>(schemaRegistryClient)) {
//serialize
Charge charge = new Charge("specific", 100.0);
@@ -46,7 +46,7 @@ public class SpecificAvroSerdeDemo {
byte[] bytes = serde.serializer().serialize("TopicTest", charge);
//deserialize
- Charge charge1 = (Charge)
serde.deserializer().deserialize("TopicTest", bytes);
+ Charge charge1 = serde.deserializer().deserialize("TopicTest",
bytes);
System.out.println("the origin object after ser/de is " + charge1);
} catch (IOException e) {
System.out.println("serde shutdown failed");