Search in sources :

Example 61 with Kryo

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);
}
Also used : Input(com.esotericsoftware.kryo.io.Input) Output(com.esotericsoftware.kryo.io.Output) Kryo(com.esotericsoftware.kryo.Kryo)

Example 62 with Kryo

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;
}
Also used : ArrayListSerializer(backtype.storm.serialization.types.ArrayListSerializer) HashMapSerializer(backtype.storm.serialization.types.HashMapSerializer) HashSetSerializer(backtype.storm.serialization.types.HashSetSerializer) BigIntegerSerializer(com.esotericsoftware.kryo.serializers.DefaultSerializers.BigIntegerSerializer) ArrayList(java.util.ArrayList) List(java.util.List) Kryo(com.esotericsoftware.kryo.Kryo)

Example 63 with Kryo

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));
}
Also used : JavaSerializer(com.nokia.dempsy.serialization.java.JavaSerializer) KryoSerializer(com.nokia.dempsy.serialization.kryo.KryoSerializer) FieldSerializer(com.esotericsoftware.kryo.serializers.FieldSerializer) Registration(com.nokia.dempsy.serialization.kryo.Registration) KryoOptimizer(com.nokia.dempsy.serialization.kryo.KryoOptimizer) UUID(java.util.UUID) Kryo(com.esotericsoftware.kryo.Kryo) Test(org.junit.Test)

Example 64 with Kryo

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"));
}
Also used : Kryo(com.esotericsoftware.kryo.Kryo)

Example 65 with Kryo

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);
    }
}
Also used : Input(com.esotericsoftware.kryo.io.Input) ByteArrayInputStream(java.io.ByteArrayInputStream) Kryo(com.esotericsoftware.kryo.Kryo)

Aggregations

Kryo (com.esotericsoftware.kryo.Kryo)94 Input (com.esotericsoftware.kryo.io.Input)37 Output (com.esotericsoftware.kryo.io.Output)34 Test (org.junit.Test)26 ByteArrayOutputStream (java.io.ByteArrayOutputStream)21 ByteArrayInputStream (java.io.ByteArrayInputStream)17 StdInstantiatorStrategy (org.objenesis.strategy.StdInstantiatorStrategy)14 File (java.io.File)10 CollectorTestSink (org.apache.apex.malhar.lib.testbench.CollectorTestSink)10 List (java.util.List)9 Map (java.util.Map)8 Test (org.testng.annotations.Test)8 ArrayList (java.util.ArrayList)7 Path (org.apache.hadoop.fs.Path)7 BigIntegerSerializer (com.esotericsoftware.kryo.serializers.DefaultSerializers.BigIntegerSerializer)5 FileNotFoundException (java.io.FileNotFoundException)5 IOException (java.io.IOException)5 BaseTest (org.broadinstitute.hellbender.utils.test.BaseTest)5 DefaultPartition (com.datatorrent.api.DefaultPartition)4 CountDownLatch (java.util.concurrent.CountDownLatch)4