package org.calrissian.flowbox.model.kryo; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.Serializer; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import org.calrissian.flowbox.model.Event; import org.calrissian.flowbox.model.Tuple; import java.util.Set; public class EventSerializer extends Serializer<Event> { @Override public void write(Kryo kryo, Output output, Event event) { output.writeString(event.getId()); output.writeLong(event.getTimestamp()); output.writeInt(event.getTuples().size()); for(Set<Tuple> tupleSet : event.getTuples().values()) { for(Tuple tuple : tupleSet) { output.writeString(tuple.getKey()); output.writeString(tuple.getValue().toString()); } } } @Override public Event read(Kryo kryo, Input input, Class<Event> eventClass) { String uuid = input.readString(); long timestamp = input.readLong(); Event event = new Event(uuid, timestamp); int numTuples = input.readInt(); for(int i = 0; i < numTuples; i++) event.put(new Tuple(input.readString(), input.readString())); return event; } }