Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,12 @@
<Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/>
</Match>

<!-- See SpotBugs bug: https://github.com/spotbugs/spotbugs/issues/600, https://github.com/spotbugs/spotbugs/issues/756 -->
<Match>
<Class name="software.amazon.awssdk.core.SdkServiceClientConfiguration$Builder"/>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SpotBugs gets confused about the nullability of the overrideConfiguration, probably because is looking at the default method that throws an UnsupportedOperationException. Adding this since I'm certain that this value can be null.

<Method name="overrideConfiguration"/>
<Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/>
</Match>

<!-- If we're not sure about the RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT, skip the warning. -->
<Match>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -744,9 +744,11 @@ private MethodSpec invokePluginsMethod() {
.endControlFlow();
builder.addStatement("$1T.BuilderInternal serviceConfigBuilder = $1T.builder(config.toBuilder())",
configurationUtils.serviceClientConfigurationBuilderClassName());
builder.addStatement("serviceConfigBuilder.overrideConfiguration(overrideConfiguration())");
builder.beginControlFlow("for ($T plugin : plugins)", SdkPlugin.class)
.addStatement("plugin.configureClient(serviceConfigBuilder)")
.endControlFlow();
builder.addStatement("overrideConfiguration(serviceConfigBuilder.overrideConfiguration())");
builder.addStatement("return serviceConfigBuilder.buildSdkClientConfiguration()");
return builder.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@ protected static MethodSpec updateSdkClientConfigurationMethod(
.endControlFlow();
builder.addStatement("$1T.BuilderInternal serviceConfigBuilder = $1T.builder(clientConfiguration.toBuilder())",
serviceClientConfigurationBuilderClassName);
builder.addStatement("serviceConfigBuilder.overrideConfiguration(serviceClientConfiguration.overrideConfiguration())");
builder.beginControlFlow("for ($T plugin : plugins)", SdkPlugin.class)
.addStatement("plugin.configureClient(serviceConfigBuilder)")
.endControlFlow();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ protected List<GeneratorTask> createTasks() throws Exception {
private static String loadConfigUtilCode() {
try {
InputStream is = SdkClientConfigurationUtilGeneratorTask.class.getResourceAsStream(
"/software/amazon/awssdk/codegen/poet/model/SdkClientConfigurationUtil.java.resource");
"/software/amazon/awssdk/codegen/poet/model/SdkClientConfigurationUtil.resource.java");
return IoUtils.toUtf8String(is);
} catch (IOException ioe) {
throw new UncheckedIOException(ioe);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,15 +102,6 @@ private Field overrideConfigurationField() {
.doc("client override configuration")
.definingClass(SdkServiceClientConfiguration.class);

builder.constructFromConfiguration(
CodeBlock.builder()
.addStatement("this.overrideConfiguration = $T.copyConfigurationToOverrides("
+ "$T.builder(), internalBuilder).build()",
sdkClientConfigurationUtilClassName,
ClientOverrideConfiguration.class)
.build()
);

builder.copyToConfiguration(
CodeBlock.builder()
.beginControlFlow("if (overrideConfiguration != null)")
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.core.client.config.ClientOption;
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.internal.SdkInternalTestAdvancedClientOption;
import software.amazon.awssdk.core.signer.Signer;
import software.amazon.awssdk.profiles.ProfileFile;
import software.amazon.awssdk.profiles.ProfileFileSupplier;

@SdkInternalApi
public final class SdkClientConfigurationUtil {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renamed from SdkClientConfigurationUtil.java.resource to SdkClientConfigurationUtil.resource.java to make it easier for editors to identify it as a Java file. Also removed the method copyConfigurationToOverrides which is not longer used.

private SdkClientConfigurationUtil() {
}

/**
* Copies the {@link ClientOverrideConfiguration} values to the configuration builder.
*/
public static SdkClientConfiguration.Builder copyOverridesToConfiguration(ClientOverrideConfiguration overrides,
SdkClientConfiguration.Builder builder) {

// misc
setClientOption(builder, SdkClientOption.ADDITIONAL_HTTP_HEADERS, overrides.headers());
setClientOption(builder, SdkClientOption.RETRY_POLICY, overrides.retryPolicy());
setClientOption(builder, SdkClientOption.API_CALL_TIMEOUT, overrides.apiCallTimeout());
setClientOption(builder, SdkClientOption.API_CALL_ATTEMPT_TIMEOUT, overrides.apiCallAttemptTimeout());
setClientOption(builder, SdkClientOption.SCHEDULED_EXECUTOR_SERVICE, overrides.scheduledExecutorService());
setClientListOption(builder, SdkClientOption.EXECUTION_INTERCEPTORS, overrides.executionInterceptors());
setClientOption(builder, SdkClientOption.EXECUTION_ATTRIBUTES, overrides.executionAttributes());

// advanced option
Signer signer = overrides.advancedOption(SdkAdvancedClientOption.SIGNER).orElse(null);
if (signer != null) {
builder.option(SdkAdvancedClientOption.SIGNER, signer);
builder.option(SdkClientOption.SIGNER_OVERRIDDEN, true);
}
setClientOption(builder, SdkAdvancedClientOption.USER_AGENT_SUFFIX,
overrides.advancedOption(SdkAdvancedClientOption.USER_AGENT_SUFFIX));
setClientOption(builder, SdkAdvancedClientOption.USER_AGENT_PREFIX,
overrides.advancedOption(SdkAdvancedClientOption.USER_AGENT_PREFIX));
setClientOption(builder, SdkAdvancedClientOption.DISABLE_HOST_PREFIX_INJECTION,
overrides.advancedOption(SdkAdvancedClientOption.DISABLE_HOST_PREFIX_INJECTION));
overrides.advancedOption(SdkInternalTestAdvancedClientOption.ENDPOINT_OVERRIDDEN_OVERRIDE).ifPresent(value -> {
builder.option(SdkClientOption.ENDPOINT_OVERRIDDEN, value);
});

// profile
ProfileFile profileFile = overrides.defaultProfileFile().orElse(null);
if (profileFile != null) {
builder.option(SdkClientOption.PROFILE_FILE_SUPPLIER, ProfileFileSupplier.fixedProfileFile(profileFile));
}
setClientOption(builder, SdkClientOption.PROFILE_NAME, overrides.defaultProfileName());

// misc
setClientListOption(builder, SdkClientOption.METRIC_PUBLISHERS, overrides.metricPublishers());
setClientOption(builder, SdkAdvancedClientOption.TOKEN_SIGNER,
overrides.advancedOption(SdkAdvancedClientOption.TOKEN_SIGNER));
setClientOption(builder, SdkClientOption.COMPRESSION_CONFIGURATION, overrides.compressionConfiguration());

return builder;
}

static <T> void setClientOption(SdkClientConfiguration.Builder builder, ClientOption<T> option, T newValue) {
if (newValue != null) {
T oldValue = builder.option(option);
if (oldValue == null || !oldValue.equals(newValue)) {
builder.option(option, newValue);
}
}
}

static <T> void setClientOption(SdkClientConfiguration.Builder builder, ClientOption<T> option, Optional<T> newValueOpt) {
setClientOption(builder, option, newValueOpt.orElse(null));
}

static <T> void setClientListOption(SdkClientConfiguration.Builder builder, ClientOption<List<T>> option, List<T> newValue) {
if (newValue == null || newValue.isEmpty()) {
return;
}
List<T> oldValue = builder.option(option);
if (oldValue == null || oldValue.isEmpty()) {
builder.option(option, newValue);
return;
}
// Make sure that we don't override derived values or duplicate existing ones.
List<T> result = new ArrayList<>(oldValue);
Set<T> dedup = new HashSet<>();
dedup.addAll(oldValue);
for (T value : newValue) {
if (!dedup.contains(value)) {
result.add(value);
}
}
builder.option(option, result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,11 @@ protected SdkClientConfiguration invokePlugins(SdkClientConfiguration config) {
}
JsonServiceClientConfigurationBuilder.BuilderInternal serviceConfigBuilder = JsonServiceClientConfigurationBuilder
.builder(config.toBuilder());
serviceConfigBuilder.overrideConfiguration(overrideConfiguration());
for (SdkPlugin plugin : plugins) {
plugin.configureClient(serviceConfigBuilder);
}
overrideConfiguration(serviceConfigBuilder.overrideConfiguration());
return serviceConfigBuilder.buildSdkClientConfiguration();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,9 +220,11 @@ protected SdkClientConfiguration invokePlugins(SdkClientConfiguration config) {
}
JsonServiceClientConfigurationBuilder.BuilderInternal serviceConfigBuilder = JsonServiceClientConfigurationBuilder
.builder(config.toBuilder());
serviceConfigBuilder.overrideConfiguration(overrideConfiguration());
for (SdkPlugin plugin : plugins) {
plugin.configureClient(serviceConfigBuilder);
}
overrideConfiguration(serviceConfigBuilder.overrideConfiguration());
return serviceConfigBuilder.buildSdkClientConfiguration();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,11 @@ protected SdkClientConfiguration invokePlugins(SdkClientConfiguration config) {
}
QueryServiceClientConfigurationBuilder.BuilderInternal serviceConfigBuilder = QueryServiceClientConfigurationBuilder
.builder(config.toBuilder());
serviceConfigBuilder.overrideConfiguration(overrideConfiguration());
for (SdkPlugin plugin : plugins) {
plugin.configureClient(serviceConfigBuilder);
}
overrideConfiguration(serviceConfigBuilder.overrideConfiguration());
return serviceConfigBuilder.buildSdkClientConfiguration();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,11 @@ protected SdkClientConfiguration invokePlugins(SdkClientConfiguration config) {
}
JsonServiceClientConfigurationBuilder.BuilderInternal serviceConfigBuilder = JsonServiceClientConfigurationBuilder
.builder(config.toBuilder());
serviceConfigBuilder.overrideConfiguration(overrideConfiguration());
for (SdkPlugin plugin : plugins) {
plugin.configureClient(serviceConfigBuilder);
}
overrideConfiguration(serviceConfigBuilder.overrideConfiguration());
return serviceConfigBuilder.buildSdkClientConfiguration();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,11 @@ protected SdkClientConfiguration invokePlugins(SdkClientConfiguration config) {
}
JsonServiceClientConfigurationBuilder.BuilderInternal serviceConfigBuilder = JsonServiceClientConfigurationBuilder
.builder(config.toBuilder());
serviceConfigBuilder.overrideConfiguration(overrideConfiguration());
for (SdkPlugin plugin : plugins) {
plugin.configureClient(serviceConfigBuilder);
}
overrideConfiguration(serviceConfigBuilder.overrideConfiguration());
return serviceConfigBuilder.buildSdkClientConfiguration();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,11 @@ protected SdkClientConfiguration invokePlugins(SdkClientConfiguration config) {
}
DatabaseServiceClientConfigurationBuilder.BuilderInternal serviceConfigBuilder = DatabaseServiceClientConfigurationBuilder
.builder(config.toBuilder());
serviceConfigBuilder.overrideConfiguration(overrideConfiguration());
for (SdkPlugin plugin : plugins) {
plugin.configureClient(serviceConfigBuilder);
}
overrideConfiguration(serviceConfigBuilder.overrideConfiguration());
return serviceConfigBuilder.buildSdkClientConfiguration();
}

Expand Down
Loading