@@ -8,8 +8,11 @@ import aws.sdk.kotlin.codegen.AwsRuntimeTypes
88import software.amazon.smithy.kotlin.codegen.core.KotlinWriter
99import software.amazon.smithy.kotlin.codegen.core.withBlock
1010import software.amazon.smithy.kotlin.codegen.rendering.endpoints.ExpressionRenderer
11+ import software.amazon.smithy.kotlin.codegen.utils.getOrNull
12+ import software.amazon.smithy.model.node.Node
1113import software.amazon.smithy.model.node.ObjectNode
1214import software.amazon.smithy.rulesengine.language.syntax.expr.Expression
15+ import java.util.*
1316
1417val awsEndpointFunctions = mapOf (
1518 " aws.parseArn" to AwsRuntimeTypes .Endpoint .Functions .parseArn,
@@ -44,20 +47,10 @@ private fun renderAuthSchemes(writer: KotlinWriter, authSchemes: Expression, exp
4447 // encounter template strings throughout
4548
4649 writeInline(" signingName = " )
47- scheme.getStringMember(" signingName" ).ifPresentOrElse({ node ->
48- expressionRenderer.renderExpression(Expression .fromNode(node))
49- write(" ," )
50- },) {
51- writeInline(" null," )
52- }
50+ renderOrElse(expressionRenderer, scheme.getStringMember(" signingName" ), " null" )
5351
54- writer.writeInline(" disableDoubleEncoding = " )
55- scheme.getBooleanMember(" disableDoubleEncoding" ).ifPresentOrElse({ node ->
56- expressionRenderer.renderExpression(Expression .fromNode(node))
57- write(" ," )
58- },) {
59- writeInline(" false," )
60- }
52+ writeInline(" disableDoubleEncoding = " )
53+ renderOrElse(expressionRenderer, scheme.getBooleanMember(" disableDoubleEncoding" ), " false" )
6154
6255 when (schemeName) {
6356 " sigv4" -> renderSigV4Fields(writer, scheme, expressionRenderer)
@@ -69,14 +62,22 @@ private fun renderAuthSchemes(writer: KotlinWriter, authSchemes: Expression, exp
6962 }
7063}
7164
65+ private fun KotlinWriter.renderOrElse (
66+ expressionRenderer : ExpressionRenderer ,
67+ optionalNode : Optional <out Node >,
68+ whenNullValue : String ,
69+ ) {
70+ val nullableNode = optionalNode.getOrNull()
71+ when (nullableNode) {
72+ null -> writeInline(whenNullValue)
73+ else -> expressionRenderer.renderExpression(Expression .fromNode(nullableNode))
74+ }
75+ write(" ," )
76+ }
77+
7278private fun renderSigV4Fields (writer : KotlinWriter , scheme : ObjectNode , expressionRenderer : ExpressionRenderer ) {
7379 writer.writeInline(" signingRegion = " )
74- scheme.getStringMember(" signingRegion" ).ifPresentOrElse({
75- expressionRenderer.renderExpression(Expression .fromNode(it))
76- writer.write(" ," )
77- },) {
78- writer.write(" null," )
79- }
80+ writer.renderOrElse(expressionRenderer, scheme.getStringMember(" signingRegion" ), " null" )
8081}
8182
8283private fun renderSigV4AFields (writer : KotlinWriter , scheme : ObjectNode , expressionRenderer : ExpressionRenderer ) {
0 commit comments