Skip to content

Commit 6f20a32

Browse files
committed
chore(codegen): add utility getResolvedHostname
1 parent 22b7a55 commit 6f20a32

File tree

1 file changed

+26
-16
lines changed
  • codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen

1 file changed

+26
-16
lines changed

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/EndpointGenerator.java

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,14 @@ private void loadServiceEndpoints() {
9595
// TODO: Do not populate config if "deprecated" is present.
9696
if (config.containsMember("hostname") || config.containsMember("variants")) {
9797
String hostname = config.getStringMemberOrDefault("hostname", partition.hostnameTemplate);
98+
String resolvedHostname = getResolvedHostname(hostname, dnsSuffix, endpointPrefix, entry.getKey());
9899

99-
hostname = hostname.replace("{dnsSuffix}", dnsSuffix);
100-
hostname = hostname.replace("{service}", endpointPrefix);
101-
hostname = hostname.replace("{region}", entry.getKey());
102100
// TODO: Remove hostname after fully switching to variants.
103-
config = config.withMember("hostname", hostname);
101+
config = config.withMember("hostname", resolvedHostname);
104102

105103
ArrayNode variants = config.getArrayMember("variants").orElse(
106104
ArrayNode.fromNodes());
107-
ArrayNode defaultVariant = ArrayNode.fromNodes(getDefaultVariant(hostname));
105+
ArrayNode defaultVariant = ArrayNode.fromNodes(getDefaultVariant(resolvedHostname));
108106

109107
// Populate hostname as the default variant.
110108
config = config.withMember("variants", variants.merge(defaultVariant));
@@ -200,6 +198,24 @@ private ObjectNode getDefaultVariant(String hostname) {
200198
return ObjectNode.fromStringMap(defaultVariant).withMember("tags", defaultVariantTags);
201199
}
202200

201+
private String getResolvedHostname(
202+
String hostnameTemplate,
203+
String dnsSuffix,
204+
String service) {
205+
return getResolvedHostname(hostnameTemplate, dnsSuffix, service, "{region}");
206+
}
207+
208+
private String getResolvedHostname(
209+
String hostnameTemplate,
210+
String dnsSuffix,
211+
String service,
212+
String region) {
213+
return hostnameTemplate
214+
.replace("{service}", service)
215+
.replace("{region}", region)
216+
.replace("{dnsSuffix}", dnsSuffix);
217+
}
218+
203219
private final class Partition {
204220
final ObjectNode defaults;
205221
final String dnsSuffix;
@@ -219,10 +235,8 @@ private Partition(ObjectNode config, String partition) {
219235
regionRegex = config.expectStringMember("regionRegex").getValue();
220236

221237
// Resolve the template to use for this service in this partition.
222-
String template = defaults.expectStringMember("hostname").getValue();
223-
template = template.replace("{service}", endpointPrefix);
224-
template = template.replace("{dnsSuffix}", dnsSuffix);
225-
hostnameTemplate = template;
238+
String hostname = defaults.expectStringMember("hostname").getValue();
239+
hostnameTemplate = getResolvedHostname(hostname, dnsSuffix, endpointPrefix);
226240
}
227241

228242
ObjectNode getDefaults() {
@@ -255,13 +269,9 @@ ArrayNode getVariants() {
255269
variants.forEach(variant -> {
256270
ObjectNode variantNode = variant.expectObjectNode();
257271
String hostname = variantNode.expectStringMember("hostname").getValue();
258-
if (variantNode.containsMember("dnsSuffix")) {
259-
String dnsSuffix = variantNode.expectStringMember("dnsSuffix").getValue();
260-
hostname = hostname.replace("{dnsSuffix}", dnsSuffix);
261-
}
262-
hostname = hostname.replace("{service}", endpointPrefix);
263-
hostname = hostname.replace("{dnsSuffix}", dnsSuffix);
264-
allVariants.add(variantNode.withMember("hostname", hostname).withoutMember("dnsSuffix"));
272+
String dnsSuffix = variantNode.getStringMemberOrDefault("dnsSuffix", this.dnsSuffix);
273+
String resolvedHostname = getResolvedHostname(hostname, dnsSuffix, endpointPrefix);
274+
allVariants.add(variantNode.withMember("hostname", resolvedHostname).withoutMember("dnsSuffix"));
265275
});
266276
}
267277
allVariants.add(getDefaultVariant(hostnameTemplate));

0 commit comments

Comments
 (0)