package de.javakaffee.kryoserializers.guava; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import com.google.common.collect.ArrayListMultimap; /** * A kryo {@link Serializer} for guava-libraries {@link ArrayListMultimap}. * This does not yet support {@link Kryo#copy(java.lang.Object)}. */ public class ArrayListMultimapSerializer extends MultimapSerializerBase<Object, Object, ArrayListMultimap<Object, Object>> { private static final boolean DOES_NOT_ACCEPT_NULL = false; private static final boolean IMMUTABLE = false; public ArrayListMultimapSerializer() { super(DOES_NOT_ACCEPT_NULL, IMMUTABLE); } @Override public void write(Kryo kryo, Output output, ArrayListMultimap<Object, Object> multimap) { writeMultimap(kryo, output, multimap); } @Override public ArrayListMultimap<Object, Object> read(Kryo kryo, Input input, Class<ArrayListMultimap<Object, Object>> type) { final ArrayListMultimap<Object, Object> multimap = ArrayListMultimap.create(); readMultimap(kryo, input, multimap); return multimap; } /** * Creates a new {@link ArrayListMultimapSerializer} and registers its serializer. * * @param kryo the {@link Kryo} instance to set the serializer on */ public static void registerSerializers(final Kryo kryo) { final ArrayListMultimapSerializer serializer = new ArrayListMultimapSerializer(); kryo.register(ArrayListMultimap.class, serializer); } }