Skip to content

Commit 2322b1c

Browse files
sichanyooSichan Yoo
andauthored
fix: Ignore input event stream member when encoding input shape (#981)
* Ignore input event stream member when encoding input shape. * Fix ktlint. --------- Co-authored-by: Sichan Yoo <[email protected]>
1 parent a357623 commit 2322b1c

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/Utils.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package software.amazon.smithy.swift.codegen
77
import software.amazon.smithy.aws.traits.protocols.AwsJson1_0Trait
88
import software.amazon.smithy.aws.traits.protocols.AwsJson1_1Trait
99
import software.amazon.smithy.model.shapes.ShapeId
10+
import software.amazon.smithy.protocol.traits.Rpcv2CborTrait
1011
import software.amazon.smithy.swift.codegen.lang.reservedWords
1112
import 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)

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/serde/member/MemberShapeEncodeGenerator.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import software.amazon.smithy.model.shapes.StructureShape
1111
import software.amazon.smithy.model.shapes.TimestampShape
1212
import software.amazon.smithy.model.shapes.UnionShape
1313
import software.amazon.smithy.model.traits.SparseTrait
14+
import software.amazon.smithy.model.traits.StreamingTrait
1415
import software.amazon.smithy.model.traits.TimestampFormatTrait
1516
import software.amazon.smithy.model.traits.XmlFlattenedTrait
1617
import 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)

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/swiftintegrations/InitialRequestIntegration.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import software.amazon.smithy.model.Model
77
import software.amazon.smithy.model.knowledge.EventStreamIndex
88
import software.amazon.smithy.model.knowledge.TopDownIndex
99
import software.amazon.smithy.model.shapes.StructureShape
10+
import software.amazon.smithy.protocol.traits.Rpcv2CborTrait
1011
import software.amazon.smithy.swift.codegen.SwiftDelegator
1112
import software.amazon.smithy.swift.codegen.SwiftSettings
1213
import 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(

0 commit comments

Comments
 (0)