in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/serde/xml/UnionDecodeXMLGenerator.kt [29:65]
override fun render() {
val containerName = "containerValues"
writer.openBlock("public init (from decoder: \$N) throws {", "}", SwiftTypes.Decoder) {
writer.write("let \$L = try decoder.container(keyedBy: CodingKeys.self)", containerName)
writer.write("let key = \$L.allKeys.first", containerName)
writer.openBlock("switch key {", "}") {
members.forEach { member ->
val memberTarget = ctx.model.expectShape(member.target)
val memberName = ctx.symbolProvider.toMemberName(member)
writer.write("case .\$L:", memberName)
writer.indent()
when (memberTarget) {
is CollectionShape -> {
renderListMember(member, memberTarget, containerName)
}
is MapShape -> {
renderMapMember(member, memberTarget, containerName)
}
is TimestampShape -> {
renderTimestampMember(member, memberTarget, containerName)
}
is BlobShape -> {
renderBlobMember(member, memberTarget, containerName)
}
else -> {
renderScalarMember(member, memberTarget, containerName, isUnion = true)
}
}
writer.dedent()
}
writer.write("default:")
writer.indent()
writer.write("self = .sdkUnknown(\"\")")
writer.dedent()
}
}
}