Search code examples
javaspringapache-kafkajackson-databind

Kafka AvroSchema not generated ,when a Class which has field with datatype as Object class


Kafka AvroSchema not generated ,when a Class which has field with datatype as Object class . Any ? Schema . What can we the reason that jackson databind not able to generate avro schema.


        ObjectMapper mapperss = new ObjectMapper(new AvroFactory());
        AvroSchemaGenerator gen = new AvroSchemaGenerator();
        try {
            mapperss.acceptJsonFormatVisitor(Sample.class, gen);
        } catch (JsonMappingException jme){
            jme.printStackTrace();
        }
        AvroSchema schemaWrapper = gen.getGeneratedSchema();
        org.apache.avro.Schema avroSchema = schemaWrapper.getAvroSchema();
        String asJson = avroSchema.toString(true);
        System.out.println("Schema Generated " + asJson);
import java.io.Serializable;
import javax.validation.Valid;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonInclude(Include.NON_EMPTY)
@JsonIgnoreProperties(
    ignoreUnknown = true
)
public class Sample implements Serializable {
    @JsonProperty("additionalFields")
    @Valid
    private Object additionalFields = null;
  public Sample() {
    }

    public Sample additionalFields(Object additionalFields) {
        this.additionalFields = additionalFields;
        return this;
    }

    public Object getAdditionalFields() {
        return this.additionalFields;
    }

    public void setAdditionalFields(Object additionalFields) {
        this.additionalFields = additionalFields;
    }
}

Solution

  • I created new POJO which do not have Object Class as DataType in fields (attribute) at Class or Subclass level.