Skip to content

Instantly share code, notes, and snippets.

@ValentinTrinque
Created January 23, 2018 17:27
Show Gist options
  • Save ValentinTrinque/ae917734629e95c9603859abe76f7191 to your computer and use it in GitHub Desktop.
Save ValentinTrinque/ae917734629e95c9603859abe76f7191 to your computer and use it in GitHub Desktop.
Generate GenericRecord using Avro
import org.apache.avro.Schema;
import org.apache.avro.generic.GenericData;
import org.apache.avro.generic.GenericRecord;
import org.apache.avro.reflect.ReflectData;
import java.util.Arrays;
public class GenericRecordFixtureFactory {
public static GenericRecord createFromEvent(String siteId, String visitorId, String timestampMs) {
EventMock eventMock = new EventMock();
eventMock.site_id = siteId;
eventMock.visitor = visitorId;
eventMock.timestamp_ms = timestampMs;
return createFrom(eventMock);
}
private static GenericRecord createFrom(Object object) {
final Schema schema = ReflectData.get().getSchema(object.getClass());
final GenericData.Record record = new GenericData.Record(schema);
Arrays.stream(object.getClass().getDeclaredFields()).forEach(field -> {
try {
record.put(field.getName(), field.get(object));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
});
return record;
}
private static class EventMock {
String timestamp_ms;
String site_id;
String visitor;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment