From a704559749efa035a72cf60167cbc1caee53e10e Mon Sep 17 00:00:00 2001 From: Zoe Wang <33073555+zoewangg@users.noreply.github.com> Date: Tue, 2 Nov 2021 10:31:04 -0700 Subject: [PATCH] Add tlsNegotiationTimeout --- .../codegen/lite/defaultsmode/DefaultsLoader.java | 1 - .../DefaultsModeConfigurationGenerator.java | 13 +++++++++++-- .../defaultsmode/defaults-mode-configuration.java | 12 ++++++++---- .../codegen/lite/defaultsmode/defaults-mode.java | 1 + 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/defaultsmode/DefaultsLoader.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/defaultsmode/DefaultsLoader.java index 05d938c65a13..be455e729f60 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/defaultsmode/DefaultsLoader.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/defaultsmode/DefaultsLoader.java @@ -40,7 +40,6 @@ public final class DefaultsLoader { static { UNSUPPORTED_OPTIONS.add("stsRegionalEndpoints"); - UNSUPPORTED_OPTIONS.add("tlsNegotiationTimeoutInMillis"); } private DefaultsLoader() { diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/defaultsmode/DefaultsModeConfigurationGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/defaultsmode/DefaultsModeConfigurationGenerator.java index e049f2276063..558779909187 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/defaultsmode/DefaultsModeConfigurationGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/defaultsmode/DefaultsModeConfigurationGenerator.java @@ -49,15 +49,23 @@ public class DefaultsModeConfigurationGenerator implements PoetClass { private static final String HTTP_DEFAULTS_VAR_SUFFIX = "_HTTP_DEFAULTS"; private static final Map CONFIGURATION_MAPPING = new HashMap<>(); private static final Map HTTP_CONFIGURATION_MAPPING = new HashMap<>(); + private static final String CONNECT_TIMEOUT_IN_MILLIS = "connectTimeoutInMillis"; + private static final String TLS_NEGOTIATION_TIMEOUT_IN_MILLIS = "tlsNegotiationTimeoutInMillis"; + private final String basePackage; private final String defaultsModeBase; private final DefaultConfiguration configuration; static { - HTTP_CONFIGURATION_MAPPING.put("connectTimeoutInMillis", + HTTP_CONFIGURATION_MAPPING.put(CONNECT_TIMEOUT_IN_MILLIS, new OptionMetadata(ClassName.get("java.time", "Duration"), ClassName.get("software.amazon.awssdk.http", "SdkHttpConfigurationOption", "CONNECTION_TIMEOUT"))); + HTTP_CONFIGURATION_MAPPING.put(TLS_NEGOTIATION_TIMEOUT_IN_MILLIS, + new OptionMetadata(ClassName.get("java.time", "Duration"), + ClassName.get("software.amazon.awssdk.http", + "SdkHttpConfigurationOption", + "TLS_NEGOTIATION_TIMEOUT"))); CONFIGURATION_MAPPING.put("retryMode", new OptionMetadata(ClassName.get("software.amazon.awssdk.core.retry", "RetryMode" ), ClassName.get("software.amazon.awssdk.core.client.config", "SdkClientOption", "DEFAULT_RETRY_MODE"))); } @@ -179,7 +187,8 @@ private void attributeMapBuilder(String option, String value, CodeBlock.Builder private void httpAttributeMapBuilder(String option, String value, CodeBlock.Builder attributeBuilder) { OptionMetadata optionMetadata = HTTP_CONFIGURATION_MAPPING.get(option); switch (option) { - case "connectTimeoutInMillis": + case CONNECT_TIMEOUT_IN_MILLIS: + case TLS_NEGOTIATION_TIMEOUT_IN_MILLIS: attributeBuilder.add(".put($T, $T.ofMillis($N))", optionMetadata.attribute, optionMetadata.type, value); break; default: diff --git a/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/defaultsmode/defaults-mode-configuration.java b/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/defaultsmode/defaults-mode-configuration.java index e7ca75d552c4..a6bc4763376a 100644 --- a/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/defaultsmode/defaults-mode-configuration.java +++ b/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/defaultsmode/defaults-mode-configuration.java @@ -20,25 +20,29 @@ public final class DefaultsModeConfiguration { .put(SdkClientOption.DEFAULT_RETRY_MODE, RetryMode.STANDARD).build(); private static final AttributeMap STANDARD_HTTP_DEFAULTS = AttributeMap.builder() - .put(SdkHttpConfigurationOption.CONNECTION_TIMEOUT, Duration.ofMillis(2000)).build(); + .put(SdkHttpConfigurationOption.CONNECTION_TIMEOUT, Duration.ofMillis(2000)) + .put(SdkHttpConfigurationOption.TLS_NEGOTIATION_TIMEOUT, Duration.ofMillis(2000)).build(); private static final AttributeMap MOBILE_DEFAULTS = AttributeMap.builder() .put(SdkClientOption.DEFAULT_RETRY_MODE, RetryMode.ADAPTIVE).build(); private static final AttributeMap MOBILE_HTTP_DEFAULTS = AttributeMap.builder() - .put(SdkHttpConfigurationOption.CONNECTION_TIMEOUT, Duration.ofMillis(10000)).build(); + .put(SdkHttpConfigurationOption.CONNECTION_TIMEOUT, Duration.ofMillis(10000)) + .put(SdkHttpConfigurationOption.TLS_NEGOTIATION_TIMEOUT, Duration.ofMillis(11000)).build(); private static final AttributeMap CROSS_REGION_DEFAULTS = AttributeMap.builder() .put(SdkClientOption.DEFAULT_RETRY_MODE, RetryMode.STANDARD).build(); private static final AttributeMap CROSS_REGION_HTTP_DEFAULTS = AttributeMap.builder() - .put(SdkHttpConfigurationOption.CONNECTION_TIMEOUT, Duration.ofMillis(2800)).build(); + .put(SdkHttpConfigurationOption.CONNECTION_TIMEOUT, Duration.ofMillis(2800)) + .put(SdkHttpConfigurationOption.TLS_NEGOTIATION_TIMEOUT, Duration.ofMillis(2800)).build(); private static final AttributeMap IN_REGION_DEFAULTS = AttributeMap.builder() .put(SdkClientOption.DEFAULT_RETRY_MODE, RetryMode.STANDARD).build(); private static final AttributeMap IN_REGION_HTTP_DEFAULTS = AttributeMap.builder() - .put(SdkHttpConfigurationOption.CONNECTION_TIMEOUT, Duration.ofMillis(1000)).build(); + .put(SdkHttpConfigurationOption.CONNECTION_TIMEOUT, Duration.ofMillis(1000)) + .put(SdkHttpConfigurationOption.TLS_NEGOTIATION_TIMEOUT, Duration.ofMillis(1000)).build(); private static final AttributeMap LEGACY_DEFAULTS = AttributeMap.empty(); diff --git a/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/defaultsmode/defaults-mode.java b/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/defaultsmode/defaults-mode.java index 0d78d3a2fd2f..7b75cebc3134 100644 --- a/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/defaultsmode/defaults-mode.java +++ b/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/defaultsmode/defaults-mode.java @@ -13,6 +13,7 @@ *
  • retryMode: PLACEHOLDER
  • *
  • s3UsEast1RegionalEndpoints: PLACEHOLDER
  • *
  • connectTimeoutInMillis: PLACEHOLDER
  • + *
  • tlsNegotiationTimeoutInMillis: PLACEHOLDER
  • * *

    * All options above can be configured by users, and the overridden value will take precedence.