in accord-maelstrom/src/main/java/accord/maelstrom/Json.java [432:477]
public Writes read(JsonReader in) throws IOException
{
if (in.peek() == JsonToken.NULL)
return null;
in.beginObject();
TxnId txnId = null;
Timestamp executeAt = null;
Keys keys = null;
List<Value> writes = null;
while (in.hasNext())
{
switch (in.nextName())
{
default: throw new IllegalStateException();
case "txnId":
txnId = GSON.fromJson(in, TxnId.class);
break;
case "executeAt":
executeAt = GSON.fromJson(in, Timestamp.class);
break;
case "keys":
keys = KEYS_ADAPTER.read(in);
break;
case "writes":
writes = new ArrayList<>();
in.beginArray();
while (in.hasNext())
writes.add(Value.read(in));
in.endArray();
break;
}
}
in.endObject();
MaelstromWrite write = new MaelstromWrite();
if (writes != null)
{
for (int i = 0 ; i < writes.size() ; ++i)
{
if (writes.get(i) != null)
write.put(keys.get(i), writes.get(i));
}
}
return new Writes(txnId, executeAt, keys, write);
}