private Object simpleValueFor()

in core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/unmarshall/JsonUnmarshallingParser.java [265:316]


    private Object simpleValueFor(
        SdkField<?> field,
        MarshallingKnownType knownType,
        JsonUnmarshallerContext context,
        JsonParser parser,
        JsonToken lookAhead
    ) throws IOException {
        if (lookAhead == JsonToken.VALUE_NULL) {
            return null;
        }
        switch (knownType) {
            case INTEGER:
                expect(lookAhead, JsonToken.VALUE_NUMBER_INT);
                return parser.getIntValue();
            case LONG:
                expect(lookAhead, JsonToken.VALUE_NUMBER_INT);
                return parser.getLongValue();
            case SHORT:
                expect(lookAhead, JsonToken.VALUE_NUMBER_INT);
                return parser.getShortValue();
            case BYTE:
                expect(lookAhead, JsonToken.VALUE_NUMBER_INT);
                return parser.getByteValue();
            case FLOAT:
                expect(lookAhead, JsonToken.VALUE_NUMBER_INT, JsonToken.VALUE_NUMBER_FLOAT);
                return parser.getFloatValue();
            case DOUBLE:
                expect(lookAhead, JsonToken.VALUE_NUMBER_INT, JsonToken.VALUE_NUMBER_FLOAT);
                return parser.getDoubleValue();
            case BIG_DECIMAL:
                expect(lookAhead, JsonToken.VALUE_NUMBER_INT, JsonToken.VALUE_NUMBER_FLOAT);
                return parser.getDecimalValue();
            case BOOLEAN:
                expect(lookAhead, JsonToken.VALUE_FALSE, JsonToken.VALUE_TRUE);
                return parser.getBooleanValue();
            case INSTANT:
                return instantValueFor(field, parser, context, lookAhead);
            case STRING:
                // At least one protocol tests expects a floating number
                // to be parsed as string, so we can't assert that:
                // expect(lookAhead, JsonToken.VALUE_STRING);
                return parser.getText();
            case SDK_BYTES:
                if (lookAhead == JsonToken.VALUE_EMBEDDED_OBJECT) {
                    return SdkBytes.fromByteArray((byte[]) parser.getEmbeddedObject());
                }
                expect(lookAhead, JsonToken.VALUE_STRING);
                return SdkBytes.fromByteArray(BinaryUtils.fromBase64(parser.getText()));
            default:
                throw new JsonParseException("unexpected token, expecting token for: " + knownType + ", got: " + lookAhead);
        }
    }