Skip to content

Commit dc370a6

Browse files
committed
address pr feedbacks
1 parent 7f1eaff commit dc370a6

File tree

9 files changed

+232
-293
lines changed

9 files changed

+232
-293
lines changed

codegen/aws-sdk-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/customization/sqs/ClientConfigIntegration.kt

Lines changed: 0 additions & 92 deletions
This file was deleted.

codegen/aws-sdk-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/customization/sqs/SqsMd5ChecksumValidationIntegration.kt

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@
44
*/
55
package aws.sdk.kotlin.codegen.customization.sqs
66

7+
import aws.sdk.kotlin.codegen.ServiceClientCompanionObjectWriter
78
import software.amazon.smithy.kotlin.codegen.KotlinSettings
9+
import software.amazon.smithy.kotlin.codegen.core.CodegenContext
810
import software.amazon.smithy.kotlin.codegen.core.KotlinWriter
11+
import software.amazon.smithy.kotlin.codegen.integration.AppendingSectionWriter
912
import software.amazon.smithy.kotlin.codegen.integration.KotlinIntegration
13+
import software.amazon.smithy.kotlin.codegen.integration.SectionWriterBinding
14+
import software.amazon.smithy.kotlin.codegen.lang.KotlinTypes
1015
import software.amazon.smithy.kotlin.codegen.model.buildSymbol
1116
import software.amazon.smithy.kotlin.codegen.model.expectShape
1217
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolGenerator
1318
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolMiddleware
19+
import software.amazon.smithy.kotlin.codegen.rendering.util.ConfigProperty
1420
import software.amazon.smithy.model.Model
1521
import software.amazon.smithy.model.shapes.OperationShape
1622
import software.amazon.smithy.model.shapes.ServiceShape
@@ -22,6 +28,75 @@ class SqsMd5ChecksumValidationIntegration : KotlinIntegration {
2228
override fun enabledForService(model: Model, settings: KotlinSettings): Boolean =
2329
model.expectShape<ServiceShape>(settings.service).isSqs
2430

31+
companion object {
32+
val ValidationEnabledProp: ConfigProperty = ConfigProperty {
33+
name = "checksumValidationEnabled"
34+
symbol = buildSymbol {
35+
name = "ValidationEnabled"
36+
namespace = "aws.sdk.kotlin.services.sqs.internal"
37+
}
38+
documentation = """
39+
Specifies when MD5 checksum validation should be performed for SQS messages. This controls the automatic
40+
calculation and validation of checksums during message operations.
41+
42+
Valid values:
43+
- `ALWAYS` (default) - Checksums are calculated and validated for both sending and receiving operations
44+
(SendMessage, SendMessageBatch, and ReceiveMessage)
45+
- `WHEN_SENDING` - Checksums are only calculated and validated during send operations
46+
(SendMessage and SendMessageBatch)
47+
- `WHEN_RECEIVING` - Checksums are only calculated and validated during receive operations
48+
(ReceiveMessage)
49+
- `NEVER` - No checksum calculation or validation is performed
50+
""".trimIndent()
51+
}
52+
53+
private val validationScope = buildSymbol {
54+
name = "ValidationScope"
55+
namespace = "aws.sdk.kotlin.services.sqs.internal"
56+
}
57+
58+
val ValidationScopeProp: ConfigProperty = ConfigProperty {
59+
name = "checksumValidationScopes"
60+
symbol = KotlinTypes.Collections.set(validationScope, default = "emptySet()")
61+
documentation = """
62+
Specifies which parts of an SQS message should undergo MD5 checksum validation. This configuration
63+
accepts a set of validation scopes that determine which message components to validate.
64+
65+
Valid values:
66+
- `MESSAGE_ATTRIBUTES` - Validates checksums for message attributes
67+
- `MESSAGE_SYSTEM_ATTRIBUTES` - Validates checksums for message system attributes
68+
(Note: Not available for ReceiveMessage operations as SQS does not calculate checksums for
69+
system attributes during message receipt)
70+
- `MESSAGE_BODY` - Validates checksums for the message body
71+
72+
Default: All three scopes (MESSAGE_ATTRIBUTES, MESSAGE_SYSTEM_ATTRIBUTES, MESSAGE_BODY)
73+
""".trimIndent()
74+
}
75+
}
76+
77+
override fun additionalServiceConfigProps(ctx: CodegenContext): List<ConfigProperty> =
78+
listOf(
79+
ValidationEnabledProp,
80+
ValidationScopeProp,
81+
)
82+
83+
override val sectionWriters: List<SectionWriterBinding>
84+
get() = listOf(
85+
SectionWriterBinding(
86+
ServiceClientCompanionObjectWriter.FinalizeEnvironmentalConfig,
87+
finalizeSqsConfigWriter,
88+
),
89+
)
90+
91+
// add Sqs-specific config finalization
92+
private val finalizeSqsConfigWriter = AppendingSectionWriter { writer ->
93+
val finalizeSqsConfig = buildSymbol {
94+
name = "finalizeSqsConfig"
95+
namespace = "aws.sdk.kotlin.services.sqs.internal"
96+
}
97+
writer.write("#T(builder, sharedConfig)", finalizeSqsConfig)
98+
}
99+
25100
override fun customizeMiddleware(
26101
ctx: ProtocolGenerator.GenerationContext,
27102
resolved: List<ProtocolMiddleware>,
@@ -45,6 +120,6 @@ internal object SqsMd5ChecksumValidationMiddleware : ProtocolMiddleware {
45120
namespace = "aws.sdk.kotlin.services.sqs"
46121
}
47122

48-
writer.write("op.interceptors.add(#T(config.checksumValidationEnabled, config.checksumValidationScopes,))", symbol)
123+
writer.write("op.interceptors.add(#T(config.checksumValidationEnabled, config.checksumValidationScopes))", symbol)
49124
}
50125
}

codegen/aws-sdk-codegen/src/main/resources/META-INF/services/software.amazon.smithy.kotlin.codegen.integration.KotlinIntegration

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,4 @@ aws.sdk.kotlin.codegen.smoketests.SmokeTestsDenyListIntegration
4949
aws.sdk.kotlin.codegen.smoketests.testing.SmokeTestSuccessHttpEngineIntegration
5050
aws.sdk.kotlin.codegen.smoketests.testing.SmokeTestFailHttpEngineIntegration
5151
aws.sdk.kotlin.codegen.customization.AwsQueryModeCustomization
52-
aws.sdk.kotlin.codegen.customization.sqs.ClientConfigIntegration
5352
aws.sdk.kotlin.codegen.customization.sqs.SqsMd5ChecksumValidationIntegration

codegen/aws-sdk-codegen/src/test/kotlin/aws/sdk/kotlin/codegen/customization/sqs/SqsMd5ChecksumValidationIntegrationTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,5 @@ class SqsMd5ChecksumValidationIntegrationTest {
4848
object FooMiddleware : ProtocolMiddleware {
4949
override val name: String = "FooMiddleware"
5050
override fun render(ctx: ProtocolGenerator.GenerationContext, op: OperationShape, writer: KotlinWriter) =
51-
fail("Unexpected call to `FooMiddleware.render")
51+
fail("Unexpected call to `FooMiddleware.render`")
5252
}

0 commit comments

Comments
 (0)