Package co.paralleluniverse.io.serialization.kryo

Source Code of co.paralleluniverse.io.serialization.kryo.KryoUtil

/*
* Copyright (c) 2013-2014, Parallel Universe Software Co. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*   or (per the licensee's choosing)
* under the terms of the GNU Lesser General Public License version 3.0
* as published by the Free Software Foundation.
*/
package co.paralleluniverse.io.serialization.kryo;

import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import de.javakaffee.kryoserializers.ArraysAsListSerializer;
import de.javakaffee.kryoserializers.GregorianCalendarSerializer;
import de.javakaffee.kryoserializers.JdkProxySerializer;
import de.javakaffee.kryoserializers.SynchronizedCollectionsSerializer;
import de.javakaffee.kryoserializers.UnmodifiableCollectionsSerializer;
import java.io.Externalizable;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import org.objenesis.strategy.SerializingInstantiatorStrategy;

/**
*
* @author pron
*/
public final class KryoUtil {
    public static Kryo newKryo() {
        Kryo kryo = new ReplaceableObjectKryo();

        kryo.setRegistrationRequired(false);
        kryo.setInstantiatorStrategy(new SerializingInstantiatorStrategy());
        registerCommonClasses(kryo);
        return kryo;
    }

    public static void registerCommonClasses(Kryo kryo) {
        kryo.register(boolean[].class);
        kryo.register(byte[].class);
        kryo.register(short[].class);
        kryo.register(char[].class);
        kryo.register(int[].class);
        kryo.register(float[].class);
        kryo.register(long[].class);
        kryo.register(double[].class);
        kryo.register(String[].class);
        kryo.register(int[][].class);
        kryo.register(java.util.ArrayList.class);
        kryo.register(java.util.LinkedList.class);
        kryo.register(java.util.HashMap.class);
        kryo.register(java.util.LinkedHashMap.class);
        kryo.register(java.util.TreeMap.class);
        kryo.register(java.util.EnumMap.class);
        kryo.register(java.util.HashSet.class);
        kryo.register(java.util.TreeSet.class);
        kryo.register(java.util.EnumSet.class);

        kryo.register(java.util.Arrays.asList("").getClass(), new ArraysAsListSerializer());
//        kryo.register(java.util.Collections.EMPTY_LIST.getClass(), new CollectionsEmptyListSerializer());
//        kryo.register(java.util.Collections.EMPTY_MAP.getClass(), new CollectionsEmptyMapSerializer());
//        kryo.register(java.util.Collections.EMPTY_SET.getClass(), new CollectionsEmptySetSerializer());
//        kryo.register(java.util.Collections.singletonList("").getClass(), new CollectionsSingletonListSerializer());
//        kryo.register(java.util.Collections.singleton("").getClass(), new CollectionsSingletonSetSerializer());
//        kryo.register(java.util.Collections.singletonMap("", "").getClass(), new CollectionsSingletonMapSerializer());
        kryo.register(java.util.GregorianCalendar.class, new GregorianCalendarSerializer());
        kryo.register(java.lang.reflect.InvocationHandler.class, new JdkProxySerializer());
        UnmodifiableCollectionsSerializer.registerSerializers(kryo);
        SynchronizedCollectionsSerializer.registerSerializers(kryo);
        kryo.addDefaultSerializer(Externalizable.class, new ExternalizableKryoSerializer());
    }

    public static ObjectOutput asObjectOutput(Output output, Kryo kryo) {
        return new KryoObjectOutputStream(output, kryo);
    }

    public static ObjectInput asObjectInput(Input input, Kryo kryo) {
        return new KryoObjectInputStream(input, kryo);
    }

    private KryoUtil() {
    }
}
TOP

Related Classes of co.paralleluniverse.io.serialization.kryo.KryoUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.