Created
March 11, 2016 20:08
-
-
Save jghoman/9641b0f9e3218c195801 to your computer and use it in GitHub Desktop.
Avro Reflection example...
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
public static class DifferentUser { | |
private String name; | |
private int favoriteNumber; | |
private String favoriteColor; | |
public DifferentUser() {} | |
public DifferentUser(String favoriteColor, int favoriteNumber, String name) { | |
this.favoriteColor = favoriteColor; | |
this.favoriteNumber = favoriteNumber; | |
this.name = name; | |
} | |
public String getFavoriteColor() { | |
return favoriteColor; | |
} | |
public void setFavoriteColor(String favoriteColor) { | |
this.favoriteColor = favoriteColor; | |
} | |
public int getFavoriteNumber() { | |
return favoriteNumber; | |
} | |
public void setFavoriteNumber(int favoriteNumber) { | |
this.favoriteNumber = favoriteNumber; | |
} | |
public String getName() { | |
return name; | |
} | |
public void setName(String name) { | |
this.name = name; | |
} | |
} | |
@Test | |
public void TestReflection() throws IOException { | |
Schema schema = ReflectData.get().getSchema(DifferentUser.class); | |
System.out.println("schema = " + schema.toString(true)); | |
GenericRecord gr = new GenericRecordBuilder(schema) | |
.set("name", "joe") | |
.set("favoriteNumber", 42) | |
.set("favoriteColor", "blue") | |
.build(); | |
GenericDatumWriter<GenericRecord> gdw = new GenericDatumWriter<>(schema); | |
ByteArrayOutputStream baos = new ByteArrayOutputStream(); | |
Encoder encoder = EncoderFactory.get().binaryEncoder(baos, null); | |
gdw.write(gr, encoder); | |
encoder.flush(); | |
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); | |
Decoder decoder = DecoderFactory.get().binaryDecoder(bais, null); | |
ReflectDatumReader<DifferentUser> rdr = new ReflectDatumReader<>(DifferentUser.class); | |
DifferentUser differentUser = rdr.read(null, decoder); | |
assertEquals("joe", differentUser.getName()); | |
assertEquals(42, differentUser.getFavoriteNumber()); | |
assertEquals("blue", differentUser.getFavoriteColor()); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment