diff --git a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java index d38dff08145..2a374d3849a 100644 --- a/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java +++ b/smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/integration/HttpBindingProtocolGenerator.java @@ -873,13 +873,15 @@ private void writeRequestQueryParam( Shape target = model.expectShape(binding.getMember().getTarget()); boolean isIdempotencyToken = binding.getMember().hasTrait(IdempotencyTokenTrait.class); - if (isIdempotencyToken) { + boolean isRequired = binding.getMember().isRequired(); + + String idempotencyComponent = ""; + if (isIdempotencyToken && !isRequired) { writer .addDependency(TypeScriptDependency.UUID_TYPES) .addImport("v4", "generateIdempotencyToken", TypeScriptDependency.UUID); + idempotencyComponent = " ?? generateIdempotencyToken()"; } - boolean isRequired = binding.getMember().isRequired(); - String idempotencyComponent = (isIdempotencyToken && !isRequired) ? " ?? generateIdempotencyToken()" : ""; String memberAssertionComponent = (idempotencyComponent.isEmpty() ? "!" : ""); String queryValue = getInputValue( @@ -1004,17 +1006,12 @@ private void writeNormalHeader(GenerationContext context, HttpBinding binding) { binding.getMember(), target ); - boolean isIdempotencyToken = binding.getMember().hasTrait(IdempotencyTokenTrait.class); - if (isIdempotencyToken) { - context.getWriter() - .addDependency(TypeScriptDependency.UUID_TYPES) - .addImport("v4", "generateIdempotencyToken", TypeScriptDependency.UUID); - } boolean headerAssertion = headerValue.endsWith("!"); String headerBaseValue = (headerAssertion ? headerValue.substring(0, headerValue.length() - 1) : headerValue); + boolean isIdempotencyToken = binding.getMember().hasTrait(IdempotencyTokenTrait.class); if (!Objects.equals(memberLocation + "!", headerValue)) { String defaultValue = ""; @@ -1022,6 +1019,9 @@ private void writeNormalHeader(GenerationContext context, HttpBinding binding) { String s = headerBuffer.get(headerKey); defaultValue = " || " + s.substring(s.indexOf(": ") + 2, s.length() - 1); } else if (isIdempotencyToken) { + context.getWriter() + .addDependency(TypeScriptDependency.UUID_TYPES) + .addImport("v4", "generateIdempotencyToken", TypeScriptDependency.UUID); defaultValue = " ?? generateIdempotencyToken()"; } @@ -1046,6 +1046,9 @@ private void writeNormalHeader(GenerationContext context, HttpBinding binding) { String s = headerBuffer.get(headerKey); constructedHeaderValue += " || " + s.substring(s.indexOf(": ") + 2, s.length() - 1); } else if (isIdempotencyToken) { + context.getWriter() + .addDependency(TypeScriptDependency.UUID_TYPES) + .addImport("v4", "generateIdempotencyToken", TypeScriptDependency.UUID); constructedHeaderValue += " ?? generateIdempotencyToken()"; } else { constructedHeaderValue = headerValue;