use of com.esotericsoftware.kryo.io.Output in project apex-malhar by apache.
the class FieldValueSerializableGenerator method serializeObject.
/**
* get the object which is serialized.
* this method will convert the object into a map from column name to column value and then serialize it
*
* @param obj
* @return
*/
public byte[] serializeObject(Object obj) {
// if don't have field information, just convert the whole object to byte[]
Object convertObj = obj;
// if fields are specified, convert to map and then convert map to byte[]
if (fieldGetterMap != null && !fieldGetterMap.isEmpty()) {
convertObj = getFieldsValueAsMap(obj);
}
ByteArrayOutputStream os = new ByteArrayOutputStream();
Output output = new Output(os);
getKryo().writeClassAndObject(output, convertObj);
output.flush();
// output.toBytes() is empty.
return os.toByteArray();
}
use of com.esotericsoftware.kryo.io.Output in project apex-malhar by apache.
the class Gen method cloneObject.
// processStats
/**
* Clone object by serializing and deserializing using Kryo.
* Note this is different from using {@link Kryo#copy(Object)}, which will attempt to also clone transient fields.
*
* @param kryo kryo object used to clone objects
* @param src src object that copy from
* @return cloned object
*/
@SuppressWarnings("unchecked")
private static <SRC> SRC cloneObject(Kryo kryo, SRC src) {
kryo.setClassLoader(src.getClass().getClassLoader());
ByteArrayOutputStream bos = null;
Output output;
Input input = null;
try {
bos = new ByteArrayOutputStream();
output = new Output(bos);
kryo.writeObject(output, src);
output.close();
input = new Input(bos.toByteArray());
return (SRC) kryo.readObject(input, src.getClass());
} finally {
IOUtils.closeQuietly(input);
IOUtils.closeQuietly(bos);
}
}
Aggregations