package de.javakaffee.kryoserializers.guava; import java.util.Map; 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.Multimap; public abstract class MultimapSerializerBase<K, V, T extends Multimap<K, V>> extends Serializer<T> { public MultimapSerializerBase(boolean acceptsNull, boolean immutable) { super(acceptsNull, immutable); } protected void writeMultimap(Kryo kryo, Output output, Multimap<K, V> multimap) { output.writeInt(multimap.size(), true); for (final Map.Entry<K, V> entry : multimap.entries()) { kryo.writeClassAndObject(output, entry.getKey()); kryo.writeClassAndObject(output, entry.getValue()); } } protected void readMultimap(Kryo kryo, Input input, Multimap<K, V> multimap) { final int size = input.readInt(true); for (int i = 0; i < size; ++i) { final K key = (K) kryo.readClassAndObject(input); final V value = (V) kryo.readClassAndObject(input); multimap.put(key, value); } } }