@Override public void setField(Object record, String name, int position, Object o) { setField(record, name, position, o, null); }
@Override public void setField(Object record, String name, int position, Object o) { setField(record, name, position, o, null); }
void checkReadWrite(Object object, Schema s) throws Exception { ReflectDatumWriter<Object> writer = new ReflectDatumWriter<>(s); ByteArrayOutputStream out = new ByteArrayOutputStream(); writer.write(object, factory.directBinaryEncoder(out, null)); ReflectDatumReader<Object> reader = new ReflectDatumReader<>(s); Object after = reader.read(null, DecoderFactory.get().binaryDecoder( out.toByteArray(), null)); assertEquals(object, after); // check reflective setField works for records if (s.getType().equals(Schema.Type.RECORD)) { Object copy = object.getClass().newInstance(); for (Field f : s.getFields()) { Object val = ReflectData.get().getField(object, f.name(), f.pos()); ReflectData.get().setField(copy, f.name(), f.pos(), val); } assertEquals("setField", object, copy); } }
@Override public void setField(Object record, String name, int position, Object o) { setField(record, name, position, o, null); }
@Override public void setField(Object record, String name, int position, Object o) { setField(record, name, position, o, null); }
private void fillReflect(Object record, String[] data) { for (int i = 0; i < indexes.length; i += 1) { Schema.Field field = fields[i]; int index = indexes[i]; Object value = makeValue(index < data.length ? data[index] : null, field); ReflectData.get().setField(record, field.name(), i, value); } }