diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/Ec2QueryShapeSerVisitor.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/Ec2QueryShapeSerVisitor.java index cd89ad034a6..085f50eb52a 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/Ec2QueryShapeSerVisitor.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/Ec2QueryShapeSerVisitor.java @@ -4,10 +4,12 @@ import java.util.function.Predicate; import software.amazon.smithy.aws.traits.protocols.Ec2QueryNameTrait; import software.amazon.smithy.go.codegen.integration.ProtocolGenerator.GenerationContext; +import software.amazon.smithy.go.codegen.trait.NoSerializeTrait; import software.amazon.smithy.model.shapes.MemberShape; import software.amazon.smithy.model.shapes.ShapeType; import software.amazon.smithy.model.traits.TimestampFormatTrait.Format; import software.amazon.smithy.model.traits.XmlNameTrait; +import software.amazon.smithy.utils.FunctionalUtils; import software.amazon.smithy.utils.StringUtils; /** @@ -29,11 +31,11 @@ */ final class Ec2QueryShapeSerVisitor extends QueryShapeSerVisitor { public Ec2QueryShapeSerVisitor(GenerationContext context) { - super(context); + this(context, NoSerializeTrait.excludeNoSerializeMembers().and(FunctionalUtils.alwaysTrue())); } public Ec2QueryShapeSerVisitor(GenerationContext context, Predicate memberFilter) { - super(context, memberFilter); + super(context, memberFilter, true); } @Override diff --git a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/QueryShapeSerVisitor.java b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/QueryShapeSerVisitor.java index e57e4e08a5b..5dff61e1052 100644 --- a/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/QueryShapeSerVisitor.java +++ b/codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/QueryShapeSerVisitor.java @@ -15,7 +15,6 @@ import software.amazon.smithy.go.codegen.SymbolUtils; import software.amazon.smithy.go.codegen.integration.DocumentShapeSerVisitor; import software.amazon.smithy.go.codegen.integration.ProtocolGenerator.GenerationContext; -import software.amazon.smithy.go.codegen.integration.ProtocolUtils; import software.amazon.smithy.go.codegen.knowledge.GoPointableIndex; import software.amazon.smithy.go.codegen.trait.NoSerializeTrait; import software.amazon.smithy.model.shapes.CollectionShape; @@ -25,7 +24,6 @@ import software.amazon.smithy.model.shapes.Shape; import software.amazon.smithy.model.shapes.StructureShape; import software.amazon.smithy.model.shapes.UnionShape; -import software.amazon.smithy.model.traits.EnumTrait; import software.amazon.smithy.model.traits.TimestampFormatTrait; import software.amazon.smithy.model.traits.TimestampFormatTrait.Format; import software.amazon.smithy.model.traits.XmlFlattenedTrait; @@ -46,14 +44,20 @@ class QueryShapeSerVisitor extends DocumentShapeSerVisitor { private static final Logger LOGGER = Logger.getLogger(QueryShapeSerVisitor.class.getName()); private final Predicate memberFilter; + private final boolean serializeZeroUnboxedMember; public QueryShapeSerVisitor(GenerationContext context) { this(context, NoSerializeTrait.excludeNoSerializeMembers().and(FunctionalUtils.alwaysTrue())); } public QueryShapeSerVisitor(GenerationContext context, Predicate memberFilter) { + this(context, memberFilter, false); + } + + public QueryShapeSerVisitor(GenerationContext context, Predicate memberFilter, boolean serializeZeroUnboxedMember) { super(context); this.memberFilter = NoSerializeTrait.excludeNoSerializeMembers().and(memberFilter); + this.serializeZeroUnboxedMember = serializeZeroUnboxedMember; } private DocumentMemberSerVisitor getMemberSerVisitor(MemberShape member, String source, String dest) { @@ -156,7 +160,7 @@ protected void serializeStructure(GenerationContext context, StructureShape shap Shape target = context.getModel().expectShape(member.getTarget()); GoValueAccessUtils.writeIfNonZeroValueMember(context.getModel(), context.getSymbolProvider(), writer, - member, "v", true, member.isRequired(), (operand) -> { + member, "v", true, member.isRequired() || this.serializeZeroUnboxedMember, (operand) -> { String locationName = getSerializedLocationName(member, member.getMemberName()); if (isFlattened(context, member)) { writer.write("objectKey := object.FlatKey($S)", locationName);