private SdkPojo readPojo()

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;
    }