diff --git a/codegen/protocol-test-codegen/build.gradle.kts b/codegen/protocol-test-codegen/build.gradle.kts index 2da07cf2910..483f949a668 100644 --- a/codegen/protocol-test-codegen/build.gradle.kts +++ b/codegen/protocol-test-codegen/build.gradle.kts @@ -20,7 +20,7 @@ plugins { } dependencies { - implementation("software.amazon.smithy:smithy-aws-protocol-tests:[1.13.1,1.14.0[") + implementation("software.amazon.smithy:smithy-aws-protocol-tests:[1.14.0,1.15.0[") implementation(project(":smithy-aws-go-codegen")) } diff --git a/codegen/smithy-aws-go-codegen/build.gradle.kts b/codegen/smithy-aws-go-codegen/build.gradle.kts index 5160921f994..ac1631a8a7e 100644 --- a/codegen/smithy-aws-go-codegen/build.gradle.kts +++ b/codegen/smithy-aws-go-codegen/build.gradle.kts @@ -32,9 +32,9 @@ tasks.withType { } dependencies { - api("software.amazon.smithy:smithy-aws-traits:[1.13.1,2.0.0[") - api("software.amazon.smithy:smithy-aws-iam-traits:[1.13.1,2.0.0[") - api("software.amazon.smithy:smithy-aws-cloudformation-traits:[1.13.1,2.0.0[") + api("software.amazon.smithy:smithy-aws-traits:[1.14.0,2.0.0[") + api("software.amazon.smithy:smithy-aws-iam-traits:[1.14.0,2.0.0[") + api("software.amazon.smithy:smithy-aws-cloudformation-traits:[1.14.0,2.0.0[") api("software.amazon.smithy.go:smithy-go-codegen:0.1.0") testImplementation("org.junit.jupiter:junit-jupiter-api:5.4.0") testImplementation("org.junit.jupiter:junit-jupiter-engine:5.4.0") diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsProtocolUtils.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsProtocolUtils.java index 8146f1e83c0..805e62ec05c 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsProtocolUtils.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/AwsProtocolUtils.java @@ -29,6 +29,7 @@ import software.amazon.smithy.go.codegen.integration.HttpProtocolUnitTestResponseGenerator; import software.amazon.smithy.go.codegen.integration.IdempotencyTokenMiddlewareGenerator; import software.amazon.smithy.go.codegen.integration.ProtocolGenerator.GenerationContext; +import software.amazon.smithy.model.shapes.Shape; import software.amazon.smithy.model.shapes.ShapeId; import software.amazon.smithy.utils.SetUtils; @@ -207,6 +208,13 @@ static void generateHttpProtocolTests(GenerationContext context) { .service(ShapeId.from("aws.protocoltests.json10#JsonRpc10")) .operation(ShapeId.from("aws.protocoltests.json10#EmptyInputAndEmptyOutput")) .addTestName("AwsJson10EmptyInputAndEmptyOutput") + .build(), + + // HTTP Payload Values that are unset vs set by the customer and how content-type should be handled. + HttpProtocolUnitTestGenerator.SkipTest.builder() + .service(ShapeId.from("aws.protocoltests.restjson#RestJson")) + .operation(ShapeId.from("aws.protocoltests.restjson#TestPayloadBlob")) + .addTestName("RestJsonHttpWithEmptyBlobPayload") .build() )); diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/RestJsonProtocolGenerator.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/RestJsonProtocolGenerator.java index b43ea7748eb..6aa2dfef183 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/RestJsonProtocolGenerator.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/RestJsonProtocolGenerator.java @@ -47,6 +47,7 @@ import software.amazon.smithy.model.shapes.ServiceShape; import software.amazon.smithy.model.shapes.Shape; import software.amazon.smithy.model.shapes.ShapeId; +import software.amazon.smithy.model.shapes.ShapeType; import software.amazon.smithy.model.shapes.StructureShape; import software.amazon.smithy.model.shapes.UnionShape; import software.amazon.smithy.model.traits.EnumTrait; @@ -107,8 +108,7 @@ protected void generateOperationDocumentSerializer( protected void writeMiddlewarePayloadAsDocumentSerializerDelegator( GenerationContext context, MemberShape memberShape, - String operand, - Consumer setStream + String operand ) { GoWriter writer = context.getWriter().get(); Model model = context.getModel(); @@ -123,6 +123,8 @@ protected void writeMiddlewarePayloadAsDocumentSerializerDelegator( payloadShape, context.getService(), context.getProtocolName()); } + writeSetPayloadShapeHeader(writer, payloadShape); + GoValueAccessUtils.writeIfNonZeroValueMember(context.getModel(), context.getSymbolProvider(), writer, memberShape, operand, (s) -> { writer.addUseImports(SmithyGoDependency.SMITHY_JSON); @@ -133,14 +135,14 @@ protected void writeMiddlewarePayloadAsDocumentSerializerDelegator( return out, metadata, &smithy.SerializationError{Err: err} } payload := bytes.NewReader(jsonEncoder.Bytes())""", functionName, s); - setStream.accept(writer); - if (payloadShape.isStructureShape()) { + writeSetStream(writer, "payload"); + if (payloadShape.getType() == ShapeType.STRUCTURE) { writer.openBlock("} else {", "", () -> { writer.write(""" jsonEncoder := smithyjson.NewEncoder() jsonEncoder.Value.Object().Close() payload := bytes.NewReader(jsonEncoder.Bytes())"""); - setStream.accept(writer); + writeSetStream(writer, "payload"); }); } }); diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/RestXmlProtocolGenerator.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/RestXmlProtocolGenerator.java index 3abe8c3ba8b..a83fac819f3 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/RestXmlProtocolGenerator.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/RestXmlProtocolGenerator.java @@ -148,8 +148,7 @@ private void initalizeXmlEncoder( protected void writeMiddlewarePayloadAsDocumentSerializerDelegator( GenerationContext context, MemberShape memberShape, - String operand, - Consumer setStream + String operand ) { GoWriter writer = context.getWriter().get(); Model model = context.getModel(); @@ -157,6 +156,8 @@ protected void writeMiddlewarePayloadAsDocumentSerializerDelegator( GoValueAccessUtils.writeIfNonZeroValueMember(context.getModel(), context.getSymbolProvider(), writer, memberShape, operand, (s) -> { + writeSetPayloadShapeHeader(writer, payloadShape); + writer.addUseImports(SmithyGoDependency.SMITHY_XML); writer.addUseImports(SmithyGoDependency.BYTES); writer.write("xmlEncoder := smithyxml.NewEncoder(bytes.NewBuffer(nil))"); @@ -180,7 +181,7 @@ protected void writeMiddlewarePayloadAsDocumentSerializerDelegator( writer.write("return out, metadata, &smithy.SerializationError{Err: err}"); }); writer.write("payload := bytes.NewReader(xmlEncoder.Bytes())"); - setStream.accept(writer); + writeSetStream(writer, "payload"); }); }