package backtype.storm.serialization;
import backtype.storm.Config;
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) {
}
}