Package io.lumify.storm

Source Code of io.lumify.storm.DefaultKryoFactory

package io.lumify.storm;

import backtype.storm.Config;
import backtype.storm.serialization.IKryoFactory;
import backtype.storm.serialization.SerializableSerializer;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.Serializer;

import java.util.Map;

public class DefaultKryoFactory implements IKryoFactory {

    public static class KryoSerializableDefault extends Kryo {
        boolean _override = false;

        public void overrideDefault(boolean value) {
            _override = value;
        }

        @Override
        public Serializer getDefaultSerializer(Class type) {
            if (_override) {
                return new SerializableSerializer();
            } else {
                return super.getDefaultSerializer(type);
            }
        }
    }

    @Override
    public Kryo getKryo(Map conf) {
        KryoSerializableDefault k = new KryoSerializableDefault();
        k.setRegistrationRequired(!((Boolean) conf.get(Config.TOPOLOGY_FALL_BACK_ON_JAVA_SERIALIZATION)));
        k.setReferences(false);
        return k;
    }

    @Override
    public void preRegister(Kryo k, Map conf) {
    }

    public void postRegister(Kryo k, Map conf) {
        ((KryoSerializableDefault) k).overrideDefault(true);
    }

    @Override
    public void postDecorate(Kryo k, Map conf) {
    }
}
TOP

Related Classes of io.lumify.storm.DefaultKryoFactory

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.