in src/main/java/software/amazon/cloudformation/proxy/aws/SdkPojoDeserializer.java [69:105]
private SdkPojo readPojo(final SdkPojo pojo, JsonParser p, DeserializationContext ctxt) throws IOException {
if (!p.isExpectedStartObjectToken()) {
throw new JsonMappingException(p, "Expected to be in START_OBJECT got " + p.currentToken());
}
Map<String, SdkField<?>> fieldMap = getFields(pojo);
JsonToken next = p.nextToken();
ObjectMapper codec = (ObjectMapper) p.getCodec();
while (next != JsonToken.END_OBJECT) {
/*
* if (next != JsonToken.FIELD_NAME) { throw new JsonMappingException(p,
* "Expecting to get FIELD_NAME token, got " + next); }
*/
String fieldName = p.getCurrentName();
SdkField<?> sdkField = fieldMap.get(fieldName);
if (sdkField == null) {
if (codec.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)) {
throw new JsonMappingException(p, "Unknown property encountered " + fieldName);
}
// we need to skip this
next = p.nextToken();
if (next == JsonToken.START_ARRAY || next == JsonToken.START_OBJECT) {
p.skipChildren();
}
// all others, just proceed to next token
next = p.nextToken();
continue;
}
// progress to next thing to read
p.nextToken();
// Okay we need to parse the field and set it
Object value = readObject(sdkField, p, ctxt);
sdkField.set(pojo, value);
next = p.nextToken();
}
return pojo instanceof SdkBuilder ? (SdkPojo) ((SdkBuilder) pojo).build() : pojo;
}