Skip to content

Commit c5889db

Browse files
authored
refactor: restructure codegen packages (#115)
1 parent c7df98a commit c5889db

32 files changed

+317
-239
lines changed

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/AwsKotlinDependency.kt

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

77
import software.amazon.smithy.codegen.core.CodegenException
8-
import software.amazon.smithy.kotlin.codegen.GradleConfiguration
9-
import software.amazon.smithy.kotlin.codegen.KotlinDependency
10-
import software.amazon.smithy.kotlin.codegen.isValidVersion
8+
import software.amazon.smithy.kotlin.codegen.core.GradleConfiguration
9+
import software.amazon.smithy.kotlin.codegen.core.KotlinDependency
10+
import software.amazon.smithy.kotlin.codegen.core.isValidVersion
1111

1212
// root namespace for the AWS client-runtime
1313
const val AWS_CLIENT_RT_ROOT_NS = "aws.sdk.kotlin.runtime"

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/AwsRuntimeTypes.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
package aws.sdk.kotlin.codegen
77

8-
import software.amazon.smithy.kotlin.codegen.buildSymbol
9-
import software.amazon.smithy.kotlin.codegen.namespace
8+
import software.amazon.smithy.kotlin.codegen.model.buildSymbol
9+
import software.amazon.smithy.kotlin.codegen.model.namespace
1010

1111
/**
1212
* Commonly used AWS runtime types. Provides a single definition of a runtime symbol such that codegen isn't littered

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/AwsServiceConfigIntegration.kt

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

7-
import software.amazon.smithy.kotlin.codegen.*
7+
import software.amazon.smithy.kotlin.codegen.core.*
88
import software.amazon.smithy.kotlin.codegen.integration.KotlinIntegration
9+
import software.amazon.smithy.kotlin.codegen.model.buildSymbol
10+
import software.amazon.smithy.kotlin.codegen.model.namespace
11+
import software.amazon.smithy.kotlin.codegen.rendering.ClientConfigProperty
912

1013
class AwsServiceConfigIntegration : KotlinIntegration {
1114
companion object {

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/AwsServiceUtils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
package aws.sdk.kotlin.codegen
77

88
import software.amazon.smithy.aws.traits.ServiceTrait
9-
import software.amazon.smithy.kotlin.codegen.expectTrait
9+
import software.amazon.smithy.kotlin.codegen.model.expectTrait
1010
import software.amazon.smithy.model.shapes.ServiceShape
1111

1212
/**

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/GradleGenerator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55
package aws.sdk.kotlin.codegen
66

7-
import software.amazon.smithy.kotlin.codegen.*
7+
import software.amazon.smithy.kotlin.codegen.core.*
88
import software.amazon.smithy.kotlin.codegen.integration.KotlinIntegration
99
import software.amazon.smithy.utils.CodeWriter
1010

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/SdkProtocolGeneratorSupplier.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@
44
*/
55
package aws.sdk.kotlin.codegen
66

7-
import aws.sdk.kotlin.codegen.awsjson.AwsJson1_0
8-
import aws.sdk.kotlin.codegen.awsjson.AwsJson1_1
9-
import aws.sdk.kotlin.codegen.restjson.RestJson1
10-
import aws.sdk.kotlin.codegen.restxml.RestXml
7+
import aws.sdk.kotlin.codegen.protocols.*
118
import software.amazon.smithy.kotlin.codegen.integration.KotlinIntegration
12-
import software.amazon.smithy.kotlin.codegen.integration.ProtocolGenerator
9+
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolGenerator
1310

1411
/**
1512
* Integration that registers protocol generators this package provides

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/awsjson/AwsJson1_0.kt

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

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/customization/s3/S3SigningConfig.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
package aws.sdk.kotlin.codegen.customization.s3
77

88
import aws.sdk.kotlin.codegen.AwsRuntimeTypes
9-
import aws.sdk.kotlin.codegen.middleware.AwsSignatureVersion4
10-
import software.amazon.smithy.kotlin.codegen.KotlinWriter
9+
import aws.sdk.kotlin.codegen.protocols.middleware.AwsSignatureVersion4
10+
import software.amazon.smithy.kotlin.codegen.core.KotlinWriter
1111
import software.amazon.smithy.kotlin.codegen.integration.KotlinIntegration
12-
import software.amazon.smithy.kotlin.codegen.integration.ProtocolGenerator
13-
import software.amazon.smithy.kotlin.codegen.integration.ProtocolMiddleware
12+
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolGenerator
13+
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolMiddleware
1414

1515
/**
1616
* Overrides the SigV4 signing middleware config for S3.
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0.
4+
*/
5+
package aws.sdk.kotlin.codegen.protocols
6+
7+
import aws.sdk.kotlin.codegen.protocols.core.AwsHttpBindingProtocolGenerator
8+
import aws.sdk.kotlin.codegen.protocols.json.AwsJsonHttpBindingResolver
9+
import aws.sdk.kotlin.codegen.protocols.json.AwsJsonModeledExceptionsMiddleware
10+
import aws.sdk.kotlin.codegen.protocols.json.AwsJsonProtocolMiddleware
11+
import aws.sdk.kotlin.codegen.protocols.json.JsonSerdeFieldGenerator
12+
import software.amazon.smithy.aws.traits.protocols.AwsJson1_0Trait
13+
import software.amazon.smithy.kotlin.codegen.core.KotlinWriter
14+
import software.amazon.smithy.kotlin.codegen.rendering.protocol.HttpBindingResolver
15+
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolGenerator
16+
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolMiddleware
17+
import software.amazon.smithy.model.shapes.*
18+
import software.amazon.smithy.model.traits.TimestampFormatTrait
19+
20+
/**
21+
* Handles generating the aws.protocols#awsJson1_0 protocol for services.
22+
*
23+
* @inheritDoc
24+
* @see AwsHttpBindingProtocolGenerator
25+
*/
26+
class AwsJson1_0 : AwsHttpBindingProtocolGenerator() {
27+
28+
override fun getDefaultHttpMiddleware(ctx: ProtocolGenerator.GenerationContext): List<ProtocolMiddleware> {
29+
val httpMiddleware = super.getDefaultHttpMiddleware(ctx)
30+
val awsJsonMiddleware = listOf(
31+
AwsJsonProtocolMiddleware("1.0"),
32+
AwsJsonModeledExceptionsMiddleware(ctx, getProtocolHttpBindingResolver(ctx))
33+
)
34+
35+
return httpMiddleware + awsJsonMiddleware
36+
}
37+
38+
override fun getProtocolHttpBindingResolver(ctx: ProtocolGenerator.GenerationContext): HttpBindingResolver =
39+
AwsJsonHttpBindingResolver(ctx, "application/x-amz-json-1.0")
40+
41+
override val defaultTimestampFormat: TimestampFormatTrait.Format = TimestampFormatTrait.Format.EPOCH_SECONDS
42+
43+
override fun generateSdkFieldDescriptor(
44+
ctx: ProtocolGenerator.GenerationContext,
45+
memberShape: MemberShape,
46+
writer: KotlinWriter,
47+
memberTargetShape: Shape?,
48+
namePostfix: String
49+
) = JsonSerdeFieldGenerator.generateSdkFieldDescriptor(ctx, memberShape, writer, memberTargetShape, namePostfix)
50+
51+
override fun generateSdkObjectDescriptorTraits(
52+
ctx: ProtocolGenerator.GenerationContext,
53+
objectShape: Shape,
54+
writer: KotlinWriter
55+
) = JsonSerdeFieldGenerator.generateSdkObjectDescriptorTraits(ctx, objectShape, writer)
56+
57+
override val protocol: ShapeId = AwsJson1_0Trait.ID
58+
}
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,18 @@
33
* SPDX-License-Identifier: Apache-2.0.
44
*/
55

6-
package aws.sdk.kotlin.codegen.awsjson
6+
package aws.sdk.kotlin.codegen.protocols
77

8-
import aws.sdk.kotlin.codegen.AwsHttpBindingProtocolGenerator
8+
import aws.sdk.kotlin.codegen.protocols.core.AwsHttpBindingProtocolGenerator
9+
import aws.sdk.kotlin.codegen.protocols.json.AwsJsonHttpBindingResolver
10+
import aws.sdk.kotlin.codegen.protocols.json.AwsJsonModeledExceptionsMiddleware
11+
import aws.sdk.kotlin.codegen.protocols.json.AwsJsonProtocolMiddleware
12+
import aws.sdk.kotlin.codegen.protocols.json.JsonSerdeFieldGenerator
913
import software.amazon.smithy.aws.traits.protocols.AwsJson1_1Trait
10-
import software.amazon.smithy.kotlin.codegen.KotlinWriter
11-
import software.amazon.smithy.kotlin.codegen.integration.*
14+
import software.amazon.smithy.kotlin.codegen.core.KotlinWriter
15+
import software.amazon.smithy.kotlin.codegen.rendering.protocol.HttpBindingResolver
16+
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolGenerator
17+
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolMiddleware
1218
import software.amazon.smithy.model.shapes.MemberShape
1319
import software.amazon.smithy.model.shapes.Shape
1420
import software.amazon.smithy.model.shapes.ShapeId

0 commit comments

Comments
 (0)