diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/BaseClientBuilderClass.java b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/BaseClientBuilderClass.java index 1ca3f9b38ba5..7d64b1586492 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/BaseClientBuilderClass.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/BaseClientBuilderClass.java @@ -81,7 +81,6 @@ import software.amazon.awssdk.identity.spi.IdentityProvider; import software.amazon.awssdk.identity.spi.IdentityProviders; import software.amazon.awssdk.identity.spi.TokenIdentity; -import software.amazon.awssdk.protocols.json.internal.unmarshall.SdkClientJsonProtocolAdvancedOption; import software.amazon.awssdk.regions.ServiceMetadataAdvancedOption; import software.amazon.awssdk.utils.AttributeMap; import software.amazon.awssdk.utils.CollectionUtils; @@ -508,13 +507,6 @@ private MethodSpec finalizeServiceConfigurationMethod() { .addCode(" .fipsEnabled(c.get($T.FIPS_ENDPOINT_ENABLED))", AwsClientOption.class) .addCode(" .build());"); - if (model.getMetadata().isJsonProtocol()) { - if (model.getCustomizationConfig().getEnableFastUnmarshaller()) { - builder.addStatement("builder.option($1T.ENABLE_FAST_UNMARSHALLER, true)", - SdkClientJsonProtocolAdvancedOption.class); - } - } - if (hasRequestAlgorithmMember(model) || hasResponseAlgorithms(model)) { builder.addStatement("$T clientConfig = config", SdkClientConfiguration.class); diff --git a/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/BaseAwsJsonProtocolFactory.java b/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/BaseAwsJsonProtocolFactory.java index 1f77ba1246e6..67e3bb13b479 100644 --- a/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/BaseAwsJsonProtocolFactory.java +++ b/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/BaseAwsJsonProtocolFactory.java @@ -53,7 +53,6 @@ import software.amazon.awssdk.protocols.json.internal.unmarshall.JsonProtocolUnmarshaller; import software.amazon.awssdk.protocols.json.internal.unmarshall.JsonResponseHandler; import software.amazon.awssdk.protocols.json.internal.unmarshall.ProtocolUnmarshallDependencies; -import software.amazon.awssdk.protocols.json.internal.unmarshall.SdkClientJsonProtocolAdvancedOption; @SdkProtectedApi public abstract class BaseAwsJsonProtocolFactory { @@ -88,16 +87,7 @@ protected BaseAwsJsonProtocolFactory(Builder builder) { this.customErrorCodeFieldName = builder.customErrorCodeFieldName; this.hasAwsQueryCompatible = builder.hasAwsQueryCompatible; this.clientConfiguration = builder.clientConfiguration; - Boolean enableFastUnmarshalling = false; - if (clientConfiguration != null) { - enableFastUnmarshalling = - clientConfiguration.option(SdkClientJsonProtocolAdvancedOption.ENABLE_FAST_UNMARSHALLER); - if (enableFastUnmarshalling == null) { - enableFastUnmarshalling = false; - } - } this.protocolUnmarshaller = JsonProtocolUnmarshaller.builder() - .enableFastUnmarshalling(enableFastUnmarshalling) .protocolUnmarshallDependencies( builder.protocolUnmarshallDependencies.get()) .build(); diff --git a/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/unmarshall/JsonProtocolUnmarshaller.java b/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/unmarshall/JsonProtocolUnmarshaller.java index 526d205ca221..4ae55937e3ec 100644 --- a/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/unmarshall/JsonProtocolUnmarshaller.java +++ b/core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/unmarshall/JsonProtocolUnmarshaller.java @@ -48,7 +48,6 @@ import software.amazon.awssdk.protocols.json.internal.MarshallerUtil; import software.amazon.awssdk.protocols.json.internal.unmarshall.document.DocumentUnmarshaller; import software.amazon.awssdk.protocols.jsoncore.JsonNode; -import software.amazon.awssdk.protocols.jsoncore.JsonNodeParser; import software.amazon.awssdk.protocols.jsoncore.JsonValueNodeFactory; import software.amazon.awssdk.utils.Lazy; import software.amazon.awssdk.utils.builder.Buildable; @@ -59,42 +58,24 @@ */ @SdkInternalApi @ThreadSafe -public class JsonProtocolUnmarshaller { +public final class JsonProtocolUnmarshaller { private static final Lazy DEFAULT_DEPENDENCIES = new Lazy<>(JsonProtocolUnmarshaller::newProtocolUnmarshallDependencies); private final JsonUnmarshallerRegistry registry; private final JsonUnmarshallingParser unmarshallingParser; - private final JsonNodeParser parser; private JsonProtocolUnmarshaller(Builder builder) { ProtocolUnmarshallDependencies dependencies = builder.protocolUnmarshallDependencies; this.registry = dependencies.jsonUnmarshallerRegistry(); - if (builder.enableFastUnmarshalling) { - this.unmarshallingParser = JsonUnmarshallingParser.builder() - .jsonValueNodeFactory(dependencies.nodeValueFactory()) - .jsonFactory(dependencies.jsonFactory()) - .unmarshallerRegistry(dependencies.jsonUnmarshallerRegistry()) - .defaultTimestampFormat(dependencies.timestampFormats() - .get(MarshallLocation.PAYLOAD)) - - .build(); - this.parser = null; - } else { - this.unmarshallingParser = null; - this.parser = createParser(builder, dependencies); - } - } + this.unmarshallingParser = JsonUnmarshallingParser.builder() + .jsonValueNodeFactory(dependencies.nodeValueFactory()) + .jsonFactory(dependencies.jsonFactory()) + .unmarshallerRegistry(dependencies.jsonUnmarshallerRegistry()) + .defaultTimestampFormat(dependencies.timestampFormats() + .get(MarshallLocation.PAYLOAD)) - private JsonNodeParser createParser(Builder builder, ProtocolUnmarshallDependencies dependencies) { - if (builder.parser != null) { - return builder.parser; - } - return JsonNodeParser - .builder() - .jsonFactory(dependencies.jsonFactory()) - .jsonValueNodeFactory(dependencies.nodeValueFactory()) - .build(); + .build(); } public static DefaultProtocolUnmarshallDependencies defaultProtocolUnmarshallDependencies() { @@ -239,15 +220,6 @@ public T unmarshall(JsonUnmarshallerContext context, public TypeT unmarshall(SdkPojo sdkPojo, SdkHttpFullResponse response) throws IOException { - if (this.unmarshallingParser != null) { - return fastUnmarshall(sdkPojo, response); - } - JsonNode jsonNode = hasJsonPayload(sdkPojo, response) ? parser.parse(response.content().get()) : null; - return unmarshall(sdkPojo, response, jsonNode); - } - - private TypeT fastUnmarshall(SdkPojo sdkPojo, - SdkHttpFullResponse response) throws IOException { if (!hasJsonPayload(sdkPojo, response)) { return unmarshallResponse(sdkPojo, response); } @@ -453,23 +425,11 @@ public static JsonUnmarshallerRegistry timestampFormatRegistryFactory( * Builder for {@link JsonProtocolUnmarshaller}. */ public static final class Builder { - - private JsonNodeParser parser; private ProtocolUnmarshallDependencies protocolUnmarshallDependencies; - private boolean enableFastUnmarshalling = false; private Builder() { } - /** - * @param parser JSON parser to use. - * @return This builder for method chaining. - */ - public Builder parser(JsonNodeParser parser) { - this.parser = parser; - return this; - } - /** * @param formats The default timestamp formats for each location in the HTTP response. * @return This builder for method chaining. @@ -491,15 +451,6 @@ public Builder protocolUnmarshallDependencies( return this; } - /** - * @param enableFastUnmarshalling Whether to enable the fast unmarshalling codepath. Default to {@code false}. - * @return This builder for method chaining. - */ - public Builder enableFastUnmarshalling(boolean enableFastUnmarshalling) { - this.enableFastUnmarshalling = enableFastUnmarshalling; - return this; - } - /** * @return New instance of {@link JsonProtocolUnmarshaller}. */ diff --git a/test/architecture-tests/src/test/java/software/amazon/awssdk/archtests/InternalApiBoundaryTest.java b/test/architecture-tests/src/test/java/software/amazon/awssdk/archtests/InternalApiBoundaryTest.java index 3b2cf7f78546..e4fc69505102 100644 --- a/test/architecture-tests/src/test/java/software/amazon/awssdk/archtests/InternalApiBoundaryTest.java +++ b/test/architecture-tests/src/test/java/software/amazon/awssdk/archtests/InternalApiBoundaryTest.java @@ -32,14 +32,12 @@ import java.util.stream.Collectors; import org.junit.jupiter.api.Test; import software.amazon.awssdk.annotations.SdkInternalApi; -import software.amazon.awssdk.annotations.SdkProtectedApi; import software.amazon.awssdk.awscore.internal.AwsProtocolMetadata; import software.amazon.awssdk.awscore.internal.AwsServiceProtocol; import software.amazon.awssdk.core.internal.interceptor.trait.RequestCompression; import software.amazon.awssdk.core.internal.util.MetricUtils; import software.amazon.awssdk.core.internal.waiters.WaiterAttribute; import software.amazon.awssdk.http.auth.aws.internal.signer.util.ChecksumUtil; -import software.amazon.awssdk.protocols.json.internal.unmarshall.SdkClientJsonProtocolAdvancedOption; import software.amazon.awssdk.utils.internal.EnumUtils; import software.amazon.awssdk.utils.internal.SystemSettingUtils; @@ -57,7 +55,7 @@ public class InternalApiBoundaryTest { private static final Set> ALLOWED_INTERNAL_API_ACROSS_MODULE_SUPPRESSION = new HashSet<>( Arrays.asList(WaiterAttribute.class, RequestCompression.class, RequestCompression.Builder.class, EnumUtils.class, AwsServiceProtocol.class, AwsProtocolMetadata.class, MetricUtils.class, SystemSettingUtils.class, - ChecksumUtil.class, SdkClientJsonProtocolAdvancedOption.class)); + ChecksumUtil.class)); @Test void internalApi_shouldNotUsedAcrossModule() { diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/JsonCodec.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/JsonCodec.java index 7d85997d59b7..d672c239527f 100644 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/JsonCodec.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/JsonCodec.java @@ -67,7 +67,6 @@ public SdkPojo unmarshall(AwsJsonProtocol protocol, SdkPojo pojo, byte[] bytes) JsonProtocolUnmarshaller unmarshaller = JsonProtocolUnmarshaller .builder() - .enableFastUnmarshalling(true) .protocolUnmarshallDependencies(behavior.protocolUnmarshallDependencies()) .build(); SdkHttpFullResponse response = SdkHttpFullResponse diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V2DynamoDbAttributeValue.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V2DynamoDbAttributeValue.java index 71826708417c..0b770c8d1d08 100755 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V2DynamoDbAttributeValue.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V2DynamoDbAttributeValue.java @@ -43,7 +43,6 @@ import software.amazon.awssdk.protocols.json.AwsJsonProtocol; import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory; import software.amazon.awssdk.protocols.json.JsonOperationMetadata; -import software.amazon.awssdk.protocols.json.internal.unmarshall.SdkClientJsonProtocolAdvancedOption; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.BackupInUseException; import software.amazon.awssdk.services.dynamodb.model.BackupNotFoundException; @@ -80,7 +79,6 @@ public class V2DynamoDbAttributeValue { .clientConfiguration(SdkClientConfiguration .builder() .option(SdkClientOption.ENDPOINT, URI.create("https://localhost")) - .option(SdkClientJsonProtocolAdvancedOption.ENABLE_FAST_UNMARSHALLER, true) .build()) .defaultServiceExceptionSupplier(DynamoDbException::builder) .protocol(AwsJsonProtocol.AWS_JSON)