software.amazon.awssdk.services.ses.DefaultSesBaseClientBuilder 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.ses;
import java.util.ArrayList;
import java.util.Collections;
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.SdkPlugin;
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;
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.ses.endpoints.SesEndpointProvider;
import software.amazon.awssdk.services.ses.endpoints.internal.SesRequestSetEndpointInterceptor;
import software.amazon.awssdk.services.ses.endpoints.internal.SesResolveEndpointInterceptor;
import software.amazon.awssdk.services.ses.internal.SdkClientConfigurationUtil;
import software.amazon.awssdk.services.ses.internal.SesServiceClientConfigurationBuilder;
import software.amazon.awssdk.utils.CollectionUtils;
import software.amazon.awssdk.utils.Validate;
/**
* Internal base class for {@link DefaultSesClientBuilder} and {@link DefaultSesAsyncClientBuilder}.
*/
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
abstract class DefaultSesBaseClientBuilder, C> extends AwsDefaultClientBuilder {
@Override
protected final String serviceEndpointPrefix() {
return "email";
}
@Override
protected final String serviceName() {
return "Ses";
}
@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 SesResolveEndpointInterceptor());
endpointInterceptors.add(new SesRequestSetEndpointInterceptor());
ClasspathInterceptorChainFactory interceptorFactory = new ClasspathInterceptorChainFactory();
List interceptors = interceptorFactory
.getInterceptors("software/amazon/awssdk/services/ses/execution.interceptors");
List additionalInterceptors = new ArrayList<>();
interceptors = CollectionUtils.mergeLists(endpointInterceptors, interceptors);
interceptors = CollectionUtils.mergeLists(interceptors, additionalInterceptors);
interceptors = CollectionUtils.mergeLists(interceptors, config.option(SdkClientOption.EXECUTION_INTERCEPTORS));
List protocolInterceptors = Collections.singletonList(new QueryParametersToBodyInterceptor());
interceptors = CollectionUtils.mergeLists(interceptors, protocolInterceptors);
SdkClientConfiguration.Builder builder = config.toBuilder();
builder.option(SdkClientOption.EXECUTION_INTERCEPTORS, interceptors);
return builder.build();
}
private Signer defaultSigner() {
return Aws4Signer.create();
}
@Override
protected final String signingName() {
return "ses";
}
private SesEndpointProvider defaultEndpointProvider() {
return SesEndpointProvider.defaultProvider();
}
@Override
protected SdkClientConfiguration setOverrides(SdkClientConfiguration configuration) {
ClientOverrideConfiguration overrideConfiguration = overrideConfiguration();
if (overrideConfiguration == null) {
return configuration;
}
return SdkClientConfigurationUtil.copyOverridesToConfiguration(overrideConfiguration, configuration.toBuilder()).build();
}
@Override
protected SdkClientConfiguration invokePlugins(SdkClientConfiguration config) {
List plugins = plugins();
if (plugins.isEmpty()) {
return config;
}
SesServiceClientConfigurationBuilder.BuilderInternal serviceConfigBuilder = SesServiceClientConfigurationBuilder
.builder(config.toBuilder());
serviceConfigBuilder.overrideConfiguration(overrideConfiguration());
for (SdkPlugin plugin : plugins) {
plugin.configureClient(serviceConfigBuilder);
}
overrideConfiguration(serviceConfigBuilder.overrideConfiguration());
return serviceConfigBuilder.buildSdkClientConfiguration();
}
protected static void validateClientOptions(SdkClientConfiguration c) {
Validate.notNull(c.option(SdkAdvancedClientOption.SIGNER),
"The 'overrideConfiguration.advancedOption[SIGNER]' must be configured in the client builder.");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy