package org.gbif.nub.lookup.straight;
import org.gbif.api.vocabulary.Kingdom;
import org.gbif.api.vocabulary.Rank;
import org.gbif.nub.mapdb.ImmutableListSerializer;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.pool.KryoFactory;
import it.unimi.dsi.fastutil.ints.Int2IntArrayMap;
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
/**
* A kryo factory that knows how to serde the LookupUsage class
*/
public class LookupKryoFactory implements KryoFactory {
@Override
public Kryo create() {
Kryo kryo = new Kryo();
kryo.setRegistrationRequired(true);
// model class(es)
kryo.register(LookupUsage.class);
// fastutils
kryo.register(Int2IntArrayMap.class);
kryo.register(Int2IntOpenHashMap.class);
// java & commons
kryo.register(Date.class);
kryo.register(HashMap.class);
kryo.register(HashSet.class);
kryo.register(ArrayList.class);
ImmutableListSerializer.registerSerializers(kryo);
// enums
kryo.register(Rank.class);
kryo.register(Kingdom.class);
return kryo;
}
}