software.amazon.awssdk.services.cloudformation.DefaultCloudFormationBaseClientBuilder Maven / Gradle / Ivy
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package software.amazon.awssdk.services.cloudformation;
import java.util.ArrayList;
import java.util.List;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.auth.signer.Aws4Signer;
import software.amazon.awssdk.awscore.client.builder.AwsDefaultClientBuilder;
import software.amazon.awssdk.core.client.config.SdkAdvancedClientOption;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.core.interceptor.ClasspathInterceptorChainFactory;
import software.amazon.awssdk.core.interceptor.ExecutionInterceptor;
import software.amazon.awssdk.core.signer.Signer;
import software.amazon.awssdk.protocols.query.interceptor.QueryParametersToBodyInterceptor;
import software.amazon.awssdk.services.cloudformation.endpoints.CloudFormationEndpointProvider;
import software.amazon.awssdk.services.cloudformation.endpoints.internal.CloudFormationEndpointAuthSchemeInterceptor;
import software.amazon.awssdk.services.cloudformation.endpoints.internal.CloudFormationRequestSetEndpointInterceptor;
import software.amazon.awssdk.services.cloudformation.endpoints.internal.CloudFormationResolveEndpointInterceptor;
import software.amazon.awssdk.utils.CollectionUtils;
/**
* Internal base class for {@link DefaultCloudFormationClientBuilder} and
* {@link DefaultCloudFormationAsyncClientBuilder}.
*/
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
abstract class DefaultCloudFormationBaseClientBuilder, C> extends
AwsDefaultClientBuilder {
@Override
protected final String serviceEndpointPrefix() {
return "cloudformation";
}
@Override
protected final String serviceName() {
return "CloudFormation";
}
@Override
protected final SdkClientConfiguration mergeServiceDefaults(SdkClientConfiguration config) {
return config.merge(c -> c.option(SdkClientOption.ENDPOINT_PROVIDER, defaultEndpointProvider())
.option(SdkAdvancedClientOption.SIGNER, defaultSigner())
.option(SdkClientOption.CRC32_FROM_COMPRESSED_DATA_ENABLED, false));
}
@Override
protected final SdkClientConfiguration finalizeServiceConfiguration(SdkClientConfiguration config) {
List endpointInterceptors = new ArrayList<>();
endpointInterceptors.add(new CloudFormationResolveEndpointInterceptor());
endpointInterceptors.add(new CloudFormationEndpointAuthSchemeInterceptor());
endpointInterceptors.add(new CloudFormationRequestSetEndpointInterceptor());
ClasspathInterceptorChainFactory interceptorFactory = new ClasspathInterceptorChainFactory();
List interceptors = interceptorFactory
.getInterceptors("software/amazon/awssdk/services/cloudformation/execution.interceptors");
List additionalInterceptors = new ArrayList<>();
additionalInterceptors.add(new QueryParametersToBodyInterceptor());
interceptors = CollectionUtils.mergeLists(endpointInterceptors, interceptors);
interceptors = CollectionUtils.mergeLists(interceptors, additionalInterceptors);
interceptors = CollectionUtils.mergeLists(interceptors, config.option(SdkClientOption.EXECUTION_INTERCEPTORS));
return config.toBuilder().option(SdkClientOption.EXECUTION_INTERCEPTORS, interceptors).build();
}
private Signer defaultSigner() {
return Aws4Signer.create();
}
@Override
protected final String signingName() {
return "cloudformation";
}
private CloudFormationEndpointProvider defaultEndpointProvider() {
return CloudFormationEndpointProvider.defaultProvider();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy