Skip to content

Commit 8d75b7c

Browse files
committed
refactor transformers
1 parent 4ab88f2 commit 8d75b7c

File tree

3 files changed

+23
-61
lines changed

3 files changed

+23
-61
lines changed

codegen/aws-sdk-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/ServiceClientCompanionObjectWriter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,15 @@ internal data class EndpointUrlConfigNames(
6464

6565
internal fun String.toEndpointUrlConfigNames(): EndpointUrlConfigNames = EndpointUrlConfigNames(
6666
withTransform(JvmSystemPropertySuffix),
67-
withTransform(SdkIdTransform.UpperSnakeCase),
68-
withTransform(SdkIdTransform.LowerSnakeCase),
67+
withTransform(SdkIdTransformers.UpperSnakeCase),
68+
withTransform(SdkIdTransformers.LowerSnakeCase),
6969
)
7070

7171
// JVM system property names follow the pattern "aws.endpointUrl${BaseClientName}"
7272
// where BaseClientName is the PascalCased sdk ID with any forbidden suffixes dropped - this is the same as what we use
7373
// for our client names
7474
// e.g. sdkId "Elasticsearch Service" -> client name "ElasticsearchClient", prop "aws.endpointUrlElasticsearch"
75-
private object JvmSystemPropertySuffix : SdkIdTransformer {
75+
private object JvmSystemPropertySuffix : StringTransformer {
7676
override fun transform(id: String): String =
7777
id.toPascalCase().removeSuffix("Service")
7878
}

codegen/aws-sdk-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/StringTransform.kt

Lines changed: 17 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -13,77 +13,39 @@ private val spaceOrDashRegex = Regex("\\s|-")
1313
/**
1414
* Base interface for string transformers.
1515
*/
16-
interface StringTransformer {
16+
fun interface StringTransformer {
1717
fun transform(input: String): String
1818
}
1919

20-
/**
21-
* Implements a single standardized sdkId transform.
22-
*/
23-
interface SdkIdTransformer : StringTransformer
24-
25-
/**
26-
* Implements a single standardized SigV4 service signing name transform.
27-
*/
28-
interface SigV4NameTransformer : StringTransformer
29-
3020
/**
3121
* Implements all standardized sdkId transforms.
3222
*/
33-
object SdkIdTransform {
34-
/**
35-
* Replace all whitespace from the sdkId with underscores and lowercase all letters.
36-
*/
37-
object LowerSnakeCase : SdkIdTransformer {
38-
override fun transform(input: String): String = input.replaceWhitespace("_").lowercase()
39-
}
23+
object SdkIdTransformers {
24+
// Replace all whitespace from the sdkId with underscores and lowercase all letters.
25+
val LowerSnakeCase = StringTransformer { it.replaceWhitespace("_").lowercase() }
4026

41-
/**
42-
* None. Directly use the sdkId.
43-
*/
44-
object Identity : SdkIdTransformer {
45-
override fun transform(input: String): String = input
46-
}
27+
// None. Directly use the sdkId.
28+
val Identity = StringTransformer { it }
4729

48-
/**
49-
* Remove all whitespace from the sdkId.
50-
*/
51-
object NoWhitespace : SdkIdTransformer {
52-
override fun transform(input: String): String = input.replaceWhitespace("")
53-
}
30+
// Remove all whitespace from the sdkId.
31+
val NoWhitespace = StringTransformer { it.replaceWhitespace("") }
5432

55-
/**
56-
* Replace all whitespace from the sdkId with dashes and lowercase all letters.
57-
*/
58-
object LowerKebabCase : SdkIdTransformer {
59-
override fun transform(input: String): String = input.replaceWhitespace("-").lowercase()
60-
}
33+
// Replace all whitespace from the sdkId with dashes and lowercase all letters.
34+
val LowerKebabCase = StringTransformer { it.replaceWhitespace("-").lowercase() }
6135

62-
/**
63-
* Replace all whitespace from the sdkId with underscores and capitalize all letters.
64-
*/
65-
object UpperSnakeCase : SdkIdTransformer {
66-
override fun transform(input: String): String = input.replaceWhitespace("_").uppercase()
67-
}
36+
// Replace all whitespace from the sdkId with underscores and capitalize all letters.
37+
val UpperSnakeCase = StringTransformer { it.replaceWhitespace("_").uppercase() }
6838
}
6939

7040
/**
7141
* Implements all standardized SigV4 service signing name transforms.
7242
*/
73-
object SigV4NameTransform {
74-
/**
75-
* Replace all dashes from the SigV4 service signing name with underscores and capitalize all letters.
76-
*/
77-
object UpperSnakeCase : SigV4NameTransformer {
78-
override fun transform(input: String): String = input.lowercase().replaceSpaceOrDash("_").uppercase()
79-
}
43+
object SigV4NameTransformers {
44+
// Replace all dashes from the SigV4 service signing name with underscores and capitalize all letters.
45+
val UpperSnakeCase = StringTransformer { it.replaceSpaceOrDash("_").uppercase() }
8046

81-
/**
82-
* Remove dashes and convert SigV4 service signing name to PascalCase
83-
*/
84-
object PascalCase : SigV4NameTransformer {
85-
override fun transform(input: String): String = input.toPascalCase()
86-
}
47+
// Remove dashes and convert SigV4 service signing name to PascalCase
48+
val PascalCase = StringTransformer { it.toPascalCase() }
8749
}
8850

8951
/**

codegen/aws-sdk-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/customization/EnvironmentBearerTokenCustomization.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
package aws.sdk.kotlin.codegen.customization
66

77
import aws.sdk.kotlin.codegen.ServiceClientCompanionObjectWriter
8-
import aws.sdk.kotlin.codegen.SigV4NameTransform
8+
import aws.sdk.kotlin.codegen.SigV4NameTransformers
99
import aws.sdk.kotlin.codegen.withTransform
1010
import software.amazon.smithy.kotlin.codegen.KotlinSettings
1111
import software.amazon.smithy.kotlin.codegen.core.*
@@ -69,8 +69,8 @@ class EnvironmentBearerTokenCustomization : KotlinIntegration {
6969
val serviceSymbol = ctx.symbolProvider.toSymbol(serviceShape)
7070
val signingServiceName = AwsSignatureVersion4.signingServiceName(serviceShape)
7171
// Transform signing service name to environment variable key suffix
72-
val envSuffix = signingServiceName.withTransform(SigV4NameTransform.UpperSnakeCase)
73-
val sysPropSuffix = signingServiceName.withTransform(SigV4NameTransform.PascalCase)
72+
val envSuffix = signingServiceName.withTransform(SigV4NameTransformers.UpperSnakeCase)
73+
val sysPropSuffix = signingServiceName.withTransform(SigV4NameTransformers.PascalCase)
7474
val envKey = "AWS_BEARER_TOKEN_$envSuffix"
7575
val sysPropKey = "aws.bearerToken$sysPropSuffix"
7676
val authSchemeId = RuntimeTypes.Auth.Identity.AuthSchemeId

0 commit comments

Comments
 (0)