package org.kvj.vimtouch.ext.impl.write; import java.util.Map; import java.util.Map.Entry; import org.kvj.vimtouch.ext.FieldWriter; import org.kvj.vimtouch.ext.OutgoingTransfer; import org.kvj.vimtouch.ext.Transferable.FieldType; public class MapFieldWriter<T> implements FieldWriter<Map<String, T>> { private FieldWriter<T> itemWriter; private StringFieldWriter nameWriter = new StringFieldWriter(); public MapFieldWriter(FieldWriter<T> itemWriter) { this.itemWriter = itemWriter; } @Override public FieldType getType() { return FieldType.Map; } @Override public void write(OutgoingTransfer t, Map<String, T> value) { t.writeInt(value.size()); for (Entry<String, T> item : value.entrySet()) { t.writeField(null, item.getKey(), nameWriter); t.writeField(null, item.getValue(), itemWriter); } } }