in smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/ShapeValueGenerator.kt [140:189]
override fun objectNode(node: ObjectNode) {
var i = 0
node.members.forEach { (keyNode, valueNode) ->
val memberShape: Shape
when (currShape) {
is StructureShape -> {
val member = currShape.getMember(keyNode.value).orElseThrow {
CodegenException("unknown member ${currShape.id}.${keyNode.value}")
}
memberShape = generator.model.expectShape(member.target)
val memberName = generator.symbolProvider.toMemberName(member)
writer.writeInline("#L = ", memberName)
generator.writeShapeValueInline(writer, memberShape, valueNode)
if (i < node.members.size - 1) {
writer.write("")
}
}
is MapShape -> {
memberShape = generator.model.expectShape(currShape.value.target)
writer.writeInline("#S to ", keyNode.value)
if (valueNode is NullNode) {
writer.write("null")
} else {
generator.writeShapeValueInline(writer, memberShape, valueNode)
if (i < node.members.size - 1) {
writer.writeInline(",\n")
}
}
}
is DocumentShape -> {
// TODO - deal with document shapes
}
is UnionShape -> {
val member = currShape.getMember(keyNode.value).orElseThrow {
CodegenException("unknown member ${currShape.id}.${keyNode.value}")
}
memberShape = generator.model.expectShape(member.target)
val currSymbol = generator.symbolProvider.toSymbol(currShape)
val memberName = generator.symbolProvider.toMemberName(member)
val variantName = memberName.replaceFirstChar { c -> c.uppercaseChar() }
writer.writeInline("${currSymbol.name}.$variantName(")
generator.writeShapeValueInline(writer, memberShape, valueNode)
writer.write(")")
}
else -> throw CodegenException("unexpected shape type " + currShape.type)
}
i++
}
}