use of com.esotericsoftware.kryo.Kryo in project heron by twitter.
the class KryoSerializer method initialize.
@Override
public void initialize(Map<String, Object> config) {
kryo = new Kryo();
kryo.setReferences(false);
kryoOut = new Output(2000, 2000000000);
kryoIn = new Input(1);
}
use of com.esotericsoftware.kryo.Kryo in project heron by twitter.
the class SerializationFactory method getKryo.
/**
* Get kryo based on conf
* @param conf the config
* @return Kryo
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static Kryo getKryo(Map conf) {
IKryoFactory kryoFactory = (IKryoFactory) Utils.newInstance((String) conf.get(Config.TOPOLOGY_KRYO_FACTORY));
Kryo k = kryoFactory.getKryo(conf);
k.register(byte[].class);
k.register(ListDelegate.class);
k.register(ArrayList.class, new ArrayListSerializer());
k.register(HashMap.class, new HashMapSerializer());
k.register(HashSet.class, new HashSetSerializer());
k.register(BigInteger.class, new BigIntegerSerializer());
// k.register(TransactionAttempt.class);
k.register(Values.class);
// k.register(backtype.storm.metric.api.IMetricsConsumer.DataPoint.class);
// k.register(backtype.storm.metric.api.IMetricsConsumer.TaskInfo.class);
/*
try {
JavaBridge.registerPrimitives(k);
JavaBridge.registerCollections(k);
} catch(Exception e) {
throw new RuntimeException(e);
}
*/
Map<String, String> registrations = normalizeKryoRegister(conf);
kryoFactory.preRegister(k, conf);
boolean skipMissing = (Boolean) conf.get(Config.TOPOLOGY_SKIP_MISSING_KRYO_REGISTRATIONS);
for (String klassName : registrations.keySet()) {
String serializerClassName = registrations.get(klassName);
try {
Class klass = Class.forName(klassName);
Class serializerClass = null;
if (serializerClassName != null) {
serializerClass = Class.forName(serializerClassName);
}
LOG.info("Doing kryo.register for class " + klass);
if (serializerClass == null) {
k.register(klass);
} else {
k.register(klass, resolveSerializerInstance(k, klass, serializerClass));
}
} catch (ClassNotFoundException e) {
if (skipMissing) {
LOG.info("Could not find serialization or class for " + serializerClassName + ". Skipping registration...");
} else {
throw new RuntimeException(e);
}
}
}
kryoFactory.postRegister(k, conf);
if (conf.get(Config.TOPOLOGY_KRYO_DECORATORS) != null) {
for (String klassName : (List<String>) conf.get(Config.TOPOLOGY_KRYO_DECORATORS)) {
try {
Class klass = Class.forName(klassName);
IKryoDecorator decorator = (IKryoDecorator) klass.newInstance();
decorator.decorate(k);
} catch (ClassNotFoundException e) {
if (skipMissing) {
LOG.info("Could not find kryo decorator named " + klassName + ". Skipping registration...");
} else {
throw new RuntimeException(e);
}
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
kryoFactory.postDecorate(k, conf);
return k;
}
use of com.esotericsoftware.kryo.Kryo in project Dempsy by Dempsy.
the class TestDefaultSerializer method testChildClassSerializationWithRegistrationAndOptimization.
@Test
public void testChildClassSerializationWithRegistrationAndOptimization() throws Throwable {
KryoSerializer<Object> ser = new KryoSerializer<Object>(defaultMock3Optimizer);
JavaSerializer<Object> serJ = new JavaSerializer<Object>();
KryoSerializer<Object> serR = new KryoSerializer<Object>(defaultMock3Optimizer, new Registration(MockClass.class.getName(), 10));
KryoSerializer<Object> serRR = new KryoSerializer<Object>(defaultMock3Optimizer, new Registration(MockClass.class.getName(), 10), new Registration(Mock3.class.getName(), 11));
KryoSerializer<Object> serRROb = new KryoSerializer<Object>(defaultMock3Optimizer, new Registration(MockClass.class.getName()), new Registration(Mock3.class.getName()));
KryoSerializer<Object> serRRO = new KryoSerializer<Object>(new Registration(MockClass.class.getName(), 10), new Registration(Mock3.class.getName(), 11), new Registration(UUID.class.getName(), 12));
serRRO.setKryoOptimizer(new KryoOptimizer() {
@Override
public void preRegister(Kryo kryo) {
kryo.setRegistrationRequired(true);
@SuppressWarnings("unchecked") FieldSerializer<MockClass> mockClassSer = (FieldSerializer<MockClass>) kryo.getSerializer(MockClass.class);
mockClassSer.setFieldsCanBeNull(false);
@SuppressWarnings("unchecked") FieldSerializer<Mock2> mock2Ser = (FieldSerializer<Mock2>) kryo.getSerializer(MockClass.class);
mock2Ser.setFixedFieldTypes(true);
mock2Ser.setFieldsCanBeNull(false);
}
@Override
public void postRegister(Kryo kryo) {
com.esotericsoftware.kryo.Registration reg = kryo.getRegistration(UUID.class);
reg.setSerializer(uuidSerializer);
}
});
Mock2 o = new Mock3(1, new MockClass(2, "Hello"));
byte[] data = ser.serialize(o);
byte[] dataJ = serJ.serialize(o);
byte[] dataR = serR.serialize(o);
byte[] dataRR = serRR.serialize(o);
byte[] dataRROb = serRROb.serialize(o);
byte[] dataRRO = serRRO.serialize(o);
assertTrue(dataJ.length > data.length);
assertTrue(dataR.length < data.length);
assertTrue(dataRR.length < dataR.length);
assertTrue(dataRROb.length == dataRR.length);
assertTrue(dataRRO.length <= dataRR.length);
Mock2 o2 = (Mock2) ser.deserialize(data);
assertEquals(1, o2.getInt());
assertEquals(new MockClass(2, "Hello"), o2.getMockClass());
assertTrue(o2 instanceof Mock3);
assertEquals(1, ((Mock3) o2).myI);
assertEquals(o, serR.deserialize(dataR));
assertEquals(o, serRR.deserialize(dataRR));
assertEquals(o, serRRO.deserialize(dataRRO));
}
use of com.esotericsoftware.kryo.Kryo in project twitter4j by yusuke.
the class KryoSerializationTest method setUp.
protected void setUp() throws Exception {
super.setUp();
kryo = new Kryo();
kryo.register(java.lang.String[].class);
kryo.register(long[].class);
kryo.register(java.util.Date.class);
kryo.register(twitter4j.HashtagEntity[].class);
kryo.register(twitter4j.URLEntity[].class);
kryo.register(twitter4j.MediaEntity[].class);
kryo.register(twitter4j.SymbolEntity[].class);
kryo.register(twitter4j.UserMentionEntity[].class);
kryo.register(Class.forName("twitter4j.UserJSONImpl"));
kryo.register(Class.forName("twitter4j.StatusJSONImpl"));
}
use of com.esotericsoftware.kryo.Kryo in project jetcache by alibaba.
the class KryoValueDecoder method apply.
@Override
public Object apply(byte[] buffer) {
try {
checkHeader(buffer, KryoValueEncoder.IDENTITY_NUMBER);
ByteArrayInputStream in = new ByteArrayInputStream(buffer, 4, buffer.length - 4);
Input input = new Input(in);
Kryo kryo = KryoValueEncoder.kryoThreadLocal.get();
return kryo.readClassAndObject(input);
} catch (Exception e) {
throw new CacheEncodeException("Kryo decode error: " + e.getMessage(), e);
}
}
Aggregations