GitHub user frankjkelly added a comment to the discussion: JSONSchema should
works with generic (parameterized type) POJO/DTO.
@sijie I am using 2.6.1 Client with 2.6.1 Server
When I use the code as follows
```
private Producer<SignalEvent> getSignalProducer(String tenant) throws
PulsarClientException {
if (signalProducer.get(tenant) == null) {
signalProducer.put(tenant,
client.newProducer(Schema.JSON(SignalEvent.class))
.topic(createTopicUri(tenant, Topic.SIGNAL))
.create());
}
return signalProducer.get(tenant);
}
```
I get the error
```
Unknown type: T
org.apache.avro.AvroTypeException: Unknown type: T
at
org.apache.avro.specific.SpecificData.createSchema(SpecificData.java:410)
at
org.apache.avro.reflect.ReflectData.createSchema(ReflectData.java:663)
at
org.apache.avro.reflect.ReflectData.createFieldSchema(ReflectData.java:759)
at
org.apache.avro.reflect.ReflectData$AllowNull.createFieldSchema(ReflectData.java:86)
at
org.apache.avro.reflect.ReflectData.createSchema(ReflectData.java:615)
at
org.apache.avro.specific.SpecificData$3.computeValue(SpecificData.java:335)
at
org.apache.avro.specific.SpecificData$3.computeValue(SpecificData.java:332)
at java.base/java.lang.ClassValue.getFromHashMap(ClassValue.java:226)
at java.base/java.lang.ClassValue.getFromBackup(ClassValue.java:208)
at java.base/java.lang.ClassValue.get(ClassValue.java:114)
at
org.apache.avro.specific.SpecificData.getSchema(SpecificData.java:346)
at
org.apache.pulsar.client.impl.schema.StructSchema.extractAvroSchema(StructSchema.java:174)
at
org.apache.pulsar.client.impl.schema.StructSchema.createAvroSchema(StructSchema.java:161)
at
org.apache.pulsar.client.impl.schema.StructSchema.parseSchemaInfo(StructSchema.java:187)
at
org.apache.pulsar.client.impl.schema.JSONSchema.of(JSONSchema.java:96)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at
org.apache.pulsar.client.internal.DefaultImplementation.lambda$newJSONSchema$26(DefaultImplementation.java:242)
at
org.apache.pulsar.client.internal.ReflectionUtils.catchExceptions(ReflectionUtils.java:35)
at
org.apache.pulsar.client.internal.DefaultImplementation.newJSONSchema(DefaultImplementation.java:239)
at org.apache.pulsar.client.api.Schema.JSON(Schema.java:260)
at
com.cogito.library.eventmanager.PulsarEventBroker.getSignalProducer(PulsarEventBroker.java:106)
at
com.cogito.library.eventmanager.PulsarEventBroker.sendEvent(PulsarEventBroker.java:184)
```
but this code works fine
```
private Producer<String> getSignalProducer(String tenant) throws
PulsarClientException {
if (signalProducer.get(tenant) == null) {
signalProducer.put(tenant, client.newProducer(Schema.STRING)
.topic(createTopicUri(tenant, Topic.SIGNAL))
.create());
}
return signalProducer.get(tenant);
}
```
Thanks!
GitHub link:
https://github.com/apache/pulsar/discussions/18849#discussioncomment-4352457
----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]