Skip to content

Commit f226295

Browse files
authored
chore: upgrade to smithy 1.13.0 (#383)
1 parent 769bb62 commit f226295

File tree

7 files changed

+29
-16
lines changed

7 files changed

+29
-16
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ kotlin.code.style=official
33
# config
44

55
# codegen
6-
smithyVersion=1.12.0
6+
smithyVersion=1.13.0
77
# kotlin
88
kotlinVersion=1.5.0
99
kotlin.native.ignoreDisabledTargets=true

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ abstract class HttpBindingProtocolGenerator : ProtocolGenerator {
392392
operationMiddleware.appendMiddleware(operation, ContentTypeMiddleware(ctx.model, ctx.symbolProvider, resolver.determineRequestContentType(operation)))
393393
operationMiddleware.appendMiddleware(operation, OperationInputBodyMiddleware(ctx.model, ctx.symbolProvider))
394394

395-
operationMiddleware.appendMiddleware(operation, ContentLengthMiddleware())
395+
operationMiddleware.appendMiddleware(operation, ContentLengthMiddleware(ctx.model))
396396

397397
operationMiddleware.appendMiddleware(operation, LoggingMiddleware())
398398
operationMiddleware.appendMiddleware(operation, DeserializeMiddleware())

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package software.amazon.smithy.swift.codegen.integration.middlewares
22

3+
import software.amazon.smithy.model.Model
34
import software.amazon.smithy.model.shapes.OperationShape
45
import software.amazon.smithy.swift.codegen.ClientRuntimeTypes
56
import software.amazon.smithy.swift.codegen.SwiftWriter
7+
import software.amazon.smithy.swift.codegen.integration.middlewares.handlers.MiddlewareShapeUtils
68
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
79
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
810
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
911

10-
class ContentLengthMiddleware : MiddlewareRenderable {
12+
class ContentLengthMiddleware(val model: Model) : MiddlewareRenderable {
1113

1214
override val name = "ContentLengthMiddleware"
1315

@@ -20,6 +22,9 @@ class ContentLengthMiddleware : MiddlewareRenderable {
2022
op: OperationShape,
2123
operationStackName: String
2224
) {
23-
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: \$N())", ClientRuntimeTypes.Middleware.ContentLengthMiddleware)
25+
val hasHttpBody = MiddlewareShapeUtils.hasHttpBody(model, op)
26+
if (hasHttpBody) {
27+
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: \$N())", ClientRuntimeTypes.Middleware.ContentLengthMiddleware)
28+
}
2429
}
2530
}

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1212
class ContentTypeMiddleware(
1313
val model: Model,
1414
val symbolProvider: SymbolProvider,
15-
val defaultContentType: String
15+
val defaultContentType: String,
16+
val shouldRender: Boolean = false
1617
) : MiddlewareRenderable {
1718

1819
override val name = "ContentTypeMiddleware"
@@ -26,9 +27,12 @@ class ContentTypeMiddleware(
2627
op: OperationShape,
2728
operationStackName: String,
2829
) {
29-
val inputShapeName = MiddlewareShapeUtils.inputSymbol(symbolProvider, model, op).name
30-
val outputShapeName = MiddlewareShapeUtils.outputSymbol(symbolProvider, model, op).name
31-
val outputErrorName = MiddlewareShapeUtils.outputErrorSymbolName(op)
32-
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: ContentTypeMiddleware<$inputShapeName, $outputShapeName, $outputErrorName>(contentType: \"${defaultContentType}\"))")
30+
val hasHttpBody = MiddlewareShapeUtils.hasHttpBody(model, op)
31+
if (hasHttpBody || shouldRender) {
32+
val inputShapeName = MiddlewareShapeUtils.inputSymbol(symbolProvider, model, op).name
33+
val outputShapeName = MiddlewareShapeUtils.outputSymbol(symbolProvider, model, op).name
34+
val outputErrorName = MiddlewareShapeUtils.outputErrorSymbolName(op)
35+
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: ContentTypeMiddleware<$inputShapeName, $outputShapeName, $outputErrorName>(contentType: \"${defaultContentType}\"))")
36+
}
3337
}
3438
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import software.amazon.smithy.codegen.core.SymbolProvider
44
import software.amazon.smithy.model.Model
55
import software.amazon.smithy.model.shapes.OperationShape
66
import software.amazon.smithy.swift.codegen.SwiftWriter
7-
import software.amazon.smithy.swift.codegen.integration.isInHttpBody
87
import software.amazon.smithy.swift.codegen.integration.middlewares.handlers.MiddlewareShapeUtils
98
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
109
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
@@ -27,9 +26,8 @@ class OperationInputBodyMiddleware(
2726
op: OperationShape,
2827
operationStackName: String,
2928
) {
30-
val inputShape = model.expectShape(op.input.get())
3129
val inputShapeName = MiddlewareShapeUtils.inputSymbol(symbolProvider, model, op).name
32-
val hasHttpBody = inputShape.members().filter { it.isInHttpBody() }.count() > 0
30+
val hasHttpBody = MiddlewareShapeUtils.hasHttpBody(model, op)
3331
if (hasHttpBody || shouldRender) {
3432
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: ${inputShapeName}BodyMiddleware())")
3533
}

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,16 @@ import software.amazon.smithy.codegen.core.SymbolProvider
55
import software.amazon.smithy.model.Model
66
import software.amazon.smithy.model.knowledge.OperationIndex
77
import software.amazon.smithy.model.shapes.OperationShape
8+
import software.amazon.smithy.model.shapes.Shape
89
import software.amazon.smithy.swift.codegen.SwiftSettings
10+
import software.amazon.smithy.swift.codegen.integration.isInHttpBody
911
import software.amazon.smithy.swift.codegen.model.capitalizedName
1012

1113
class MiddlewareShapeUtils {
1214
companion object {
15+
fun inputShape(model: Model, op: OperationShape): Shape {
16+
return model.expectShape(op.input.get())
17+
}
1318
fun inputSymbol(symbolProvider: SymbolProvider, model: Model, op: OperationShape): Symbol {
1419
val opIndex = OperationIndex.of(model)
1520
return inputSymbol(symbolProvider, opIndex, op)
@@ -36,5 +41,10 @@ class MiddlewareShapeUtils {
3641
fun rootNamespace(settings: SwiftSettings): String {
3742
return settings.moduleName
3843
}
44+
45+
fun hasHttpBody(model: Model, op: OperationShape): Boolean {
46+
val inputShape = inputShape(model, op)
47+
return inputShape.members().filter { it.isInHttpBody() }.count() > 0
48+
}
3949
}
4050
}

smithy-swift-codegen/src/test/kotlin/HttpProtocolUnitTestRequestGeneratorTests.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,8 +263,6 @@ class HttpProtocolUnitTestRequestGeneratorTests {
263263
}
264264
operationStack.serializeStep.intercept(position: .after, middleware: EmptyInputAndEmptyOutputInputHeadersMiddleware())
265265
operationStack.serializeStep.intercept(position: .after, middleware: EmptyInputAndEmptyOutputInputQueryItemMiddleware())
266-
operationStack.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware<EmptyInputAndEmptyOutputInput, EmptyInputAndEmptyOutputOutputResponse, EmptyInputAndEmptyOutputOutputError>(contentType: "application/json"))
267-
operationStack.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware())
268266
operationStack.deserializeStep.intercept(position: .after,
269267
middleware: MockDeserializeMiddleware<EmptyInputAndEmptyOutputOutputResponse, EmptyInputAndEmptyOutputOutputError>(
270268
id: "TestDeserializeMiddleware"){ context, actual in
@@ -499,8 +497,6 @@ class HttpProtocolUnitTestRequestGeneratorTests {
499497
}
500498
operationStack.serializeStep.intercept(position: .after, middleware: HttpPrefixHeadersInputHeadersMiddleware())
501499
operationStack.serializeStep.intercept(position: .after, middleware: HttpPrefixHeadersInputQueryItemMiddleware())
502-
operationStack.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware<HttpPrefixHeadersInput, HttpPrefixHeadersOutputResponse, HttpPrefixHeadersOutputError>(contentType: "application/json"))
503-
operationStack.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware())
504500
operationStack.deserializeStep.intercept(position: .after,
505501
middleware: MockDeserializeMiddleware<HttpPrefixHeadersOutputResponse, HttpPrefixHeadersOutputError>(
506502
id: "TestDeserializeMiddleware"){ context, actual in

0 commit comments

Comments
 (0)