in src/main/java/software/amazon/cloudformation/proxy/StdCallbackContext.java [135:157]
private Map<String, Object> readMap(Class<?> type, JsonParser p, DeserializationContext ctxt) throws IOException {
if (!p.isExpectedStartObjectToken()) {
throw new JsonParseException(p, "Expected start of object for Map got " + p.currentToken());
}
try {
Map<String, Object> value = (Map<String, Object>) type.getDeclaredConstructor().newInstance();
JsonToken next = p.nextToken();
while (next != JsonToken.END_OBJECT) {
if (next != JsonToken.FIELD_NAME) {
throw new JsonParseException(p, "Key was not present " + next);
}
String key = p.currentName();
p.nextToken(); // position to next
Object val = readObject(p, ctxt);
value.put(key, val);
next = p.nextToken();
}
return value;
} catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
throw new JsonMappingException(p, "Can not create empty map for class " + type + " @ " + p.getCurrentLocation(),
e);
}
}