Skip to content

Commit dd8af57

Browse files
authored
refactor(codegen): Java builder removal (#422)
1 parent 6c725b1 commit dd8af57

File tree

5 files changed

+27
-37
lines changed

5 files changed

+27
-37
lines changed

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/AwsServiceConfigIntegration.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ class AwsServiceConfigIntegration : KotlinIntegration {
4747
val serviceSymbol: Symbol = writer.getContextValue(ServiceGenerator.SectionServiceCompanionObject.ServiceSymbol)
4848
writer.withBlock("companion object {", "}") {
4949
withBlock(
50-
"operator fun invoke(sharedConfig: #T? = null, block: Config.DslBuilder.() -> Unit = {}): #L {",
50+
"operator fun invoke(sharedConfig: #T? = null, block: Config.Builder.() -> Unit = {}): #L {",
5151
"}",
5252
AwsRuntimeTypes.Types.AwsClientConfig,
5353
serviceSymbol.name
5454
) {
5555
withBlock(
56-
"val config = Config.BuilderImpl().apply { ",
56+
"val config = Config.Builder().apply { ",
5757
"}.apply(block).build()"
5858
) {
5959
write("region = sharedConfig?.region")

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/protocols/RestXml.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ open class RestXml : AwsHttpBindingProtocolGenerator() {
175175
val boundMemberName = boundMember.capitalizedDefaultName()
176176
val deserializeLambdaIdent = "deserialize$boundMemberName"
177177
writer.withBlock("val $deserializeLambdaIdent = {", "}") {
178-
write("val builder = #T.builder()", memberSymbol)
178+
write("val builder = #T.Builder()", memberSymbol)
179179
renderDeserializerBody(ctx, copyWithMemberTraits, targetShape.members().toList(), writer)
180180
write("builder.build()")
181181
}

codegen/smithy-aws-kotlin-codegen/src/test/kotlin/aws/sdk/kotlin/codegen/AwsServiceConfigIntegrationTest.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,20 @@ class AwsServiceConfigIntegrationTest {
5050
contents.shouldContainOnlyOnceWithDiff(expectedProps)
5151

5252
val expectedImpl = """
53-
override var credentialsProvider: CredentialsProvider? = null
54-
override var endpointResolver: AwsEndpointResolver? = null
55-
override var region: String? = null
53+
/**
54+
* The AWS credentials provider to use for authenticating requests. If not provided a
55+
* [aws.sdk.kotlin.runtime.auth.credentials.DefaultChainCredentialsProvider] instance will be used.
56+
*/
57+
var credentialsProvider: CredentialsProvider? = null
58+
/**
59+
* Determines the endpoint (hostname) to make requests to. When not provided a default
60+
* resolver is configured automatically. This is an advanced client option.
61+
*/
62+
var endpointResolver: AwsEndpointResolver? = null
63+
/**
64+
* AWS region to make requests to
65+
*/
66+
var region: String? = null
5667
"""
5768
contents.shouldContainOnlyOnceWithDiff(expectedImpl)
5869
}

codegen/smithy-aws-kotlin-codegen/src/test/kotlin/aws/sdk/kotlin/codegen/PresignerGeneratorTest.kt

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -224,53 +224,32 @@ class PresignerGeneratorTest {
224224
* This type can be used to presign requests in cases where an existing service client
225225
* instance is not available.
226226
*/
227-
class TestPresignConfig private constructor(builder: BuilderImpl): ServicePresignConfig {
227+
class TestPresignConfig private constructor(builder: Builder): ServicePresignConfig {
228228
override val credentialsProvider: CredentialsProvider = builder.credentialsProvider ?: DefaultChainCredentialsProvider()
229229
override val endpointResolver: AwsEndpointResolver = builder.endpointResolver ?: DefaultEndpointResolver()
230230
override val region: String = requireNotNull(builder.region) { "region is a required configuration property" }
231231
override val serviceId: String = "example"
232232
override val signingName: String = "example-signing-name"
233233
companion object {
234-
@JvmStatic
235-
fun fluentBuilder(): FluentBuilder = BuilderImpl()
236-
237-
operator fun invoke(block: DslBuilder.() -> kotlin.Unit): ServicePresignConfig = BuilderImpl().apply(block).build()
238-
}
239-
240-
interface FluentBuilder {
241-
fun credentialsProvider(credentialsProvider: CredentialsProvider): FluentBuilder
242-
fun endpointResolver(endpointResolver: AwsEndpointResolver): FluentBuilder
243-
fun region(region: String): FluentBuilder
244-
fun build(): TestPresignConfig
234+
inline operator fun invoke(block: Builder.() -> kotlin.Unit): ServicePresignConfig = Builder().apply(block).build()
245235
}
246236
247-
interface DslBuilder {
237+
class Builder {
248238
/**
249239
* The AWS credentials provider to use for authenticating requests. If not provided a [aws.sdk.kotlin.runtime.auth.credentials.DefaultChainCredentialsProvider] instance will be used.
250240
*/
251-
var credentialsProvider: CredentialsProvider?
252-
241+
var credentialsProvider: CredentialsProvider? = null
253242
/**
254243
* Determines the endpoint (hostname) to make requests to. When not provided a default resolver is configured automatically. This is an advanced client option.
255244
*/
256-
var endpointResolver: AwsEndpointResolver?
257-
245+
var endpointResolver: AwsEndpointResolver? = null
258246
/**
259247
* AWS region to make requests for
260248
*/
261-
var region: String?
262-
263-
}
264-
265-
internal class BuilderImpl() : FluentBuilder, DslBuilder {
266-
override var credentialsProvider: CredentialsProvider? = null
267-
override var endpointResolver: AwsEndpointResolver? = null
268-
override var region: String? = null
249+
var region: String? = null
269250
270-
override fun build(): TestPresignConfig = TestPresignConfig(this)
271-
override fun credentialsProvider(credentialsProvider: CredentialsProvider): FluentBuilder = apply { this.credentialsProvider = credentialsProvider }
272-
override fun endpointResolver(endpointResolver: AwsEndpointResolver): FluentBuilder = apply { this.endpointResolver = endpointResolver }
273-
override fun region(region: String): FluentBuilder = apply { this.region = region }
251+
@PublishedApi
252+
internal fun build(): TestPresignConfig = TestPresignConfig(this)
274253
}
275254
}
276255
""".trimIndent()

services/s3/common/src/aws/sdk/kotlin/services/s3/internal/GetBucketLocationOperationDeserializer.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import aws.smithy.kotlin.runtime.serde.xml.xmlStreamReader
1818
internal class GetBucketLocationOperationDeserializer : HttpDeserialize<GetBucketLocationResponse> {
1919

2020
override suspend fun deserialize(context: ExecutionContext, response: HttpResponse): GetBucketLocationResponse {
21-
val builder = GetBucketLocationResponse.builder()
21+
val builder = GetBucketLocationResponse.Builder()
2222

2323
val payload = response.body.readAll()
2424
if (payload != null) {
@@ -28,7 +28,7 @@ internal class GetBucketLocationOperationDeserializer : HttpDeserialize<GetBucke
2828
}
2929
}
3030

31-
private fun deserializeGetBucketLocationOperationBody(builder: GetBucketLocationResponse.DslBuilder, payload: ByteArray) {
31+
private fun deserializeGetBucketLocationOperationBody(builder: GetBucketLocationResponse.Builder, payload: ByteArray) {
3232
val dom = parseDom(xmlStreamReader(payload))
3333
check(dom.name.local == "LocationConstraint") { "Expected top-level tag of 'LocationConstraint' but found ${dom.name}." }
3434
val rawLocationConstraint = checkNotNull(dom.text) { "Did not receive a value for 'LocationConstraint' in response." }

0 commit comments

Comments
 (0)