From 323c41f3376486282adbe418c9ff3643bc1a7212 Mon Sep 17 00:00:00 2001 From: "Kamat, Trivikram" <16024985+trivikr@users.noreply.github.com> Date: Mon, 10 Jan 2022 17:17:52 +0000 Subject: [PATCH] fix(codegen): populate dnsSuffix in endpoint before populating hostname in hash --- .../typescript/codegen/EndpointGenerator.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/EndpointGenerator.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/EndpointGenerator.java index dd7edd196d0c0..af2ab00f89ad6 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/EndpointGenerator.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/EndpointGenerator.java @@ -96,7 +96,10 @@ private void loadServiceEndpoints() { && (config.containsMember("hostname") || config.containsMember("variants"))) { String region = entry.getKey(); String hostname = config.getStringMemberOrDefault("hostname", partition.hostnameTemplate); - String resolvedHostname = getResolvedHostname(hostname, dnsSuffix, endpointPrefix, region); + String resolvedHostname = getResolvedHostnameWithDnsSuffix( + getResolvedHostname(hostname, endpointPrefix, region), + dnsSuffix + ); ArrayNode variants = config.getArrayMember("variants").orElse(ArrayNode.fromNodes()); ArrayNode defaultVariant = ArrayNode.fromNodes(getDefaultVariant(resolvedHostname)); @@ -187,15 +190,18 @@ private ObjectNode getDefaultVariant(String hostname) { .withMember("tags", ArrayNode.fromStrings(Collections.emptyList())); } - private String getResolvedHostname(String hostnameTemplate, String dnsSuffix, String service) { - return getResolvedHostname(hostnameTemplate, dnsSuffix, service, "{region}"); + private String getResolvedHostname(String hostnameTemplate, String service) { + return getResolvedHostname(hostnameTemplate, service, "{region}"); } - private String getResolvedHostname(String hostnameTemplate, String dnsSuffix, String service, String region) { + private String getResolvedHostname(String hostnameTemplate, String service, String region) { return hostnameTemplate .replace("{service}", service) - .replace("{region}", region) - .replace("{dnsSuffix}", dnsSuffix); + .replace("{region}", region); + } + + private String getResolvedHostnameWithDnsSuffix(String hostnameTemplate, String dnsSuffix) { + return hostnameTemplate.replace("{dnsSuffix}", dnsSuffix); } private final class Partition { @@ -219,7 +225,7 @@ private Partition(ObjectNode config, String partition) { // Resolve the template to use for this service in this partition. String hostname = defaults.expectStringMember("hostname").getValue(); - hostnameTemplate = getResolvedHostname(hostname, dnsSuffix, endpointPrefix); + hostnameTemplate = getResolvedHostname(hostname, endpointPrefix); ArrayNode mergedVariants = getMergedVariants( partitionDefaults.getArrayMember("variants").orElse(Node.arrayNode()), @@ -249,12 +255,15 @@ Set getAllRegions() { private ArrayNode getVariants(ArrayNode mergedVariants) { List allVariants = new ArrayList(); - allVariants.add(getDefaultVariant(hostnameTemplate)); + allVariants.add(getDefaultVariant(getResolvedHostnameWithDnsSuffix(hostnameTemplate, this.dnsSuffix))); mergedVariants.forEach(mergedVariant -> { ObjectNode variantNode = mergedVariant.expectObjectNode(); String hostname = variantNode.expectStringMember("hostname").getValue(); String dnsSuffix = variantNode.getStringMemberOrDefault("dnsSuffix", this.dnsSuffix); - String resolvedHostname = getResolvedHostname(hostname, dnsSuffix, endpointPrefix); + String resolvedHostname = getResolvedHostnameWithDnsSuffix( + getResolvedHostname(hostname, endpointPrefix), + dnsSuffix + ); allVariants.add(variantNode.withMember("hostname", resolvedHostname).withoutMember("dnsSuffix")); });