Skip to content

Commit 04a33e9

Browse files
committed
Symbol.Builder.addReferences
1 parent 3149027 commit 04a33e9

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/core/KotlinSymbolProvider.kt

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ class KotlinSymbolProvider(private val model: Model, private val settings: Kotli
193193
} else {
194194
// only use @default if type is `T`
195195
shape.getTrait<DefaultTrait>()?.let {
196-
defaultValue(it.getDefaultValue(targetShape))
196+
setDefaultValue(it, targetShape)
197197
}
198198
}
199199
}
@@ -219,9 +219,10 @@ class KotlinSymbolProvider(private val model: Model, private val settings: Kotli
219219
}
220220
}
221221

222-
private fun DefaultTrait.getDefaultValue(targetShape: Shape): String? {
223-
val node = toNode()
224-
return when {
222+
private fun Symbol.Builder.setDefaultValue(defaultTrait: DefaultTrait, targetShape: Shape) {
223+
val node = defaultTrait.toNode()
224+
225+
val defaultValue = when {
225226
node.toString() == "null" -> null
226227

227228
// Check if target is an enum before treating the default like a regular number/string
@@ -235,13 +236,20 @@ class KotlinSymbolProvider(private val model: Model, private val settings: Kotli
235236
"${enumSymbol.fullName}.fromValue($arg)"
236237
}
237238

238-
targetShape.isBlobShape && targetShape.isStreaming ->
239-
node
240-
.toString()
241-
.takeUnless { it.isEmpty() }
242-
?.let { "ByteStream.fromString(${it.dq()})" }
239+
targetShape.isBlobShape -> {
240+
addReferences(RuntimeTypes.Core.Text.Encoding.decodeBase64)
243241

244-
targetShape.isBlobShape -> "${node.toString().dq()}.decodeBase64().encodeToByteArray()"
242+
if (targetShape.isStreaming) {
243+
node.toString()
244+
.takeUnless { it.isEmpty() }
245+
?.let {
246+
addReferences(RuntimeTypes.Core.Content.ByteStream)
247+
"ByteStream.fromString(${it.dq()}.decodeBase64())"
248+
}
249+
} else {
250+
"${node.toString().dq()}.decodeBase64().encodeToByteArray()"
251+
}
252+
}
245253

246254
targetShape.isDocumentShape -> getDefaultValueForDocument(node)
247255
targetShape.isTimestampShape -> getDefaultValueForTimestamp(node.asNumberNode().get())
@@ -252,6 +260,8 @@ class KotlinSymbolProvider(private val model: Model, private val settings: Kotli
252260
node.isStringNode -> node.toString().dq()
253261
else -> node.toString()
254262
}
263+
264+
defaultValue(defaultValue)
255265
}
256266

257267
private fun getDefaultValueForTimestamp(node: NumberNode): String {

codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/StructureGenerator.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -249,10 +249,6 @@ class StructureGenerator(
249249
memberSymbol
250250
}
251251

252-
if (builderMemberSymbol.shape is BlobShape && builderMemberSymbol.isNotNullable) {
253-
writer.addImport(RuntimeTypes.Core.Text.Encoding.decodeBase64)
254-
}
255-
256252
write("public var #L: #E", memberName, builderMemberSymbol)
257253
}
258254
write("")

0 commit comments

Comments
 (0)