@Override public boolean equals(Object that) { if (that == this) return true; // identical object if (!(that instanceof SpecificRecord)) return false; // not a record if (this.getClass() != that.getClass()) return false; // not same schema return getSpecificData().compare(this, that, this.getSchema(), true) == 0; }
@Override public boolean equals(Object that) { if (that == this) return true; // identical object if (!(that instanceof SpecificRecord)) return false; // not a record if (this.getClass() != that.getClass()) return false; // not same schema return SpecificData.get().compare(this, that, this.getSchema(), true) == 0; }
@Override public int hashCode() { return getSpecificData().hashCode(this, this.getSchema()); }
@Override public int compareTo(SpecificRecord that) { return getSpecificData().compare(this, that, this.getSchema()); }
@Override public int hashCode() { return SpecificData.get().hashCode(this, this.getSchema()); }
@Override public int compareTo(SpecificRecord that) { return SpecificData.get().compare(this, that, this.getSchema()); }
@Override public void writeExternal(ObjectOutput out) throws IOException { new SpecificDatumWriter(getSchema()) .write(this, SpecificData.getEncoder(out)); }
@Override public void readExternal(ObjectInput in) throws IOException { new SpecificDatumReader(getSchema()) .read(this, SpecificData.getDecoder(in)); }
@Override public Object get(String fieldName) { return get(getSchema().getField(fieldName).pos()); }
@Override public void writeExternal(ObjectOutput out) throws IOException { new SpecificDatumWriter(getSchema()) .write(this, SpecificData.getEncoder(out)); }
@Override public void put(String fieldName, Object value) { put(getSchema().getField(fieldName).pos(), value); }
@Override public void readExternal(ObjectInput in) throws IOException { new SpecificDatumReader(getSchema()) .read(this, SpecificData.getDecoder(in)); } }
@Override public Object get(String fieldName) { return get(getSchema().getField(fieldName).pos()); }
@Override public void put(String fieldName, Object value) { put(getSchema().getField(fieldName).pos(), value); }
datumWriter = new SpecificDatumWriter<E>(avroValueType); try { schema = ((org.apache.avro.specific.SpecificRecordBase) avroValueType.newInstance()).getSchema(); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException(e.getMessage());
public Conversion<?> getConversion(String fieldName) { return getConversion(getSchema().getField(fieldName).pos()); }
public Conversion<?> getConversion(String fieldName) { return getConversion(getSchema().getField(fieldName).pos()); }
@SuppressWarnings("unchecked") <T extends SpecificRecordBase> void verifySerDeAndStandardMethods(T original) { final SpecificDatumWriter<T> datumWriterFromSchema = new SpecificDatumWriter<>(original.getSchema()); final SpecificDatumReader<T> datumReaderFromSchema = new SpecificDatumReader<>(original.getSchema(), original.getSchema()); verifySerDeAndStandardMethods(original, datumWriterFromSchema, datumReaderFromSchema); final SpecificDatumWriter<T> datumWriterFromClass = new SpecificDatumWriter(original.getClass()); final SpecificDatumReader<T> datumReaderFromClass = new SpecificDatumReader(original.getClass()); verifySerDeAndStandardMethods(original, datumWriterFromClass, datumReaderFromClass); }
public static <T extends SpecificRecordBase> Optional<byte[]> serializeAvroMetadata(T metadata, Class<T> clazz) throws IOException { DatumWriter<T> datumWriter = new SpecificDatumWriter<>(clazz); DataFileWriter<T> fileWriter = new DataFileWriter<>(datumWriter); ByteArrayOutputStream baos = new ByteArrayOutputStream(); fileWriter.create(metadata.getSchema(), baos); fileWriter.append(metadata); fileWriter.flush(); return Optional.of(baos.toByteArray()); }
@Override public void writeExternal(ObjectOutput out) throws IOException { new SpecificDatumWriter(getSchema()) .write(this, SpecificData.getEncoder(out)); }