Skip to content

Commit 5ba7741

Browse files
davidh44L-Applin
authored andcommitted
Revert "Move QueryParametersToBodyInterceptor to front of interceptor chain (#4109)"
This reverts commit c7c731f.
1 parent ec11a0e commit 5ba7741

File tree

10 files changed

+162
-261
lines changed

10 files changed

+162
-261
lines changed

codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/AsyncClientBuilderClass.java

Lines changed: 20 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,8 @@
1818
import com.squareup.javapoet.ClassName;
1919
import com.squareup.javapoet.MethodSpec;
2020
import com.squareup.javapoet.ParameterizedTypeName;
21-
import com.squareup.javapoet.TypeName;
2221
import com.squareup.javapoet.TypeSpec;
2322
import java.net.URI;
24-
import java.util.ArrayList;
25-
import java.util.Collections;
26-
import java.util.List;
2723
import javax.lang.model.element.Modifier;
2824
import software.amazon.awssdk.annotations.SdkInternalApi;
2925
import software.amazon.awssdk.auth.token.credentials.SdkTokenProvider;
@@ -36,9 +32,6 @@
3632
import software.amazon.awssdk.codegen.utils.AuthUtils;
3733
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
3834
import software.amazon.awssdk.core.client.config.SdkClientOption;
39-
import software.amazon.awssdk.core.interceptor.ExecutionInterceptor;
40-
import software.amazon.awssdk.protocols.query.interceptor.QueryParametersToBodyInterceptor;
41-
import software.amazon.awssdk.utils.CollectionUtils;
4235

4336
public class AsyncClientBuilderClass implements ClassSpec {
4437
private final IntermediateModel model;
@@ -126,53 +119,26 @@ private MethodSpec endpointProviderMethod() {
126119
}
127120

128121
private MethodSpec buildClientMethod() {
129-
MethodSpec.Builder b = MethodSpec.methodBuilder("buildClient")
130-
.addAnnotation(Override.class)
131-
.addModifiers(Modifier.PROTECTED, Modifier.FINAL)
132-
.returns(clientInterfaceName)
133-
.addStatement("$T clientConfiguration = super.asyncClientConfiguration()",
134-
SdkClientConfiguration.class);
135-
136-
addQueryProtocolInterceptors(b);
137-
138-
return b.addStatement("this.validateClientOptions(clientConfiguration)")
139-
.addStatement("$T endpointOverride = null", URI.class)
140-
.addCode("if (clientConfiguration.option($T.ENDPOINT_OVERRIDDEN) != null"
141-
+ "&& $T.TRUE.equals(clientConfiguration.option($T.ENDPOINT_OVERRIDDEN))) {"
142-
+ "endpointOverride = clientConfiguration.option($T.ENDPOINT);"
143-
+ "}",
144-
SdkClientOption.class, Boolean.class, SdkClientOption.class, SdkClientOption.class)
145-
.addStatement("$T serviceClientConfiguration = $T.builder()"
146-
+ ".overrideConfiguration(overrideConfiguration())"
147-
+ ".region(clientConfiguration.option($T.AWS_REGION))"
148-
+ ".endpointOverride(endpointOverride)"
149-
+ ".build()",
150-
serviceConfigClassName, serviceConfigClassName, AwsClientOption.class)
151-
.addStatement("return new $T(serviceClientConfiguration, clientConfiguration)", clientClassName)
152-
.build();
153-
}
154-
155-
private MethodSpec.Builder addQueryProtocolInterceptors(MethodSpec.Builder b) {
156-
if (!model.getMetadata().isQueryProtocol()) {
157-
return b;
158-
}
159-
160-
TypeName listType = ParameterizedTypeName.get(List.class, ExecutionInterceptor.class);
161-
162-
b.addStatement("$T interceptors = clientConfiguration.option($T.EXECUTION_INTERCEPTORS)",
163-
listType, SdkClientOption.class)
164-
.addStatement("$T queryParamsToBodyInterceptor = $T.singletonList(new $T())",
165-
listType, Collections.class, QueryParametersToBodyInterceptor.class)
166-
.addStatement("$T customizationInterceptors = new $T<>()", listType, ArrayList.class);
167-
168-
List<String> customInterceptors = model.getCustomizationConfig().getInterceptors();
169-
customInterceptors.forEach(i -> b.addStatement("customizationInterceptors.add(new $T())", ClassName.bestGuess(i)));
170-
171-
b.addStatement("interceptors = $T.mergeLists(queryParamsToBodyInterceptor, interceptors)", CollectionUtils.class)
172-
.addStatement("interceptors = $T.mergeLists(customizationInterceptors, interceptors)", CollectionUtils.class);
173-
174-
return b.addStatement("clientConfiguration = clientConfiguration.toBuilder().option($T.EXECUTION_INTERCEPTORS, "
175-
+ "interceptors).build()", SdkClientOption.class);
122+
return MethodSpec.methodBuilder("buildClient")
123+
.addAnnotation(Override.class)
124+
.addModifiers(Modifier.PROTECTED, Modifier.FINAL)
125+
.returns(clientInterfaceName)
126+
.addStatement("$T clientConfiguration = super.asyncClientConfiguration()", SdkClientConfiguration.class)
127+
.addStatement("this.validateClientOptions(clientConfiguration)")
128+
.addStatement("$T endpointOverride = null", URI.class)
129+
.addCode("if (clientConfiguration.option($T.ENDPOINT_OVERRIDDEN) != null"
130+
+ "&& $T.TRUE.equals(clientConfiguration.option($T.ENDPOINT_OVERRIDDEN))) {"
131+
+ "endpointOverride = clientConfiguration.option($T.ENDPOINT);"
132+
+ "}",
133+
SdkClientOption.class, Boolean.class, SdkClientOption.class, SdkClientOption.class)
134+
.addStatement("$T serviceClientConfiguration = $T.builder()"
135+
+ ".overrideConfiguration(overrideConfiguration())"
136+
+ ".region(clientConfiguration.option($T.AWS_REGION))"
137+
+ ".endpointOverride(endpointOverride)"
138+
+ ".build()",
139+
serviceConfigClassName, serviceConfigClassName, AwsClientOption.class)
140+
.addStatement("return new $T(serviceClientConfiguration, clientConfiguration)", clientClassName)
141+
.build();
176142
}
177143

178144
private MethodSpec bearerTokenProviderMethod() {

codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/BaseClientBuilderClass.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.squareup.javapoet.TypeSpec;
2929
import com.squareup.javapoet.TypeVariableName;
3030
import java.util.ArrayList;
31+
import java.util.Collections;
3132
import java.util.List;
3233
import java.util.Map;
3334
import java.util.Optional;
@@ -58,6 +59,7 @@
5859
import software.amazon.awssdk.core.signer.Signer;
5960
import software.amazon.awssdk.http.Protocol;
6061
import software.amazon.awssdk.http.SdkHttpConfigurationOption;
62+
import software.amazon.awssdk.protocols.query.interceptor.QueryParametersToBodyInterceptor;
6163
import software.amazon.awssdk.utils.AttributeMap;
6264
import software.amazon.awssdk.utils.CollectionUtils;
6365
import software.amazon.awssdk.utils.StringUtils;
@@ -260,10 +262,8 @@ private MethodSpec finalizeServiceConfigurationMethod() {
260262
builtInInterceptors.add(endpointRulesSpecUtils.authSchemesInterceptorName());
261263
builtInInterceptors.add(endpointRulesSpecUtils.requestModifierInterceptorName());
262264

263-
if (!model.getMetadata().isQueryProtocol()) {
264-
for (String interceptor : model.getCustomizationConfig().getInterceptors()) {
265-
builtInInterceptors.add(ClassName.bestGuess(interceptor));
266-
}
265+
for (String interceptor : model.getCustomizationConfig().getInterceptors()) {
266+
builtInInterceptors.add(ClassName.bestGuess(interceptor));
267267
}
268268

269269
for (ClassName interceptor : builtInInterceptors) {
@@ -288,6 +288,16 @@ private MethodSpec finalizeServiceConfigurationMethod() {
288288
builder.addCode("interceptors = $T.mergeLists(interceptors, config.option($T.EXECUTION_INTERCEPTORS));\n",
289289
CollectionUtils.class, SdkClientOption.class);
290290

291+
if (model.getMetadata().isQueryProtocol()) {
292+
TypeName listType = ParameterizedTypeName.get(List.class, ExecutionInterceptor.class);
293+
builder.addStatement("$T protocolInterceptors = $T.singletonList(new $T())",
294+
listType,
295+
Collections.class,
296+
QueryParametersToBodyInterceptor.class);
297+
builder.addStatement("interceptors = $T.mergeLists(interceptors, protocolInterceptors)",
298+
CollectionUtils.class);
299+
}
300+
291301
if (model.getEndpointOperation().isPresent()) {
292302
builder.beginControlFlow("if (!endpointDiscoveryEnabled)")
293303
.addStatement("$1T chain = new $1T(config)", DefaultEndpointDiscoveryProviderChain.class)

codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/SyncClientBuilderClass.java

Lines changed: 20 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,8 @@
1818
import com.squareup.javapoet.ClassName;
1919
import com.squareup.javapoet.MethodSpec;
2020
import com.squareup.javapoet.ParameterizedTypeName;
21-
import com.squareup.javapoet.TypeName;
2221
import com.squareup.javapoet.TypeSpec;
2322
import java.net.URI;
24-
import java.util.ArrayList;
25-
import java.util.Collections;
26-
import java.util.List;
2723
import javax.lang.model.element.Modifier;
2824
import software.amazon.awssdk.annotations.SdkInternalApi;
2925
import software.amazon.awssdk.auth.token.credentials.SdkTokenProvider;
@@ -36,9 +32,6 @@
3632
import software.amazon.awssdk.codegen.utils.AuthUtils;
3733
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
3834
import software.amazon.awssdk.core.client.config.SdkClientOption;
39-
import software.amazon.awssdk.core.interceptor.ExecutionInterceptor;
40-
import software.amazon.awssdk.protocols.query.interceptor.QueryParametersToBodyInterceptor;
41-
import software.amazon.awssdk.utils.CollectionUtils;
4235

4336
public class SyncClientBuilderClass implements ClassSpec {
4437
private final IntermediateModel model;
@@ -126,53 +119,26 @@ private MethodSpec endpointProviderMethod() {
126119

127120

128121
private MethodSpec buildClientMethod() {
129-
MethodSpec.Builder b = MethodSpec.methodBuilder("buildClient")
130-
.addAnnotation(Override.class)
131-
.addModifiers(Modifier.PROTECTED, Modifier.FINAL)
132-
.returns(clientInterfaceName)
133-
.addStatement("$T clientConfiguration = super.syncClientConfiguration()",
134-
SdkClientConfiguration.class);
135-
136-
addQueryProtocolInterceptors(b);
137-
138-
return b.addStatement("this.validateClientOptions(clientConfiguration)")
139-
.addStatement("$T endpointOverride = null", URI.class)
140-
.addCode("if (clientConfiguration.option($T.ENDPOINT_OVERRIDDEN) != null"
141-
+ "&& $T.TRUE.equals(clientConfiguration.option($T.ENDPOINT_OVERRIDDEN))) {"
142-
+ "endpointOverride = clientConfiguration.option($T.ENDPOINT);"
143-
+ "}",
144-
SdkClientOption.class, Boolean.class, SdkClientOption.class, SdkClientOption.class)
145-
.addStatement("$T serviceClientConfiguration = $T.builder()"
146-
+ ".overrideConfiguration(overrideConfiguration())"
147-
+ ".region(clientConfiguration.option($T.AWS_REGION))"
148-
+ ".endpointOverride(endpointOverride)"
149-
+ ".build()",
150-
serviceConfigClassName, serviceConfigClassName, AwsClientOption.class)
151-
.addStatement("return new $T(serviceClientConfiguration, clientConfiguration)", clientClassName)
152-
.build();
153-
}
154-
155-
private MethodSpec.Builder addQueryProtocolInterceptors(MethodSpec.Builder b) {
156-
if (!model.getMetadata().isQueryProtocol()) {
157-
return b;
158-
}
159-
160-
TypeName listType = ParameterizedTypeName.get(List.class, ExecutionInterceptor.class);
161-
162-
b.addStatement("$T interceptors = clientConfiguration.option($T.EXECUTION_INTERCEPTORS)",
163-
listType, SdkClientOption.class)
164-
.addStatement("$T queryParamsToBodyInterceptor = $T.singletonList(new $T())",
165-
listType, Collections.class, QueryParametersToBodyInterceptor.class)
166-
.addStatement("$T customizationInterceptors = new $T<>()", listType, ArrayList.class);
167-
168-
List<String> customInterceptors = model.getCustomizationConfig().getInterceptors();
169-
customInterceptors.forEach(i -> b.addStatement("customizationInterceptors.add(new $T())", ClassName.bestGuess(i)));
170-
171-
b.addStatement("interceptors = $T.mergeLists(queryParamsToBodyInterceptor, interceptors)", CollectionUtils.class)
172-
.addStatement("interceptors = $T.mergeLists(customizationInterceptors, interceptors)", CollectionUtils.class);
173-
174-
return b.addStatement("clientConfiguration = clientConfiguration.toBuilder().option($T.EXECUTION_INTERCEPTORS, "
175-
+ "interceptors).build()", SdkClientOption.class);
122+
return MethodSpec.methodBuilder("buildClient")
123+
.addAnnotation(Override.class)
124+
.addModifiers(Modifier.PROTECTED, Modifier.FINAL)
125+
.returns(clientInterfaceName)
126+
.addStatement("$T clientConfiguration = super.syncClientConfiguration()", SdkClientConfiguration.class)
127+
.addStatement("this.validateClientOptions(clientConfiguration)")
128+
.addStatement("$T endpointOverride = null", URI.class)
129+
.addCode("if (clientConfiguration.option($T.ENDPOINT_OVERRIDDEN) != null"
130+
+ "&& $T.TRUE.equals(clientConfiguration.option($T.ENDPOINT_OVERRIDDEN))) {"
131+
+ "endpointOverride = clientConfiguration.option($T.ENDPOINT);"
132+
+ "}",
133+
SdkClientOption.class, Boolean.class, SdkClientOption.class, SdkClientOption.class)
134+
.addStatement("$T serviceClientConfiguration = $T.builder()"
135+
+ ".overrideConfiguration(overrideConfiguration())"
136+
+ ".region(clientConfiguration.option($T.AWS_REGION))"
137+
+ ".endpointOverride(endpointOverride)"
138+
+ ".build()",
139+
serviceConfigClassName, serviceConfigClassName, AwsClientOption.class)
140+
.addStatement("return new $T(serviceClientConfiguration, clientConfiguration)", clientClassName)
141+
.build();
176142
}
177143

178144
private MethodSpec tokenProviderMethodImpl() {

codegen/src/test/java/software/amazon/awssdk/codegen/internal/QueryProtocolCustomTestInterceptor.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

codegen/src/test/java/software/amazon/awssdk/codegen/poet/builder/BuilderClassTest.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,6 @@ public void baseQueryClientBuilderClass() throws Exception {
5858
validateQueryGeneration(BaseClientBuilderClass::new, "test-query-client-builder-class.java");
5959
}
6060

61-
@Test
62-
public void syncQueryClientBuilderClass() throws Exception {
63-
validateQueryGeneration(SyncClientBuilderClass::new, "test-query-sync-client-builder-class.java");
64-
}
65-
66-
@Test
67-
public void asyncQueryClientBuilderClass() throws Exception {
68-
validateQueryGeneration(AsyncClientBuilderClass::new, "test-query-async-client-builder-class.java");
69-
}
70-
7161
@Test
7262
public void syncClientBuilderInterface() throws Exception {
7363
validateGeneration(SyncClientBuilderInterface::new, "test-sync-client-builder-interface.java");

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/builder/test-query-async-client-builder-class.java

Lines changed: 0 additions & 61 deletions
This file was deleted.

0 commit comments

Comments
 (0)