Created
January 23, 2018 17:27
-
-
Save ValentinTrinque/ae917734629e95c9603859abe76f7191 to your computer and use it in GitHub Desktop.
Generate GenericRecord using Avro
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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