Skip to content

Commit 7b09efe

Browse files
committed
Move endpoint resolution from interceptors to pipeline stage
1 parent aca7500 commit 7b09efe

File tree

47 files changed

+2072
-1491
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2072
-1491
lines changed

codegen/src/main/java/software/amazon/awssdk/codegen/emitters/tasks/AuthSchemeGeneratorTasks.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import software.amazon.awssdk.codegen.emitters.GeneratorTask;
2121
import software.amazon.awssdk.codegen.emitters.GeneratorTaskParams;
2222
import software.amazon.awssdk.codegen.emitters.PoetGeneratorTask;
23-
import software.amazon.awssdk.codegen.poet.auth.scheme.AuthSchemeInterceptorSpec;
2423
import software.amazon.awssdk.codegen.poet.auth.scheme.AuthSchemeParamsSpec;
2524
import software.amazon.awssdk.codegen.poet.auth.scheme.AuthSchemeProviderSpec;
2625
import software.amazon.awssdk.codegen.poet.auth.scheme.AuthSchemeSpecUtils;
@@ -47,7 +46,6 @@ protected List<GeneratorTask> createTasks() {
4746
tasks.add(generateDefaultParamsImpl());
4847
tasks.add(generateModelBasedProvider());
4948
tasks.add(generatePreferenceProvider());
50-
tasks.add(generateAuthSchemeInterceptor());
5149
if (authSchemeSpecUtils.useEndpointBasedAuthProvider()) {
5250
tasks.add(generateEndpointBasedProvider());
5351
tasks.add(generateEndpointAwareAuthSchemeParams());
@@ -86,10 +84,6 @@ private GeneratorTask generateEndpointAwareAuthSchemeParams() {
8684

8785
}
8886

89-
private GeneratorTask generateAuthSchemeInterceptor() {
90-
return new PoetGeneratorTask(authSchemeInternalDir(), model.getFileHeader(), new AuthSchemeInterceptorSpec(model));
91-
}
92-
9387
private String authSchemeDir() {
9488
return generatorTaskParams.getPathProvider().getAuthSchemeDirectory();
9589
}

codegen/src/main/java/software/amazon/awssdk/codegen/emitters/tasks/EndpointProviderTasks.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@
3232
import software.amazon.awssdk.codegen.poet.rules.EndpointProviderInterfaceSpec;
3333
import software.amazon.awssdk.codegen.poet.rules.EndpointProviderSpec;
3434
import software.amazon.awssdk.codegen.poet.rules.EndpointProviderTestSpec;
35-
import software.amazon.awssdk.codegen.poet.rules.EndpointResolverInterceptorSpec;
35+
import software.amazon.awssdk.codegen.poet.rules.EndpointResolverUtilsSpec;
3636
import software.amazon.awssdk.codegen.poet.rules.EndpointRulesClientTestSpec;
37-
import software.amazon.awssdk.codegen.poet.rules.RequestEndpointInterceptorSpec;
3837
import software.amazon.awssdk.codegen.poet.rules2.EndpointProviderSpec2;
3938

4039
public final class EndpointProviderTasks extends BaseGeneratorTasks {
@@ -103,8 +102,7 @@ private boolean shouldGenerateCompiledEndpointRules() {
103102

104103
private Collection<GeneratorTask> generateInterceptors() {
105104
return Arrays.asList(
106-
new PoetGeneratorTask(endpointRulesInternalDir(), model.getFileHeader(), new EndpointResolverInterceptorSpec(model)),
107-
new PoetGeneratorTask(endpointRulesInternalDir(), model.getFileHeader(), new RequestEndpointInterceptorSpec(model)));
105+
new PoetGeneratorTask(endpointRulesInternalDir(), model.getFileHeader(), new EndpointResolverUtilsSpec(model)));
108106
}
109107

110108
private GeneratorTask generateClientTests() {

codegen/src/main/java/software/amazon/awssdk/codegen/poet/auth/scheme/AuthSchemeInterceptorSpec.java

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

codegen/src/main/java/software/amazon/awssdk/codegen/poet/auth/scheme/AuthSchemeParamsSpec.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,42 @@ public TypeSpec poetSpec() {
6060
.addModifiers(Modifier.PUBLIC)
6161
.addAnnotation(SdkPublicApi.class)
6262
.addJavadoc(interfaceJavadoc())
63-
.addMethod(builderMethod())
64-
.addType(builderInterfaceSpec());
63+
.addMethod(builderMethod());
64+
65+
if (authSchemeSpecUtils.generateEndpointBasedParams()) {
66+
b.addMethod(fromEndpointParamsMethod());
67+
}
68+
69+
b.addType(builderInterfaceSpec());
6570

6671
addAccessorMethods(b);
6772
addToBuilder(b);
6873
return b.build();
6974
}
7075

76+
private MethodSpec fromEndpointParamsMethod() {
77+
ClassName endpointParamsClass = endpointRulesSpecUtils.parametersClassName();
78+
MethodSpec.Builder builder = MethodSpec.methodBuilder("fromEndpointParams")
79+
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
80+
.addParameter(endpointParamsClass, "endpointParams")
81+
.returns(authSchemeSpecUtils.parametersInterfaceBuilderInterfaceName())
82+
.addJavadoc("Create a builder pre-populated with endpoint parameters.\n"
83+
+ "@param endpointParams the endpoint parameters to copy\n"
84+
+ "@return a builder with values from the endpoint parameters");
85+
86+
builder.addStatement("$T builder = builder()", authSchemeSpecUtils.parametersInterfaceBuilderInterfaceName());
87+
88+
parameters().forEach((name, model) -> {
89+
if (authSchemeSpecUtils.includeParamForProvider(name)) {
90+
String methodName = endpointRulesSpecUtils.paramMethodName(name);
91+
builder.addStatement("builder.$1N(endpointParams.$1N())", methodName);
92+
}
93+
});
94+
95+
builder.addStatement("return builder");
96+
return builder.build();
97+
}
98+
7199
private CodeBlock interfaceJavadoc() {
72100
CodeBlock.Builder b = CodeBlock.builder();
73101

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -370,10 +370,6 @@ private MethodSpec finalizeServiceConfigurationMethod() {
370370

371371
List<ClassName> builtInInterceptors = new ArrayList<>();
372372

373-
builtInInterceptors.add(authSchemeSpecUtils.authSchemeInterceptor());
374-
builtInInterceptors.add(endpointRulesSpecUtils.resolverInterceptorName());
375-
builtInInterceptors.add(endpointRulesSpecUtils.requestModifierInterceptorName());
376-
377373
for (String interceptor : model.getCustomizationConfig().getInterceptors()) {
378374
builtInInterceptors.add(ClassName.bestGuess(interceptor));
379375
}

codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/AsyncClientClass.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,12 @@
6969
import software.amazon.awssdk.codegen.poet.PoetExtension;
7070
import software.amazon.awssdk.codegen.poet.PoetUtils;
7171
import software.amazon.awssdk.codegen.poet.StaticImport;
72+
import software.amazon.awssdk.codegen.poet.auth.scheme.AuthSchemeSpecUtils;
7273
import software.amazon.awssdk.codegen.poet.client.specs.ProtocolSpec;
7374
import software.amazon.awssdk.codegen.poet.eventstream.EventStreamUtils;
7475
import software.amazon.awssdk.codegen.poet.model.EventStreamSpecHelper;
7576
import software.amazon.awssdk.codegen.poet.model.ServiceClientConfigurationUtils;
77+
import software.amazon.awssdk.codegen.poet.rules.EndpointRulesSpecUtils;
7678
import software.amazon.awssdk.core.RequestOverrideConfiguration;
7779
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
7880
import software.amazon.awssdk.core.async.AsyncResponseTransformerUtils;
@@ -100,6 +102,8 @@ public final class AsyncClientClass extends AsyncClientInterface {
100102
private final ProtocolSpec protocolSpec;
101103
private final ClassName serviceClientConfigurationClassName;
102104
private final ServiceClientConfigurationUtils configurationUtils;
105+
private final AuthSchemeSpecUtils authSchemeSpecUtils;
106+
private final EndpointRulesSpecUtils endpointRulesSpecUtils;
103107
private boolean hasScheduledExecutor;
104108

105109
public AsyncClientClass(GeneratorTaskParams dependencies) {
@@ -110,6 +114,8 @@ public AsyncClientClass(GeneratorTaskParams dependencies) {
110114
this.protocolSpec = getProtocolSpecs(poetExtensions, model);
111115
this.serviceClientConfigurationClassName = new PoetExtension(model).getServiceConfigClass();
112116
this.configurationUtils = new ServiceClientConfigurationUtils(model);
117+
this.authSchemeSpecUtils = new AuthSchemeSpecUtils(model);
118+
this.endpointRulesSpecUtils = new EndpointRulesSpecUtils(model);
113119
}
114120

115121
@Override
@@ -165,7 +171,9 @@ protected void addAdditionalMethods(TypeSpec.Builder type) {
165171
.addMethod(nameMethod())
166172
.addMethods(protocolSpec.additionalMethods())
167173
.addMethod(protocolSpec.initProtocolFactory(model))
168-
.addMethod(resolveMetricPublishersMethod());
174+
.addMethod(resolveMetricPublishersMethod())
175+
.addMethod(ClientClassUtils.resolveAuthSchemeOptionsMethod(authSchemeSpecUtils, endpointRulesSpecUtils))
176+
.addMethod(ClientClassUtils.resolveEndpointMethod(authSchemeSpecUtils, endpointRulesSpecUtils));
169177

170178
type.addMethod(ClientClassUtils.updateRetryStrategyClientConfigurationMethod());
171179
type.addMethod(updateSdkClientConfigurationMethod(configurationUtils.serviceClientConfigurationBuilderClassName(),

0 commit comments

Comments
 (0)