in smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/ServiceGenerator.kt [53:89]
fun render() {
importExternalSymbols()
val topDownIndex = TopDownIndex.of(ctx.model)
val operations = topDownIndex.getContainedOperations(service).sortedBy { it.defaultName() }
val operationsIndex = OperationIndex.of(ctx.model)
writer.renderDocumentation(service)
writer.renderAnnotations(service)
writer.openBlock("interface ${serviceSymbol.name} : SdkClient {")
.call { overrideServiceName() }
.call {
// allow access to client's Config
writer.dokka("${serviceSymbol.name}'s configuration")
writer.write("val config: Config")
}
.call {
// allow integrations to add additional fields to companion object or configuration
writer.write("")
writer.declareSection(
SectionServiceCompanionObject,
context = mapOf(SectionServiceCompanionObject.ServiceSymbol to serviceSymbol)
) {
renderCompanionObject()
}
writer.write("")
renderServiceConfig()
}
.call {
operations.forEach { op ->
renderOperation(operationsIndex, op)
}
}
.closeBlock("}")
.write("")
}