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 dev@pulsar.apache.org.
To unsubscribe, please send an email to: dev-unsubscr...@pulsar.apache.org

Reply via email to