File tree Expand file tree Collapse file tree 3 files changed +18
-2
lines changed
smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen Expand file tree Collapse file tree 3 files changed +18
-2
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ package software.amazon.smithy.swift.codegen
77import software.amazon.smithy.aws.traits.protocols.AwsJson1_0Trait
88import software.amazon.smithy.aws.traits.protocols.AwsJson1_1Trait
99import software.amazon.smithy.model.shapes.ShapeId
10+ import software.amazon.smithy.protocol.traits.Rpcv2CborTrait
1011import software.amazon.smithy.swift.codegen.lang.reservedWords
1112import software.amazon.smithy.utils.CaseUtils
1213
@@ -35,4 +36,9 @@ fun swiftEnumCaseName(
3536 return enumCaseName
3637}
3738
38- fun supportsStreamingAndIsRPC (protocolID : ShapeId ): Boolean = arrayOf(AwsJson1_0Trait .ID , AwsJson1_1Trait .ID ).contains(protocolID)
39+ fun supportsStreamingAndIsRPC (protocolID : ShapeId ): Boolean =
40+ arrayOf(
41+ AwsJson1_0Trait .ID ,
42+ AwsJson1_1Trait .ID ,
43+ Rpcv2CborTrait .ID ,
44+ ).contains(protocolID)
Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ import software.amazon.smithy.model.shapes.StructureShape
1111import software.amazon.smithy.model.shapes.TimestampShape
1212import software.amazon.smithy.model.shapes.UnionShape
1313import software.amazon.smithy.model.traits.SparseTrait
14+ import software.amazon.smithy.model.traits.StreamingTrait
1415import software.amazon.smithy.model.traits.TimestampFormatTrait
1516import software.amazon.smithy.model.traits.XmlFlattenedTrait
1617import software.amazon.smithy.swift.codegen.SwiftWriter
@@ -68,6 +69,14 @@ abstract class MemberShapeEncodeGenerator(
6869 memberShape : MemberShape ,
6970 prefix : String ,
7071 ) {
72+ // If member shape is a event streaming member (union with streaming trait),
73+ // we must ignore it when encoding input struct.
74+ // The event streaming member will be set as body via EventStreamBodyMiddleware.
75+ val targetShape = ctx.model.expectShape(memberShape.target)
76+ if (targetShape is UnionShape && targetShape.hasTrait<StreamingTrait >()) {
77+ return
78+ }
79+
7180 val memberName = ctx.symbolProvider.toMemberName(memberShape)
7281 val propertyKey = nodeInfoUtils.nodeInfo(memberShape)
7382 val writingClosure = writingClosureUtils.writingClosure(memberShape)
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ import software.amazon.smithy.model.Model
77import software.amazon.smithy.model.knowledge.EventStreamIndex
88import software.amazon.smithy.model.knowledge.TopDownIndex
99import software.amazon.smithy.model.shapes.StructureShape
10+ import software.amazon.smithy.protocol.traits.Rpcv2CborTrait
1011import software.amazon.smithy.swift.codegen.SwiftDelegator
1112import software.amazon.smithy.swift.codegen.SwiftSettings
1213import software.amazon.smithy.swift.codegen.core.SwiftCodegenContext
@@ -26,7 +27,7 @@ class InitialRequestIntegration : SwiftIntegration {
2627 settings : SwiftSettings ,
2728 ): Boolean {
2829 val service = settings.getService(model)
29- return service.hasTrait<AwsJson1_0Trait >() || service.hasTrait<AwsJson1_1Trait >()
30+ return service.hasTrait<AwsJson1_0Trait >() || service.hasTrait<AwsJson1_1Trait >() || service.hasTrait< Rpcv2CborTrait >()
3031 }
3132
3233 override fun writeAdditionalFiles (
You can’t perform that action at this time.
0 commit comments