crazylab commented on issue #6213: [Client] JSONSchema not able to encode message in case class (scala) URL: https://github.com/apache/pulsar/issues/6213#issuecomment-585220007 @yjshen Tried as per your suggestion. Now the message is getting produced correctly. But the consumer is failing while deserialising the message. ```scala case class Student(@BeanProperty name: String, @BeanProperty roll: Int) val client: PulsarClient = PulsarClient.builder() .serviceUrl("pulsar://localhost:6650") .build(); client.newReader() val consumer = client.newConsumer(JSONSchema.of(classOf[Student])) .topic(Const.TOPIC_NAME) .subscriptionName("s1") .subscribe() def consume(): Message[Student] = { consumer.receive() } ``` ```text Exception in thread "main" org.apache.pulsar.client.api.SchemaSerializationException: org.apache.pulsar.shade.com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.Student` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (byte[])"{"name":"A","roll":1}"; line: 1, column: 2] at org.apache.pulsar.client.impl.schema.reader.JsonReader.read(JsonReader.java:41) at org.apache.pulsar.client.impl.schema.StructSchema.decode(StructSchema.java:88) at org.apache.pulsar.client.impl.MessageImpl.getValue(MessageImpl.java:273) at com.consumer.SomethingElse$.main(Consumer.scala:42) at com.consumer.SomethingElse.main(Consumer.scala) Caused by: org.apache.pulsar.shade.com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.Student` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (byte[])"{"name":"A","roll":1}"; line: 1, column: 2] at org.apache.pulsar.shade.com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67) at org.apache.pulsar.shade.com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1452) at org.apache.pulsar.shade.com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1028) at org.apache.pulsar.shade.com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1297) at org.apache.pulsar.shade.com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:326) at org.apache.pulsar.shade.com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159) at org.apache.pulsar.shade.com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4014) at org.apache.pulsar.shade.com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3092) at org.apache.pulsar.client.impl.schema.reader.JsonReader.read(JsonReader.java:39) ... 4 more ``` A different error is coming when using `AvroSchema` ```text Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchMethodException: com.Student.<init>() at org.apache.pulsar.shade.org.apache.avro.specific.SpecificData.newInstance(SpecificData.java:353) at org.apache.pulsar.shade.org.apache.avro.specific.SpecificData.newRecord(SpecificData.java:369) at org.apache.pulsar.shade.org.apache.avro.reflect.ReflectData.newRecord(ReflectData.java:901) at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:212) at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumReader.readWithoutConversion(GenericDatumReader.java:175) at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153) at org.apache.pulsar.shade.org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:145) at org.apache.pulsar.client.impl.schema.reader.AvroReader.read(AvroReader.java:52) at org.apache.pulsar.client.impl.schema.StructSchema.decode(StructSchema.java:94) at org.apache.pulsar.client.impl.MessageImpl.getValue(MessageImpl.java:270) at com.consumer.SomethingElse$.main(Consumer.scala:42) at com.consumer.SomethingElse.main(Consumer.scala) Caused by: java.lang.NoSuchMethodException: com.Student.<init>() at java.lang.Class.getConstructor0(Class.java:3082) at java.lang.Class.getDeclaredConstructor(Class.java:2178) at org.apache.pulsar.shade.org.apache.avro.specific.SpecificData.newInstance(SpecificData.java:347) ... 11 more ```
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
