Skip to content

Commit 9877431

Browse files
trivikrsrchase
authored andcommitted
Do not check for labels in empty input while writing hostPrefix (smithy-lang#273)
1 parent 5014c5c commit 9877431

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpProtocolGeneratorUtils.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -387,17 +387,19 @@ static void writeHostPrefix(GenerationContext context, OperationShape operation)
387387
writer.addImport("isValidHostname", "__isValidHostname",
388388
TypeScriptDependency.AWS_SDK_PROTOCOL_HTTP.packageName);
389389
writer.write("resolvedHostname = $S + resolvedHostname;", trait.getHostPrefix().toString());
390-
List<SmithyPattern.Segment> prefixLabels = trait.getHostPrefix().getLabels();
391-
StructureShape inputShape = context.getModel().expectShape(operation.getInput()
392-
.get(), StructureShape.class);
393-
for (SmithyPattern.Segment label : prefixLabels) {
394-
MemberShape member = inputShape.getMember(label.getContent()).get();
395-
String memberName = symbolProvider.toMemberName(member);
396-
writer.openBlock("if (input.$L === undefined) {", "}", memberName, () -> {
397-
writer.write("throw new Error('Empty value provided for input host prefix: $L.');", memberName);
398-
});
399-
writer.write("resolvedHostname = resolvedHostname.replace(\"{$L}\", input.$L!)",
400-
label.getContent(), memberName);
390+
if (operation.getInput().isPresent()) {
391+
List<SmithyPattern.Segment> prefixLabels = trait.getHostPrefix().getLabels();
392+
StructureShape inputShape = context.getModel().expectShape(operation.getInput()
393+
.get(), StructureShape.class);
394+
for (SmithyPattern.Segment label : prefixLabels) {
395+
MemberShape member = inputShape.getMember(label.getContent()).get();
396+
String memberName = symbolProvider.toMemberName(member);
397+
writer.openBlock("if (input.$L === undefined) {", "}", memberName, () -> {
398+
writer.write("throw new Error('Empty value provided for input host prefix: $L.');", memberName);
399+
});
400+
writer.write("resolvedHostname = resolvedHostname.replace(\"{$L}\", input.$L!)",
401+
label.getContent(), memberName);
402+
}
401403
}
402404
writer.openBlock("if (!__isValidHostname(resolvedHostname)) {", "}", () -> {
403405
writer.write("throw new Error(\"ValidationError: prefixed hostname must be hostname compatible.\");");

0 commit comments

Comments
 (0)