Skip to content

Commit 8532df7

Browse files
authored
fix!: update shape and member extensions to use same casing as rest of the system (#467)
1 parent 4bb9d0a commit 8532df7

File tree

12 files changed

+49
-36
lines changed

12 files changed

+49
-36
lines changed

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/PaginatorGenerator.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ import software.amazon.smithy.swift.codegen.core.CodegenContext
1616
import software.amazon.smithy.swift.codegen.integration.ProtocolGenerator
1717
import software.amazon.smithy.swift.codegen.integration.SwiftIntegration
1818
import software.amazon.smithy.swift.codegen.model.SymbolProperty
19-
import software.amazon.smithy.swift.codegen.model.camelCaseName
2019
import software.amazon.smithy.swift.codegen.model.expectShape
2120
import software.amazon.smithy.swift.codegen.model.hasTrait
2221
import software.amazon.smithy.swift.codegen.model.isBoxed
22+
import software.amazon.smithy.swift.codegen.model.toLowerCamelCase
2323
import software.amazon.smithy.swift.codegen.utils.toLowerCamelCase
2424

2525
/**
@@ -102,9 +102,9 @@ class PaginatorGenerator : SwiftIntegration {
102102
) {
103103
writer.addImport(SwiftDependency.CLIENT_RUNTIME.target)
104104
val nextMarkerLiteral = paginationInfo.outputTokenMemberPath.joinToString(separator = "?.") {
105-
it.camelCaseName()
105+
it.toLowerCamelCase()
106106
}
107-
val markerLiteral = paginationInfo.inputTokenMember.camelCaseName()
107+
val markerLiteral = paginationInfo.inputTokenMember.toLowerCamelCase()
108108
val markerLiteralShape = model.expectShape(paginationInfo.inputTokenMember.target)
109109
val markerLiteralSymbol = symbolProvider.toSymbol(markerLiteralShape)
110110
val docBody = """
@@ -125,7 +125,7 @@ class PaginatorGenerator : SwiftIntegration {
125125
writer.openBlock("extension \$L {", "}", serviceSymbol.name) {
126126
writer.openBlock(
127127
"public func \$LPaginated(input: \$N) -> \$N<\$N, \$N> {", "}",
128-
operationShape.camelCaseName(),
128+
operationShape.toLowerCamelCase(),
129129
inputSymbol,
130130
ClientRuntimeTypes.Core.PaginatorSequence,
131131
inputSymbol,
@@ -138,7 +138,7 @@ class PaginatorGenerator : SwiftIntegration {
138138
outputSymbol,
139139
inputSymbol,
140140
outputSymbol,
141-
operationShape.camelCaseName()
141+
operationShape.toLowerCamelCase()
142142
)
143143
}
144144
}
@@ -153,12 +153,12 @@ class PaginatorGenerator : SwiftIntegration {
153153
writer.writeInline("\$N(", inputSymbol)
154154
.indent()
155155
.call {
156-
val sortedMembers = inputShape.members().sortedBy { it.camelCaseName() }
156+
val sortedMembers = inputShape.members().sortedBy { it.toLowerCamelCase() }
157157
for ((index, member) in sortedMembers.withIndex()) {
158158
if (member.memberName.toLowerCamelCase() != markerLiteral) {
159-
writer.writeInline("\n\$L: \$L", member.camelCaseName(), "self.${member.camelCaseName()}")
159+
writer.writeInline("\n\$L: \$L", member.toLowerCamelCase(), "self.${member.toLowerCamelCase()}")
160160
} else {
161-
writer.writeInline("\n\$L: \$L", member.camelCaseName(), "token")
161+
writer.writeInline("\n\$L: \$L", member.toLowerCamelCase(), "token")
162162
}
163163
if (index < sortedMembers.size - 1) {
164164
writer.writeInline(",")
@@ -184,7 +184,7 @@ class PaginatorGenerator : SwiftIntegration {
184184
writer.write("")
185185
val itemSymbolShape = itemDesc.itemSymbol.getProperty("shape").getOrNull() as? Shape
186186
val docBody = """
187-
This paginator transforms the `AsyncSequence` returned by `${operationShape.camelCaseName()}Paginated`
187+
This paginator transforms the `AsyncSequence` returned by `${operationShape.toLowerCamelCase()}Paginated`
188188
to access the nested member `${itemDesc.collectionLiteral}`
189189
- Returns: `${itemDesc.collectionLiteral}`
190190
""".trimIndent()
@@ -223,8 +223,8 @@ private data class ItemDescriptor(
223223
*/
224224
private fun getItemDescriptorOrNull(paginationInfo: PaginationInfo, ctx: CodegenContext): ItemDescriptor? {
225225
val itemMemberId = paginationInfo.itemsMemberPath?.lastOrNull()?.target ?: return null
226-
val itemLiteral = paginationInfo.itemsMemberPath!!.last()!!.camelCaseName()
227-
val itemPathLiteral = paginationInfo.itemsMemberPath.joinToString(separator = "?.") { it.camelCaseName() }
226+
val itemLiteral = paginationInfo.itemsMemberPath!!.last()!!.toLowerCamelCase()
227+
val itemPathLiteral = paginationInfo.itemsMemberPath.joinToString(separator = "?.") { it.toLowerCamelCase() }
228228
val itemMember = ctx.model.expectShape(itemMemberId)
229229
val collectionLiteral = when (itemMember) {
230230
is MapShape -> {

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/ServiceGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import software.amazon.smithy.swift.codegen.integration.DefaultServiceConfig
1818
import software.amazon.smithy.swift.codegen.integration.ProtocolGenerator
1919
import software.amazon.smithy.swift.codegen.integration.SectionId
2020
import software.amazon.smithy.swift.codegen.integration.middlewares.handlers.MiddlewareShapeUtils
21-
import software.amazon.smithy.swift.codegen.model.camelCaseName
21+
import software.amazon.smithy.swift.codegen.model.toLowerCamelCase
2222

2323
/*
2424
* Generates a Swift protocol for the service
@@ -53,7 +53,7 @@ class ServiceGenerator(
5353
op: OperationShape,
5454
insideProtocol: Boolean = false
5555
) {
56-
val operationName = op.camelCaseName()
56+
val operationName = op.toLowerCamelCase()
5757
// Theoretically this shouldn't happen since we insert empty input/outputs for operations that don't have one or the other to allow for sdk evolution
5858
if (!op.input.isPresent || !op.output.isPresent) throw CodegenException("model should have been preprocessed to ensure operations always have an input or output shape: $op.id")
5959

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ import software.amazon.smithy.swift.codegen.customtraits.NestedTrait
1919
import software.amazon.smithy.swift.codegen.customtraits.SwiftBoxTrait
2020
import software.amazon.smithy.swift.codegen.integration.ProtocolGenerator
2121
import software.amazon.smithy.swift.codegen.integration.SectionId
22-
import software.amazon.smithy.swift.codegen.model.camelCaseName
2322
import software.amazon.smithy.swift.codegen.model.expectShape
2423
import software.amazon.smithy.swift.codegen.model.getTrait
2524
import software.amazon.smithy.swift.codegen.model.hasTrait
2625
import software.amazon.smithy.swift.codegen.model.isError
2726
import software.amazon.smithy.swift.codegen.model.nestedNamespaceType
2827
import software.amazon.smithy.swift.codegen.model.recursiveSymbol
28+
import software.amazon.smithy.swift.codegen.model.toLowerCamelCase
2929
import software.amazon.smithy.swift.codegen.utils.toUpperCamelCase
3030

3131
class StructureGenerator(
@@ -37,7 +37,7 @@ class StructureGenerator(
3737
private val serviceErrorProtocolSymbol: Symbol? = null
3838
) {
3939

40-
private val membersSortedByName: List<MemberShape> = shape.allMembers.values.sortedBy { it.camelCaseName() }
40+
private val membersSortedByName: List<MemberShape> = shape.allMembers.values.sortedBy { it.toLowerCamelCase() }
4141
private var memberShapeDataContainer: MutableMap<MemberShape, Pair<String, Symbol>> = mutableMapOf()
4242

4343
init {

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/HttpProtocolClientGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import software.amazon.smithy.swift.codegen.SwiftWriter
1515
import software.amazon.smithy.swift.codegen.integration.middlewares.handlers.MiddlewareShapeUtils
1616
import software.amazon.smithy.swift.codegen.middleware.MiddlewareExecutionGenerator
1717
import software.amazon.smithy.swift.codegen.middleware.OperationMiddleware
18-
import software.amazon.smithy.swift.codegen.model.capitalizedName
18+
import software.amazon.smithy.swift.codegen.model.toUpperCamelCase
1919

2020
/**
2121
* Renders an implementation of a service interface for HTTP protocol
@@ -46,7 +46,7 @@ open class HttpProtocolClientGenerator(
4646

4747
private fun renderOperationsInExtension(serviceSymbol: Symbol) {
4848
val topDownIndex = TopDownIndex.of(model)
49-
val operations = topDownIndex.getContainedOperations(serviceShape).sortedBy { it.capitalizedName() }
49+
val operations = topDownIndex.getContainedOperations(serviceShape).sortedBy { it.toUpperCamelCase() }
5050
val operationsIndex = OperationIndex.of(model)
5151

5252
writer.openBlock("extension ${serviceSymbol.name}: ${serviceSymbol.name}Protocol {", "}") {

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/HttpProtocolTestGenerator.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ import software.amazon.smithy.swift.codegen.integration.middlewares.OperationInp
2020
import software.amazon.smithy.swift.codegen.integration.middlewares.RequestTestEndpointResolverMiddleware
2121
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
2222
import software.amazon.smithy.swift.codegen.middleware.OperationMiddleware
23-
import software.amazon.smithy.swift.codegen.model.capitalizedName
2423
import software.amazon.smithy.swift.codegen.model.hasTrait
24+
import software.amazon.smithy.swift.codegen.model.toUpperCamelCase
2525
import java.util.TreeSet
2626
import java.util.logging.Logger
2727

@@ -96,7 +96,7 @@ class HttpProtocolTestGenerator(
9696
.orEmpty()
9797
val requestTestCases = filterProtocolTestCases(tempTestCases)
9898
if (requestTestCases.isNotEmpty()) {
99-
val testClassName = "${operation.capitalizedName()}RequestTest"
99+
val testClassName = "${operation.toUpperCamelCase()}RequestTest"
100100
val testFilename = "./${ctx.settings.moduleName}Tests/$testClassName.swift"
101101
ctx.delegator.useTestFileWriter(testFilename, ctx.settings.moduleName) { writer ->
102102
LOGGER.fine("Generating request protocol test cases for ${operation.id}")
@@ -175,7 +175,7 @@ class HttpProtocolTestGenerator(
175175
// multiple error (tests) may be associated with a single operation,
176176
// use the operation name + error name as the class name
177177
val opName = operation.id.name.capitalize()
178-
val testClassName = "${opName}${error.capitalizedName()}Test"
178+
val testClassName = "${opName}${error.toUpperCamelCase()}Test"
179179
val testFilename = "./${ctx.settings.moduleName}Tests/${opName}ErrorTest.swift"
180180
ctx.delegator.useTestFileWriter(testFilename, ctx.settings.moduleName) { writer ->
181181
LOGGER.fine("Generating error protocol test cases for ${operation.id}")

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/HttpProtocolUnitTestErrorGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ package software.amazon.smithy.swift.codegen.integration
77
import software.amazon.smithy.codegen.core.CodegenException
88
import software.amazon.smithy.model.shapes.Shape
99
import software.amazon.smithy.protocoltests.traits.HttpResponseTestCase
10-
import software.amazon.smithy.swift.codegen.model.capitalizedName
10+
import software.amazon.smithy.swift.codegen.model.toUpperCamelCase
1111

1212
open class HttpProtocolUnitTestErrorGenerator protected constructor(builder: Builder) :
1313
HttpProtocolUnitTestResponseGenerator(builder) {
@@ -16,7 +16,7 @@ open class HttpProtocolUnitTestErrorGenerator protected constructor(builder: Bui
1616

1717
override fun renderTestBody(test: HttpResponseTestCase) {
1818
outputShape?.let {
19-
val operationErrorType = "${operation.capitalizedName()}OutputError"
19+
val operationErrorType = "${operation.toUpperCamelCase()}OutputError"
2020
writer.openBlock("do {", "} catch let err {") {
2121
renderBuildHttpResponse(test)
2222
writer.write("")

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/HttpProtocolUnitTestRequestGenerator.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import software.amazon.smithy.swift.codegen.ShapeValueGenerator
1717
import software.amazon.smithy.swift.codegen.SwiftWriter
1818
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1919
import software.amazon.smithy.swift.codegen.model.RecursiveShapeBoxer
20-
import software.amazon.smithy.swift.codegen.model.capitalizedName
20+
import software.amazon.smithy.swift.codegen.model.toUpperCamelCase
2121
import software.amazon.smithy.swift.codegen.swiftFunctionParameterIndent
2222

2323
open class HttpProtocolUnitTestRequestGenerator protected constructor(builder: Builder) :
@@ -78,7 +78,7 @@ open class HttpProtocolUnitTestRequestGenerator protected constructor(builder: B
7878
val outputShapeId = operation.output.get()
7979
val outputShape = model.expectShape(outputShapeId)
8080
val outputSymbol = symbolProvider.toSymbol(outputShape)
81-
val outputErrorName = "${operation.capitalizedName()}OutputError"
81+
val outputErrorName = "${operation.toUpperCamelCase()}OutputError"
8282

8383
writer.write("let context = HttpContextBuilder()")
8484
val idempotentMember = inputShape.members().firstOrNull() { it.hasTrait(IdempotencyTokenTrait::class.java) }

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/middlewares/handlers/MiddlewareShapeUtils.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import software.amazon.smithy.model.traits.HttpTrait
1212
import software.amazon.smithy.swift.codegen.SwiftSettings
1313
import software.amazon.smithy.swift.codegen.integration.HttpBindingDescriptor
1414
import software.amazon.smithy.swift.codegen.integration.isInHttpBody
15-
import software.amazon.smithy.swift.codegen.model.capitalizedName
1615
import software.amazon.smithy.swift.codegen.model.getTrait
16+
import software.amazon.smithy.swift.codegen.model.toUpperCamelCase
1717

1818
class MiddlewareShapeUtils {
1919
companion object {
@@ -41,7 +41,7 @@ class MiddlewareShapeUtils {
4141
return Symbol.builder().name(operationErrorName).build()
4242
}
4343
fun outputErrorSymbolName(op: OperationShape): String {
44-
return "${op.capitalizedName()}OutputError"
44+
return "${op.toUpperCamelCase()}OutputError"
4545
}
4646
fun rootNamespace(settings: SwiftSettings): String {
4747
return settings.moduleName

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/middleware/MiddlewareExecutionGenerator.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import software.amazon.smithy.swift.codegen.integration.HttpBindingResolver
99
import software.amazon.smithy.swift.codegen.integration.HttpProtocolCustomizable
1010
import software.amazon.smithy.swift.codegen.integration.ProtocolGenerator
1111
import software.amazon.smithy.swift.codegen.integration.middlewares.handlers.MiddlewareShapeUtils
12-
import software.amazon.smithy.swift.codegen.model.camelCaseName
13-
import software.amazon.smithy.swift.codegen.model.capitalizedName
12+
import software.amazon.smithy.swift.codegen.model.toLowerCamelCase
13+
import software.amazon.smithy.swift.codegen.model.toUpperCamelCase
1414
import software.amazon.smithy.swift.codegen.swiftFunctionParameterIndent
1515

1616
typealias HttpMethodCallback = (OperationShape) -> String
@@ -27,14 +27,14 @@ class MiddlewareExecutionGenerator(
2727
private val symbolProvider = ctx.symbolProvider
2828

2929
fun render(op: OperationShape, onError: (SwiftWriter, String) -> Unit) {
30-
val operationErrorName = "${op.capitalizedName()}OutputError"
30+
val operationErrorName = "${op.toUpperCamelCase()}OutputError"
3131
val inputShapeName = MiddlewareShapeUtils.inputSymbol(symbolProvider, ctx.model, op).name
3232
val outputShapeName = MiddlewareShapeUtils.outputSymbol(symbolProvider, ctx.model, op).name
3333
writer.write("let context = \$N()", ClientRuntimeTypes.Http.HttpContextBuilder)
3434
writer.swiftFunctionParameterIndent {
3535
renderContextAttributes(op)
3636
}
37-
writer.write("var $operationStackName = \$N<$inputShapeName, $outputShapeName, $operationErrorName>(id: \"${op.camelCaseName()}\")", OperationStack)
37+
writer.write("var $operationStackName = \$N<$inputShapeName, $outputShapeName, $operationErrorName>(id: \"${op.toLowerCamelCase()}\")", OperationStack)
3838
renderMiddlewares(op, operationStackName)
3939
}
4040

@@ -46,7 +46,7 @@ class MiddlewareExecutionGenerator(
4646
writer.write(" .withDecoder(value: decoder)")
4747
writer.write(" .withMethod(value: .$httpMethod)")
4848
writer.write(" .withServiceName(value: serviceName)")
49-
writer.write(" .withOperation(value: \"${op.camelCaseName()}\")")
49+
writer.write(" .withOperation(value: \"${op.toLowerCamelCase()}\")")
5050
writer.write(" .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator)")
5151
writer.write(" .withLogger(value: config.logger)")
5252

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/model/ShapeExt.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import software.amazon.smithy.model.traits.RequiredTrait
2525
import software.amazon.smithy.model.traits.StreamingTrait
2626
import software.amazon.smithy.model.traits.Trait
2727
import software.amazon.smithy.swift.codegen.getOrNull
28+
import software.amazon.smithy.swift.codegen.utils.toLowerCamelCase
29+
import software.amazon.smithy.swift.codegen.utils.toUpperCamelCase
2830
import software.amazon.smithy.utils.StringUtils
2931
import kotlin.streams.toList
3032

@@ -71,8 +73,8 @@ val Shape.isError: Boolean
7173
val Shape.isNumberShape: Boolean
7274
get() = this is NumberShape
7375

74-
fun Shape.capitalizedName(): String {
75-
return StringUtils.capitalize(this.id.name)
76+
fun Shape.toUpperCamelCase(): String {
77+
return this.id.name.toUpperCamelCase()
7678
}
7779

7880
fun Shape.defaultName(serviceShape: ServiceShape? = null): String {
@@ -82,8 +84,8 @@ fun Shape.defaultName(serviceShape: ServiceShape? = null): String {
8284
StringUtils.capitalize(this.id.name)
8385
}
8486
}
85-
fun MemberShape.camelCaseName(): String = StringUtils.uncapitalize(this.memberName)
86-
fun Shape.camelCaseName(): String = StringUtils.uncapitalize(this.id.name)
87+
fun MemberShape.toLowerCamelCase(): String = this.memberName.toLowerCamelCase()
88+
fun Shape.toLowerCamelCase(): String = this.id.name.toLowerCamelCase()
8789

8890
fun MemberShape.defaultValue(symbolProvider: SymbolProvider): String? {
8991
val targetSymbol = symbolProvider.toSymbol(this)

0 commit comments

Comments
 (0)