Skip to content

Commit 98e4305

Browse files
authored
chore: refactor remove MiddlewareRenderableExecutionContext and update interface (#357)
1 parent 757c01b commit 98e4305

17 files changed

+58
-95
lines changed

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -489,14 +489,14 @@ abstract class HttpBindingProtocolGenerator : ProtocolGenerator {
489489
val resolver = getProtocolHttpBindingResolver(ctx, defaultContentType)
490490

491491
for (operation in getHttpBindingOperations(ctx)) {
492-
operationMiddleware.appendMiddleware(operation, IdempotencyTokenMiddleware())
493-
494-
operationMiddleware.appendMiddleware(operation, ContentMD5Middleware())
495-
operationMiddleware.appendMiddleware(operation, OperationInputUrlPathMiddleware())
496-
operationMiddleware.appendMiddleware(operation, OperationInputHeadersMiddleware())
497-
operationMiddleware.appendMiddleware(operation, OperationInputQueryItemMiddleware())
498-
operationMiddleware.appendMiddleware(operation, ContentTypeMiddleware(resolver.determineRequestContentType(operation)))
499-
operationMiddleware.appendMiddleware(operation, OperationInputBodyMiddleware())
492+
operationMiddleware.appendMiddleware(operation, IdempotencyTokenMiddleware(ctx.model, ctx.symbolProvider))
493+
494+
operationMiddleware.appendMiddleware(operation, ContentMD5Middleware(ctx.model, ctx.symbolProvider))
495+
operationMiddleware.appendMiddleware(operation, OperationInputUrlPathMiddleware(ctx.model, ctx.symbolProvider))
496+
operationMiddleware.appendMiddleware(operation, OperationInputHeadersMiddleware(ctx.model, ctx.symbolProvider))
497+
operationMiddleware.appendMiddleware(operation, OperationInputQueryItemMiddleware(ctx.model, ctx.symbolProvider))
498+
operationMiddleware.appendMiddleware(operation, ContentTypeMiddleware(ctx.model, ctx.symbolProvider, resolver.determineRequestContentType(operation)))
499+
operationMiddleware.appendMiddleware(operation, OperationInputBodyMiddleware(ctx.model, ctx.symbolProvider))
500500

501501
operationMiddleware.appendMiddleware(operation, ContentLengthMiddleware())
502502

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import software.amazon.smithy.swift.codegen.SwiftDependency
1515
import software.amazon.smithy.swift.codegen.SwiftTypes
1616
import software.amazon.smithy.swift.codegen.SwiftWriter
1717
import software.amazon.smithy.swift.codegen.middleware.MiddlewareExecutionGenerator
18-
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1918
import software.amazon.smithy.swift.codegen.middleware.OperationMiddleware
2019
import software.amazon.smithy.swift.codegen.model.camelCaseName
2120
import software.amazon.smithy.swift.codegen.model.capitalizedName
@@ -64,7 +63,7 @@ open class HttpProtocolClientGenerator(
6463
ServiceGenerator.renderOperationDefinition(model, symbolProvider, writer, operationsIndex, it)
6564
writer.openBlock("{", "}") {
6665
val operationStackName = "operation"
67-
val generator = MiddlewareExecutionGenerator(ctx, writer, httpBindingResolver, httpProtocolCustomizable, operationMiddleware, operationStackName, MiddlewareRenderableExecutionContext.CLIENT)
66+
val generator = MiddlewareExecutionGenerator(ctx, writer, httpBindingResolver, httpProtocolCustomizable, operationMiddleware, operationStackName)
6867
generator.render(it) { writer, labelMemberName ->
6968
writer.write("completion(.failure(.client(\$N.serializationFailed(\"uri component $labelMemberName unexpectedly nil\"))))", ClientRuntimeTypes.Core.ClientError)
7069
writer.write("return")

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import software.amazon.smithy.model.traits.IdempotencyTokenTrait
1414
import software.amazon.smithy.protocoltests.traits.HttpRequestTestCase
1515
import software.amazon.smithy.swift.codegen.ShapeValueGenerator
1616
import software.amazon.smithy.swift.codegen.SwiftWriter
17-
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1817
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1918
import software.amazon.smithy.swift.codegen.model.RecursiveShapeBoxer
2019
import software.amazon.smithy.swift.codegen.model.capitalizedName
@@ -102,11 +101,11 @@ open class HttpProtocolUnitTestRequestGenerator protected constructor(builder: B
102101
operationMiddleware.removeMiddleware(operation, MiddlewareStep.DESERIALIZESTEP, "DeserializeMiddleware")
103102
operationMiddleware.removeMiddleware(operation, MiddlewareStep.DESERIALIZESTEP, "LoggingMiddleware")
104103

105-
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.INITIALIZESTEP, MiddlewareRenderableExecutionContext.UNIT_TEST_REQUEST)
106-
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.BUILDSTEP, MiddlewareRenderableExecutionContext.UNIT_TEST_REQUEST)
107-
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.SERIALIZESTEP, MiddlewareRenderableExecutionContext.UNIT_TEST_REQUEST)
108-
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.FINALIZESTEP, MiddlewareRenderableExecutionContext.UNIT_TEST_REQUEST)
109-
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.DESERIALIZESTEP, MiddlewareRenderableExecutionContext.UNIT_TEST_REQUEST)
104+
operationMiddleware.renderMiddleware(writer, operation, operationStack, MiddlewareStep.INITIALIZESTEP)
105+
operationMiddleware.renderMiddleware(writer, operation, operationStack, MiddlewareStep.BUILDSTEP)
106+
operationMiddleware.renderMiddleware(writer, operation, operationStack, MiddlewareStep.SERIALIZESTEP)
107+
operationMiddleware.renderMiddleware(writer, operation, operationStack, MiddlewareStep.FINALIZESTEP)
108+
operationMiddleware.renderMiddleware(writer, operation, operationStack, MiddlewareStep.DESERIALIZESTEP)
110109
renderMockDeserializeMiddleware(test, operationStack, inputSymbol, outputSymbol, outputErrorName, inputShape)
111110

112111
writer.openBlock("_ = operationStack.handleMiddleware(context: context, input: input, next: MockHandler(){ (context, request) in ", "})") {

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

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

3-
import software.amazon.smithy.codegen.core.SymbolProvider
4-
import software.amazon.smithy.model.Model
53
import software.amazon.smithy.model.shapes.OperationShape
64
import software.amazon.smithy.swift.codegen.ClientRuntimeTypes
75
import software.amazon.smithy.swift.codegen.SwiftWriter
86
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
97
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
10-
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
118
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
129

1310
class ContentLengthMiddleware : MiddlewareRenderable {
@@ -19,12 +16,9 @@ class ContentLengthMiddleware : MiddlewareRenderable {
1916
override val position = MiddlewarePosition.BEFORE
2017

2118
override fun render(
22-
model: Model,
23-
symbolProvider: SymbolProvider,
2419
writer: SwiftWriter,
2520
op: OperationShape,
26-
operationStackName: String,
27-
executionContext: MiddlewareRenderableExecutionContext
21+
operationStackName: String
2822
) {
2923
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: \$N())", ClientRuntimeTypes.Middleware.ContentLengthMiddleware)
3024
}

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,20 @@ import software.amazon.smithy.swift.codegen.ServiceGenerator
99
import software.amazon.smithy.swift.codegen.SwiftWriter
1010
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
1111
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
12-
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1312
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1413
import software.amazon.smithy.swift.codegen.model.hasTrait
1514

16-
class ContentMD5Middleware : MiddlewareRenderable {
15+
class ContentMD5Middleware(
16+
val model: Model,
17+
val symbolProvider: SymbolProvider
18+
) : MiddlewareRenderable {
1719
override val name = "ContentMD5Middleware"
1820

1921
override val middlewareStep = MiddlewareStep.BUILDSTEP
2022

2123
override val position = MiddlewarePosition.BEFORE
2224

23-
override fun render(model: Model, symbolProvider: SymbolProvider, writer: SwiftWriter, op: OperationShape, operationStackName: String, executionContext: MiddlewareRenderableExecutionContext) {
25+
override fun render(writer: SwiftWriter, op: OperationShape, operationStackName: String) {
2426
if (op.hasTrait<HttpChecksumRequiredTrait>()) {
2527
val outputShapeName = ServiceGenerator.getOperationOutputShapeName(symbolProvider, model, op)
2628
val outputErrorName = ServiceGenerator.getOperationErrorShapeName(op)

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@ import software.amazon.smithy.swift.codegen.ServiceGenerator
77
import software.amazon.smithy.swift.codegen.SwiftWriter
88
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
99
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
10-
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1110
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1211

13-
class ContentTypeMiddleware(val defaultContentType: String) : MiddlewareRenderable {
12+
class ContentTypeMiddleware(
13+
val model: Model,
14+
val symbolProvider: SymbolProvider,
15+
val defaultContentType: String
16+
) : MiddlewareRenderable {
1417

1518
override val name = "ContentTypeMiddleware"
1619

@@ -19,12 +22,9 @@ class ContentTypeMiddleware(val defaultContentType: String) : MiddlewareRenderab
1922
override val position = MiddlewarePosition.AFTER
2023

2124
override fun render(
22-
model: Model,
23-
symbolProvider: SymbolProvider,
2425
writer: SwiftWriter,
2526
op: OperationShape,
2627
operationStackName: String,
27-
executionContext: MiddlewareRenderableExecutionContext
2828
) {
2929
val inputShapeName = ServiceGenerator.getOperationInputShapeName(symbolProvider, model, op)
3030
val outputShapeName = ServiceGenerator.getOperationOutputShapeName(symbolProvider, model, op)

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

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

3-
import software.amazon.smithy.codegen.core.SymbolProvider
4-
import software.amazon.smithy.model.Model
53
import software.amazon.smithy.model.shapes.OperationShape
64
import software.amazon.smithy.swift.codegen.ClientRuntimeTypes
75
import software.amazon.smithy.swift.codegen.SwiftWriter
86
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
97
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
10-
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
118
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
129

1310
class DeserializeMiddleware : MiddlewareRenderable {
@@ -19,12 +16,9 @@ class DeserializeMiddleware : MiddlewareRenderable {
1916
override val position = MiddlewarePosition.AFTER
2017

2118
override fun render(
22-
model: Model,
23-
symbolProvider: SymbolProvider,
2419
writer: SwiftWriter,
2520
op: OperationShape,
26-
operationStackName: String,
27-
executionContext: MiddlewareRenderableExecutionContext
21+
operationStackName: String
2822
) {
2923
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: \$N())", ClientRuntimeTypes.Middleware.DeserializeMiddleware)
3024
}

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@ import software.amazon.smithy.swift.codegen.SwiftTypes
1515
import software.amazon.smithy.swift.codegen.SwiftWriter
1616
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
1717
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
18-
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1918
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
2019
import software.amazon.smithy.swift.codegen.model.hasTrait
2120

22-
class IdempotencyTokenMiddleware : MiddlewareRenderable {
21+
class IdempotencyTokenMiddleware(
22+
val model: Model,
23+
val symbolProvider: SymbolProvider
24+
) : MiddlewareRenderable {
2325
override val name = "IdempotencyTokenMiddleware"
2426
override val middlewareStep = MiddlewareStep.INITIALIZESTEP
2527
override val position = MiddlewarePosition.AFTER
26-
override fun render(model: Model, symbolProvider: SymbolProvider, writer: SwiftWriter, op: OperationShape, operationStackName: String, executionContext: MiddlewareRenderableExecutionContext) {
28+
override fun render(writer: SwiftWriter, op: OperationShape, operationStackName: String) {
2729

2830
val inputShape = model.expectShape(op.input.get())
2931
val idempotentMember = inputShape.members().firstOrNull { it.hasTrait<IdempotencyTokenTrait>() }

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,11 @@
55

66
package software.amazon.smithy.swift.codegen.integration.middlewares
77

8-
import software.amazon.smithy.codegen.core.SymbolProvider
9-
import software.amazon.smithy.model.Model
108
import software.amazon.smithy.model.shapes.OperationShape
119
import software.amazon.smithy.swift.codegen.ClientRuntimeTypes
1210
import software.amazon.smithy.swift.codegen.SwiftWriter
1311
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
1412
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
15-
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1613
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1714

1815
class LoggingMiddleware : MiddlewareRenderable {
@@ -24,12 +21,9 @@ class LoggingMiddleware : MiddlewareRenderable {
2421
override val position = MiddlewarePosition.BEFORE
2522

2623
override fun render(
27-
model: Model,
28-
symbolProvider: SymbolProvider,
2924
writer: SwiftWriter,
3025
op: OperationShape,
31-
operationStackName: String,
32-
executionContext: MiddlewareRenderableExecutionContext
26+
operationStackName: String
3327
) {
3428
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: \$N(${middlewareParamsString()}))", ClientRuntimeTypes.Middleware.LoggerMiddleware)
3529
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ import software.amazon.smithy.swift.codegen.SwiftWriter
88
import software.amazon.smithy.swift.codegen.integration.isInHttpBody
99
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
1010
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
11-
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1211
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1312

14-
class OperationInputBodyMiddleware(val shouldRender: Boolean = false) : MiddlewareRenderable {
13+
class OperationInputBodyMiddleware(
14+
val model: Model,
15+
val symbolProvider: SymbolProvider,
16+
val shouldRender: Boolean = false
17+
) : MiddlewareRenderable {
1518

1619
override val name = "OperationInputBodyMiddleware"
1720

@@ -20,12 +23,9 @@ class OperationInputBodyMiddleware(val shouldRender: Boolean = false) : Middlewa
2023
override val position = MiddlewarePosition.AFTER
2124

2225
override fun render(
23-
model: Model,
24-
symbolProvider: SymbolProvider,
2526
writer: SwiftWriter,
2627
op: OperationShape,
2728
operationStackName: String,
28-
executionContext: MiddlewareRenderableExecutionContext
2929
) {
3030
val inputShape = model.expectShape(op.input.get())
3131
val inputShapeName = ServiceGenerator.getOperationInputShapeName(symbolProvider, model, op)

0 commit comments

Comments
 (0)