protected String renderAvroMessage(AvroSchemaStore store, Record record) { if (store == null || !isAvroMessage(record.getData())) { throw new IllegalArgumentException("Not avro encoded"); } long fp = getFingerPrint(record.getData()); Schema schema = store.findByFingerprint(fp); if (schema == null) { throw new IllegalStateException(String.format("Not found schema: 0x%08X", fp)); } GenericData genericData = new GenericData(); BinaryMessageDecoder<GenericRecord> decoder = new BinaryMessageDecoder<>(genericData, schema); try { GenericRecord avroRecord = decoder.decode(record.getData(), null); return avroRecord.toString(); } catch (IOException e) { throw new IllegalStateException( String.format("Error: %s decoding with schema: 0x%08X", e.getMessage(), fp)); } }
schemaStore.addSchema(new Schema.Parser().parse(stream)); } catch (IOException e) { throw new RuntimeServiceException(e);
public AvroMessageCodec(Class<T> messageClass, AvroSchemaStore store) { this.messageClass = messageClass; schema = ReflectData.get().getSchema(messageClass); if (store != null) { store.addSchema(schema); } encoder = new BinaryMessageEncoder<>(ReflectData.get(), schema); decoder = new BinaryMessageDecoder<>(ReflectData.get(), schema, store); }