in hollow-jsonadapter/src/main/java/com/netflix/hollow/jsonadapter/HollowJsonAdapter.java [213:262]
private void addPassthroughField(JsonParser parser, FlatRecordWriter flatRecordWriter, JsonToken token, String fieldName, PassthroughWriteRecords rec) throws IOException {
rec.passthroughMapKeyWriteRecord.reset();
rec.passthroughMapKeyWriteRecord.setString("value", fieldName);
int keyOrdinal = addRecord("MapKey", rec.passthroughMapKeyWriteRecord, flatRecordWriter);
switch(token) {
case START_ARRAY:
rec.multiValuePassthroughListRec.reset();
while(token != JsonToken.END_ARRAY) {
switch(token) {
case VALUE_FALSE:
case VALUE_TRUE:
case VALUE_NUMBER_INT:
case VALUE_NUMBER_FLOAT:
case VALUE_STRING:
rec.passthroughMapValueWriteRecord.reset();
rec.passthroughMapValueWriteRecord.setString("value", parser.getValueAsString());
int elementOrdinal = addRecord("String", rec.passthroughMapValueWriteRecord, flatRecordWriter);
rec.multiValuePassthroughListRec.addElement(elementOrdinal);
break;
default:
break;
}
token = parser.nextToken();
}
int valueListOrdinal = addRecord("ListOfString", rec.multiValuePassthroughListRec, flatRecordWriter);
rec.multiValuePassthroughMapRec.addEntry(keyOrdinal, valueListOrdinal);
break;
case VALUE_FALSE:
case VALUE_TRUE:
case VALUE_NUMBER_INT:
case VALUE_NUMBER_FLOAT:
case VALUE_STRING:
rec.passthroughMapValueWriteRecord.reset();
rec.passthroughMapValueWriteRecord.setString("value", parser.getValueAsString());
int valueOrdinal = addRecord("String", rec.passthroughMapValueWriteRecord, flatRecordWriter);
rec.singleValuePassthroughMapRec.addEntry(keyOrdinal, valueOrdinal);
break;
case VALUE_NULL:
break;
case START_OBJECT:
skipObject(parser);
break;
default:
break;
}
}