in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/serde/xml/UnionEncodeXMLGenerator.kt [25:58]
override fun render() {
val containerName = "container"
writer.openBlock("public func encode(to encoder: \$N) throws {", "}", SwiftTypes.Encoder) {
writer.write("var $containerName = encoder.container(keyedBy: \$N.self)", ClientRuntimeTypes.Serde.Key)
writer.openBlock("switch self {", "}") {
val membersSortedByName: List<MemberShape> = members.sortedBy { it.memberName }
membersSortedByName.forEach { member ->
val memberTarget = ctx.model.expectShape(member.target)
val memberName = ctx.symbolProvider.toMemberName(member)
writer.write("case let .\$L(\$L):", memberName, memberName)
writer.indent()
when (memberTarget) {
is CollectionShape -> {
renderListMember(member, memberTarget, containerName)
}
is MapShape -> {
renderMapMember(member, memberTarget, containerName)
}
is TimestampShape -> {
renderTimestampMember(member, memberTarget, containerName)
}
else -> {
renderEncodeAssociatedType(member, memberTarget, containerName)
}
}
writer.dedent()
}
writer.write("case let .sdkUnknown(sdkUnknown):")
writer.indent()
writer.write("try container.encode(sdkUnknown, forKey: \$N(\"sdkUnknown\"))", ClientRuntimeTypes.Serde.Key)
writer.dedent()
}
}
}