use of co.cask.cdap.common.io.BinaryEncoder in project cdap by caskdata.
the class RecordWithString method testTypeProject.
@Test
public void testTypeProject() throws IOException, UnsupportedTypeException {
final Record1 r1 = new Record1(10, Maps.<Integer, Value>newHashMap(), new URL("http://www.yahoo.com"));
r1.properties.put(1, new Value(1, "Name1"));
r1.properties.put(2, new Value(2, "Name2"));
r1.properties.put(3, null);
PipedOutputStream output = new PipedOutputStream();
PipedInputStream input = new PipedInputStream(output);
Schema sourceSchema = new ReflectionSchemaGenerator().generate(Record1.class);
Schema targetSchema = new ReflectionSchemaGenerator().generate(Record2.class);
new ReflectionDatumWriter<Record1>(sourceSchema).encode(r1, new BinaryEncoder(output));
Record2 r2 = new ReflectionDatumReader<>(targetSchema, TypeToken.of(Record2.class)).read(new BinaryDecoder(input), sourceSchema);
Assert.assertEquals(10L, r2.i.longValue());
Assert.assertTrue(Iterables.all(r2.properties.entrySet(), new Predicate<Map.Entry<String, Value>>() {
@Override
public boolean apply(Map.Entry<String, Value> input) {
Value value = r1.properties.get(Integer.valueOf(input.getKey()));
return (value == null && input.getValue() == null) || (value.equals(input.getValue()));
}
}));
Assert.assertNull(r2.name);
Assert.assertArrayEquals(new long[] { 1L, 2L }, r2.numbers);
Assert.assertEquals(URI.create("http://www.yahoo.com"), r2.url);
Assert.assertEquals(r1.uuid, r2.uuid);
}
use of co.cask.cdap.common.io.BinaryEncoder in project cdap by caskdata.
the class RecordWithString method testEnum.
@Test
public void testEnum() throws IOException, UnsupportedTypeException {
PipedOutputStream output = new PipedOutputStream();
PipedInputStream input = new PipedInputStream(output);
Schema schema = new ReflectionSchemaGenerator().generate(TestEnum.class);
ReflectionDatumWriter<TestEnum> writer = new ReflectionDatumWriter<>(schema);
BinaryEncoder encoder = new BinaryEncoder(output);
writer.encode(TestEnum.VALUE1, encoder);
writer.encode(TestEnum.VALUE3, encoder);
writer.encode(TestEnum.VALUE2, encoder);
BinaryDecoder decoder = new BinaryDecoder(input);
Schema readSchema = Schema.parseJson(schema.toString());
ReflectionDatumReader<TestEnum> reader = new ReflectionDatumReader<>(readSchema, TypeToken.of(TestEnum.class));
Assert.assertEquals(TestEnum.VALUE1, reader.read(decoder, readSchema));
Assert.assertEquals(TestEnum.VALUE3, reader.read(decoder, readSchema));
Assert.assertEquals(TestEnum.VALUE2, reader.read(decoder, readSchema));
}
use of co.cask.cdap.common.io.BinaryEncoder in project cdap by caskdata.
the class ObjectStoreDataset method encode.
private byte[] encode(T object) {
// encode T using schema
ByteArrayOutputStream bos = new ByteArrayOutputStream();
BinaryEncoder encoder = new BinaryEncoder(bos);
try {
this.datumWriter.encode(object, encoder);
} catch (IOException e) {
// SHOULD NEVER happen
throw new DataSetException("Failed to encode object to be written: " + e.getMessage(), e);
}
return bos.toByteArray();
}
use of co.cask.cdap.common.io.BinaryEncoder in project cdap by caskdata.
the class ASMDatumCodecTest method testList.
@Test
public void testList() throws IOException, UnsupportedTypeException {
TypeToken<List<Long>> type = new TypeToken<List<Long>>() {
};
PipedOutputStream os = new PipedOutputStream();
PipedInputStream is = new PipedInputStream(os);
List<Long> writeValue = ImmutableList.of(1L, 10L, 100L, 1000L);
DatumWriter<List<Long>> writer = getWriter(type);
writer.encode(writeValue, new BinaryEncoder(os));
ReflectionDatumReader<List<Long>> reader = new ReflectionDatumReader<>(getSchema(type), type);
List<Long> value = reader.read(new BinaryDecoder(is), getSchema(type));
Assert.assertEquals(writeValue, value);
}
use of co.cask.cdap.common.io.BinaryEncoder in project cdap by caskdata.
the class ASMDatumCodecTest method testStreamEvent.
@Test
public void testStreamEvent() throws IOException, UnsupportedTypeException {
TypeToken<StreamEvent> type = new TypeToken<StreamEvent>() {
};
PipedOutputStream os = new PipedOutputStream();
PipedInputStream is = new PipedInputStream(os);
DatumWriter<StreamEvent> writer = getWriter(type);
StreamEvent event = new StreamEvent(ImmutableMap.of("key", "value"), ByteBuffer.wrap("Testing message".getBytes(Charsets.UTF_8)));
writer.encode(event, new BinaryEncoder(os));
ReflectionDatumReader<StreamEvent> reader = new ReflectionDatumReader<>(getSchema(type), type);
StreamEvent value = reader.read(new BinaryDecoder(is), getSchema(type));
Assert.assertEquals(event.getHeaders(), value.getHeaders());
Assert.assertEquals(event.getBody(), value.getBody());
}
Aggregations