package org.sufficientlysecure.keychain.util; import java.nio.ByteBuffer; import java.util.Collections; import java.util.HashMap; import java.util.Map; import android.os.Parcel; import com.ryanharter.auto.value.parcel.TypeAdapter; public class ByteMapParcelAdapter implements TypeAdapter> { @Override public Map fromParcel(Parcel source) { int count = source.readInt(); Map result = new HashMap<>(count); for (int i = 0; i < count; i++) { byte[] key = source.createByteArray(); byte[] value = source.createByteArray(); result.put(ByteBuffer.wrap(key), value); } return Collections.unmodifiableMap(result); } @Override public void toParcel(Map value, Parcel dest) { dest.writeInt(value.size()); for (Map.Entry entry : value.entrySet()) { dest.writeByteArray(entry.getKey().array()); dest.writeByteArray(entry.getValue()); } } }