in codegen/src/main/java/software/amazon/awssdk/codegen/poet/auth/scheme/AuthSchemeInterceptorSpec.java [143:203]
private MethodSpec generateAuthSchemeParams() {
MethodSpec.Builder builder = MethodSpec.methodBuilder("authSchemeParams")
.addModifiers(Modifier.PRIVATE)
.returns(authSchemeSpecUtils.parametersInterfaceName())
.addParameter(SdkRequest.class, "request")
.addParameter(ExecutionAttributes.class, "executionAttributes");
if (!authSchemeSpecUtils.useEndpointBasedAuthProvider()) {
builder.addStatement("$T operation = executionAttributes.getAttribute($T.OPERATION_NAME)", String.class,
SdkExecutionAttribute.class);
builder.addStatement("$T.Builder builder = $T.builder().operation(operation)",
authSchemeSpecUtils.parametersInterfaceName(),
authSchemeSpecUtils.parametersInterfaceName());
if (authSchemeSpecUtils.usesSigV4()) {
builder.addStatement("$T region = executionAttributes.getAttribute($T.AWS_REGION)", Region.class,
AwsExecutionAttribute.class);
builder.addStatement("builder.region(region)");
}
generateSigv4aSigningRegionSet(builder);
builder.addStatement("return builder.build()");
return builder.build();
}
builder.addStatement("$T endpointParams = $T.ruleParams(request, executionAttributes)",
endpointRulesSpecUtils.parametersClassName(),
endpointRulesSpecUtils.resolverInterceptorName());
builder.addStatement("$1T.Builder builder = $1T.builder()", authSchemeSpecUtils.parametersInterfaceName());
boolean regionIncluded = false;
for (String paramName : endpointRulesSpecUtils.parameters().keySet()) {
if (!authSchemeSpecUtils.includeParamForProvider(paramName)) {
continue;
}
regionIncluded = regionIncluded || paramName.equalsIgnoreCase("region");
String methodName = endpointRulesSpecUtils.paramMethodName(paramName);
builder.addStatement("builder.$1N(endpointParams.$1N())", methodName);
}
builder.addStatement("$T operation = executionAttributes.getAttribute($T.OPERATION_NAME)", String.class,
SdkExecutionAttribute.class);
builder.addStatement("builder.operation(operation)");
if (authSchemeSpecUtils.usesSigV4() && !regionIncluded) {
builder.addStatement("$T region = executionAttributes.getAttribute($T.AWS_REGION)", Region.class,
AwsExecutionAttribute.class);
builder.addStatement("builder.region(region)");
}
generateSigv4aSigningRegionSet(builder);
ClassName paramsBuilderClass = authSchemeSpecUtils.parametersEndpointAwareDefaultImplName().nestedClass("Builder");
builder.beginControlFlow("if (builder instanceof $T)",
paramsBuilderClass);
ClassName endpointProviderClass = endpointRulesSpecUtils.providerInterfaceName();
builder.addStatement("$T endpointProvider = executionAttributes.getAttribute($T.ENDPOINT_PROVIDER)",
EndpointProvider.class,
SdkInternalExecutionAttribute.class);
builder.beginControlFlow("if (endpointProvider instanceof $T)", endpointProviderClass);
builder.addStatement("(($T)builder).endpointProvider(($T)endpointProvider)", paramsBuilderClass, endpointProviderClass);
builder.endControlFlow();
builder.endControlFlow();
builder.addStatement("return builder.build()");
return builder.build();
}