Skip to content

Commit fa17dcf

Browse files
committed
Fixing comments, adding fixture file, renaming provider to resolver, adding coverage
1 parent cb2d5a0 commit fa17dcf

19 files changed

Lines changed: 250 additions & 104 deletions

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import java.util.List;
2727
import java.util.function.Consumer;
2828
import javax.lang.model.element.Modifier;
29-
import software.amazon.awssdk.annotations.SdkInternalApi;
29+
import software.amazon.awssdk.annotations.NotThreadSafe;
3030
import software.amazon.awssdk.annotations.SdkPublicApi;
3131
import software.amazon.awssdk.codegen.model.intermediate.IntermediateModel;
3232
import software.amazon.awssdk.codegen.poet.ClassSpec;
@@ -128,6 +128,8 @@ private MethodSpec staticBuilderMethodSpec() {
128128
private TypeSpec builderInterfaceSpec() {
129129
return TypeSpec.interfaceBuilder("Builder")
130130
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
131+
.addAnnotation(NotThreadSafe.class)
132+
.addJavadoc("A builder for creating {@link $T} instances.\n", className())
131133
.addMethod(MethodSpec.methodBuilder("build")
132134
.addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
133135
.addJavadoc("Returns a {@link $T} object that is created from the "
@@ -136,7 +138,7 @@ private TypeSpec builderInterfaceSpec() {
136138
.returns(className())
137139
.build())
138140

139-
.addMethod(MethodSpec.methodBuilder("withPreferredAuthSchemes")
141+
.addMethod(MethodSpec.methodBuilder("preferredAuthSchemes")
140142
.addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
141143
.addJavadoc("Set the preferred auth schemes in order of preference.")
142144
.returns(className().nestedClass("Builder"))
@@ -150,7 +152,6 @@ private TypeSpec builderInterfaceSpec() {
150152

151153
private TypeSpec builderClassSpec() {
152154
return TypeSpec.classBuilder(authSchemeSpecUtils.authSchemeProviderBuilderName())
153-
.addAnnotation(SdkInternalApi.class)
154155
.addModifiers(Modifier.PUBLIC, Modifier.FINAL, Modifier.STATIC)
155156
.addSuperinterface(className().nestedClass("Builder"))
156157
.addField(
@@ -160,7 +161,7 @@ private TypeSpec builderClassSpec() {
160161
.build())
161162
.addMethod(
162163
MethodSpec
163-
.methodBuilder("withPreferredAuthSchemes").addAnnotation(Override.class)
164+
.methodBuilder("preferredAuthSchemes").addAnnotation(Override.class)
164165
.addModifiers(Modifier.PUBLIC)
165166
.addParameter(
166167
ParameterizedTypeName.get(List.class, String.class),

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
import software.amazon.awssdk.auth.signer.Aws4Signer;
4444
import software.amazon.awssdk.auth.token.credentials.aws.DefaultAwsTokenProvider;
4545
import software.amazon.awssdk.auth.token.signer.aws.BearerTokenSigner;
46-
import software.amazon.awssdk.awscore.auth.AuthSchemePreferenceProvider;
46+
import software.amazon.awssdk.awscore.auth.AuthSchemePreferenceResolver;
4747
import software.amazon.awssdk.awscore.client.builder.AwsDefaultClientBuilder;
4848
import software.amazon.awssdk.awscore.client.config.AwsClientOption;
4949
import software.amazon.awssdk.awscore.endpoint.AwsClientEndpointProvider;
@@ -834,13 +834,13 @@ private MethodSpec defaultAuthSchemeProviderMethod() {
834834
.returns(authSchemeSpecUtils.providerInterfaceName())
835835
.addCode("$T authSchemePreferenceProvider = "
836836
+ "$T.builder()",
837-
AuthSchemePreferenceProvider.class, AuthSchemePreferenceProvider.class)
837+
AuthSchemePreferenceResolver.class, AuthSchemePreferenceResolver.class)
838838
.addCode(".profileFile(config.option($T.PROFILE_FILE_SUPPLIER))", SdkClientOption.class)
839839
.addCode(".profileName(config.option($T.PROFILE_NAME))", SdkClientOption.class)
840840
.addStatement(".build()")
841841
.addStatement("List<String> preferences = authSchemePreferenceProvider.resolveAuthSchemePreference()")
842-
.beginControlFlow("if(preferences != null && !preferences.isEmpty())")
843-
.addStatement("return $T.builder().withPreferredAuthSchemes(preferences).build()",
842+
.beginControlFlow("if(!preferences.isEmpty())")
843+
.addStatement("return $T.builder().preferredAuthSchemes(preferences).build()",
844844
authSchemeSpecUtils.providerInterfaceName())
845845
.endControlFlow()
846846
.addStatement("return $T.defaultProvider()", authSchemeSpecUtils.providerInterfaceName())

codegen/src/test/java/software/amazon/awssdk/codegen/poet/auth/scheme/AuthSchemeSpecTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ static List<TestCase> parameters() {
6666
.caseName("query")
6767
.outputFileSuffix("default-params")
6868
.build(),
69+
TestCase.builder()
70+
.modelProvider(ClientTestModels::queryServiceModels)
71+
.classSpecProvider(PreferredAuthSchemeProviderSpec::new)
72+
.caseName("query")
73+
.outputFileSuffix("preferred-provider")
74+
.build(),
6975
// query-endpoint-auth-params
7076
TestCase.builder()
7177
.modelProvider(ClientTestModels::queryServiceModelsEndpointAuthParamsWithAllowList)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package software.amazon.awssdk.services.query.auth.scheme.internal;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
import software.amazon.awssdk.annotations.Generated;
7+
import software.amazon.awssdk.annotations.SdkInternalApi;
8+
import software.amazon.awssdk.http.auth.spi.scheme.AuthSchemeOption;
9+
import software.amazon.awssdk.services.query.auth.scheme.QueryAuthSchemeParams;
10+
import software.amazon.awssdk.services.query.auth.scheme.QueryAuthSchemeProvider;
11+
import software.amazon.awssdk.utils.CollectionUtils;
12+
13+
@Generated("software.amazon.awssdk:codegen")
14+
@SdkInternalApi
15+
public final class PreferredQueryAuthSchemeProvider implements QueryAuthSchemeProvider {
16+
private final QueryAuthSchemeProvider delegate;
17+
18+
private final List<String> authSchemePreference;
19+
20+
public PreferredQueryAuthSchemeProvider(QueryAuthSchemeProvider delegate, List<String> authSchemePreference) {
21+
this.delegate = delegate;
22+
this.authSchemePreference = authSchemePreference != null ? authSchemePreference : Collections.emptyList();
23+
}
24+
25+
/**
26+
* Resolve the auth schemes based on the given set of parameters.
27+
*/
28+
@Override
29+
public List<AuthSchemeOption> resolveAuthScheme(QueryAuthSchemeParams params) {
30+
List<AuthSchemeOption> candidateAuthSchemes = delegate.resolveAuthScheme(params);
31+
if (CollectionUtils.isNullOrEmpty(authSchemePreference)) {
32+
return candidateAuthSchemes;
33+
}
34+
List<AuthSchemeOption> authSchemes = new ArrayList<>();
35+
authSchemePreference.forEach(preferredSchemeId -> {
36+
candidateAuthSchemes
37+
.stream()
38+
.filter(candidate -> {
39+
String candidateSchemeName = candidate.schemeId().contains("#") ? candidate.schemeId().split("#")[1]
40+
: candidate.schemeId();
41+
return candidateSchemeName.equals(preferredSchemeId);
42+
}).findFirst().ifPresent(authSchemes::add);
43+
});
44+
candidateAuthSchemes.forEach(candidate -> {
45+
if (!authSchemes.contains(candidate)) {
46+
authSchemes.add(candidate);
47+
}
48+
});
49+
return authSchemes;
50+
}
51+
}

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/auth/scheme/query-auth-scheme-provider.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import java.util.List;
55
import java.util.function.Consumer;
66
import software.amazon.awssdk.annotations.Generated;
7-
import software.amazon.awssdk.annotations.SdkInternalApi;
7+
import software.amazon.awssdk.annotations.NotThreadSafe;
88
import software.amazon.awssdk.annotations.SdkPublicApi;
99
import software.amazon.awssdk.http.auth.spi.scheme.AuthSchemeOption;
1010
import software.amazon.awssdk.http.auth.spi.scheme.AuthSchemeProvider;
@@ -46,6 +46,10 @@ static Builder builder() {
4646
return new QueryAuthSchemeProviderBuilder();
4747
}
4848

49+
/**
50+
* A builder for creating {@link QueryAuthSchemeProvider} instances.
51+
*/
52+
@NotThreadSafe
4953
interface Builder {
5054
/**
5155
* Returns a {@link QueryAuthSchemeProvider} object that is created from the properties that have been set on
@@ -56,15 +60,14 @@ interface Builder {
5660
/**
5761
* Set the preferred auth schemes in order of preference.
5862
*/
59-
Builder withPreferredAuthSchemes(List<String> authSchemePreference);
63+
Builder preferredAuthSchemes(List<String> authSchemePreference);
6064
}
6165

62-
@SdkInternalApi
6366
final class QueryAuthSchemeProviderBuilder implements Builder {
6467
private List<String> authSchemePreference;
6568

6669
@Override
67-
public Builder withPreferredAuthSchemes(List<String> authSchemePreference) {
70+
public Builder preferredAuthSchemes(List<String> authSchemePreference) {
6871
this.authSchemePreference = new ArrayList<>(authSchemePreference);
6972
return this;
7073
}

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/auth/scheme/query-endpoint-auth-params-auth-scheme-provider.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import java.util.List;
55
import java.util.function.Consumer;
66
import software.amazon.awssdk.annotations.Generated;
7-
import software.amazon.awssdk.annotations.SdkInternalApi;
7+
import software.amazon.awssdk.annotations.NotThreadSafe;
88
import software.amazon.awssdk.annotations.SdkPublicApi;
99
import software.amazon.awssdk.http.auth.spi.scheme.AuthSchemeOption;
1010
import software.amazon.awssdk.http.auth.spi.scheme.AuthSchemeProvider;
@@ -46,6 +46,10 @@ static Builder builder() {
4646
return new QueryAuthSchemeProviderBuilder();
4747
}
4848

49+
/**
50+
* A builder for creating {@link QueryAuthSchemeProvider} instances.
51+
*/
52+
@NotThreadSafe
4953
interface Builder {
5054
/**
5155
* Returns a {@link QueryAuthSchemeProvider} object that is created from the properties that have been set on
@@ -56,15 +60,14 @@ interface Builder {
5660
/**
5761
* Set the preferred auth schemes in order of preference.
5862
*/
59-
Builder withPreferredAuthSchemes(List<String> authSchemePreference);
63+
Builder preferredAuthSchemes(List<String> authSchemePreference);
6064
}
6165

62-
@SdkInternalApi
6366
final class QueryAuthSchemeProviderBuilder implements Builder {
6467
private List<String> authSchemePreference;
6568

6669
@Override
67-
public Builder withPreferredAuthSchemes(List<String> authSchemePreference) {
70+
public Builder preferredAuthSchemes(List<String> authSchemePreference) {
6871
this.authSchemePreference = new ArrayList<>(authSchemePreference);
6972
return this;
7073
}

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/builder/sra/test-bearer-auth-client-builder-class.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import software.amazon.awssdk.annotations.SdkInternalApi;
1111
import software.amazon.awssdk.auth.credentials.TokenUtils;
1212
import software.amazon.awssdk.auth.token.credentials.aws.DefaultAwsTokenProvider;
13-
import software.amazon.awssdk.awscore.auth.AuthSchemePreferenceProvider;
13+
import software.amazon.awssdk.awscore.auth.AuthSchemePreferenceResolver;
1414
import software.amazon.awssdk.awscore.client.builder.AwsDefaultClientBuilder;
1515
import software.amazon.awssdk.awscore.client.config.AwsClientOption;
1616
import software.amazon.awssdk.awscore.endpoint.AwsClientEndpointProvider;
@@ -128,12 +128,12 @@ public B authSchemeProvider(JsonAuthSchemeProvider authSchemeProvider) {
128128
}
129129

130130
private JsonAuthSchemeProvider defaultAuthSchemeProvider(SdkClientConfiguration config) {
131-
AuthSchemePreferenceProvider authSchemePreferenceProvider = AuthSchemePreferenceProvider.builder()
131+
AuthSchemePreferenceResolver authSchemePreferenceProvider = AuthSchemePreferenceResolver.builder()
132132
.profileFile(config.option(SdkClientOption.PROFILE_FILE_SUPPLIER))
133133
.profileName(config.option(SdkClientOption.PROFILE_NAME)).build();
134134
List<String> preferences = authSchemePreferenceProvider.resolveAuthSchemePreference();
135-
if (preferences != null && !preferences.isEmpty()) {
136-
return JsonAuthSchemeProvider.builder().withPreferredAuthSchemes(preferences).build();
135+
if (!preferences.isEmpty()) {
136+
return JsonAuthSchemeProvider.builder().preferredAuthSchemes(preferences).build();
137137
}
138138
return JsonAuthSchemeProvider.defaultProvider();
139139
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import software.amazon.awssdk.annotations.SdkInternalApi;
1313
import software.amazon.awssdk.auth.credentials.TokenUtils;
1414
import software.amazon.awssdk.auth.token.credentials.aws.DefaultAwsTokenProvider;
15-
import software.amazon.awssdk.awscore.auth.AuthSchemePreferenceProvider;
15+
import software.amazon.awssdk.awscore.auth.AuthSchemePreferenceResolver;
1616
import software.amazon.awssdk.awscore.client.builder.AwsDefaultClientBuilder;
1717
import software.amazon.awssdk.awscore.client.config.AwsClientOption;
1818
import software.amazon.awssdk.awscore.endpoint.AwsClientEndpointProvider;
@@ -227,12 +227,12 @@ public B authSchemeProvider(JsonAuthSchemeProvider authSchemeProvider) {
227227
}
228228

229229
private JsonAuthSchemeProvider defaultAuthSchemeProvider(SdkClientConfiguration config) {
230-
AuthSchemePreferenceProvider authSchemePreferenceProvider = AuthSchemePreferenceProvider.builder()
230+
AuthSchemePreferenceResolver authSchemePreferenceProvider = AuthSchemePreferenceResolver.builder()
231231
.profileFile(config.option(SdkClientOption.PROFILE_FILE_SUPPLIER))
232232
.profileName(config.option(SdkClientOption.PROFILE_NAME)).build();
233233
List<String> preferences = authSchemePreferenceProvider.resolveAuthSchemePreference();
234-
if (preferences != null && !preferences.isEmpty()) {
235-
return JsonAuthSchemeProvider.builder().withPreferredAuthSchemes(preferences).build();
234+
if (!preferences.isEmpty()) {
235+
return JsonAuthSchemeProvider.builder().preferredAuthSchemes(preferences).build();
236236
}
237237
return JsonAuthSchemeProvider.defaultProvider();
238238
}

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/builder/sra/test-client-builder-endpoints-auth-params.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import software.amazon.awssdk.annotations.SdkInternalApi;
1111
import software.amazon.awssdk.auth.credentials.TokenUtils;
1212
import software.amazon.awssdk.auth.token.credentials.aws.DefaultAwsTokenProvider;
13-
import software.amazon.awssdk.awscore.auth.AuthSchemePreferenceProvider;
13+
import software.amazon.awssdk.awscore.auth.AuthSchemePreferenceResolver;
1414
import software.amazon.awssdk.awscore.client.builder.AwsDefaultClientBuilder;
1515
import software.amazon.awssdk.awscore.client.config.AwsClientOption;
1616
import software.amazon.awssdk.awscore.endpoint.AwsClientEndpointProvider;
@@ -145,12 +145,12 @@ public B authSchemeProvider(QueryAuthSchemeProvider authSchemeProvider) {
145145
}
146146

147147
private QueryAuthSchemeProvider defaultAuthSchemeProvider(SdkClientConfiguration config) {
148-
AuthSchemePreferenceProvider authSchemePreferenceProvider = AuthSchemePreferenceProvider.builder()
148+
AuthSchemePreferenceResolver authSchemePreferenceProvider = AuthSchemePreferenceResolver.builder()
149149
.profileFile(config.option(SdkClientOption.PROFILE_FILE_SUPPLIER))
150150
.profileName(config.option(SdkClientOption.PROFILE_NAME)).build();
151151
List<String> preferences = authSchemePreferenceProvider.resolveAuthSchemePreference();
152-
if (preferences != null && !preferences.isEmpty()) {
153-
return QueryAuthSchemeProvider.builder().withPreferredAuthSchemes(preferences).build();
152+
if (!preferences.isEmpty()) {
153+
return QueryAuthSchemeProvider.builder().preferredAuthSchemes(preferences).build();
154154
}
155155
return QueryAuthSchemeProvider.defaultProvider();
156156
}

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/builder/sra/test-client-builder-internal-defaults-class.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import java.util.function.Consumer;
99
import software.amazon.awssdk.annotations.Generated;
1010
import software.amazon.awssdk.annotations.SdkInternalApi;
11-
import software.amazon.awssdk.awscore.auth.AuthSchemePreferenceProvider;
11+
import software.amazon.awssdk.awscore.auth.AuthSchemePreferenceResolver;
1212
import software.amazon.awssdk.awscore.client.builder.AwsDefaultClientBuilder;
1313
import software.amazon.awssdk.awscore.client.config.AwsClientOption;
1414
import software.amazon.awssdk.awscore.endpoint.AwsClientEndpointProvider;
@@ -128,12 +128,12 @@ public B authSchemeProvider(JsonAuthSchemeProvider authSchemeProvider) {
128128
}
129129

130130
private JsonAuthSchemeProvider defaultAuthSchemeProvider(SdkClientConfiguration config) {
131-
AuthSchemePreferenceProvider authSchemePreferenceProvider = AuthSchemePreferenceProvider.builder()
131+
AuthSchemePreferenceResolver authSchemePreferenceProvider = AuthSchemePreferenceResolver.builder()
132132
.profileFile(config.option(SdkClientOption.PROFILE_FILE_SUPPLIER))
133133
.profileName(config.option(SdkClientOption.PROFILE_NAME)).build();
134134
List<String> preferences = authSchemePreferenceProvider.resolveAuthSchemePreference();
135-
if (preferences != null && !preferences.isEmpty()) {
136-
return JsonAuthSchemeProvider.builder().withPreferredAuthSchemes(preferences).build();
135+
if (!preferences.isEmpty()) {
136+
return JsonAuthSchemeProvider.builder().preferredAuthSchemes(preferences).build();
137137
}
138138
return JsonAuthSchemeProvider.defaultProvider();
139139
}

0 commit comments

Comments
 (0)