package mil.nga.giat.geowave.core.ingest.kafka; import kafka.serializer.Encoder; import kafka.utils.VerifiableProperties; import mil.nga.giat.geowave.core.ingest.avro.GenericAvroSerializer; import org.apache.avro.specific.SpecificRecordBase; /** * Default encoder used by Kafka to serialize Avro generated Java object to * binary. This class is specified as a property in the Kafka config setup. * * Key: serializer.class * * Value: mil.nga.giat.geowave.core.ingest.kafka.AvroKafkaEncoder * * @param <T> * - Base Avro class extended by all generated class files */ public class AvroKafkaEncoder<T extends SpecificRecordBase> implements Encoder<T> { private final GenericAvroSerializer<T> serializer = new GenericAvroSerializer<T>(); public AvroKafkaEncoder( final VerifiableProperties verifiableProperties ) { // This constructor must be present to avoid runtime errors } @Override public byte[] toBytes( final T object ) { return serializer.serialize( object, object.getSchema()); } }