package com.linkedin.camus.etl.kafka.coders; import com.linkedin.camus.coders.Message; import org.apache.avro.Schema; import org.apache.avro.generic.GenericData.Record; import org.apache.avro.generic.GenericDatumReader; import org.apache.hadoop.conf.Configuration; import com.linkedin.camus.coders.CamusWrapper; public class LatestSchemaKafkaAvroMessageDecoder extends KafkaAvroMessageDecoder { @Override public CamusWrapper<Record> decode(Message message) { try { GenericDatumReader<Record> reader = new GenericDatumReader<Record>(); Schema schema = super.registry.getLatestSchemaByTopic(super.topicName).getSchema(); reader.setSchema(schema); return new CamusWrapper<Record>(reader.read(null, decoderFactory.jsonDecoder(schema, new String(message.getPayload(), //Message.payloadOffset(message.magic()), kafka.message.Message.MagicOffset(), message.getPayload().length - kafka.message.Message.MagicOffset())))); } catch (Exception e) { throw new RuntimeException(e); } } }