Skip to content

Commit 231224f

Browse files
authored
misc: generate internal-only clients with internal visibility (#1045)
1 parent 7b5747a commit 231224f

File tree

6 files changed

+39
-1490
lines changed

6 files changed

+39
-1490
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"id": "1371764e-c78a-4127-935c-407d11574af7",
3+
"type": "misc",
4+
"description": "Generate internal-only clients with `internal` visibility"
5+
}

aws-runtime/aws-config/api/aws-config.api

Lines changed: 0 additions & 1486 deletions
Large diffs are not rendered by default.

aws-runtime/aws-config/build.gradle.kts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,11 @@ codegen {
114114
generateDefaultBuildFiles = false
115115
generateFullProject = false
116116
}
117+
apiSettings {
118+
visibility = "internal"
119+
}
117120
}
118121

119-
// TODO - could we add a trait such that we change visibility to `internal` or a build setting...?
120122
transforms = listOf(
121123
"""
122124
{
@@ -149,6 +151,9 @@ codegen {
149151
generateDefaultBuildFiles = false
150152
generateFullProject = false
151153
}
154+
apiSettings {
155+
visibility = "internal"
156+
}
152157
}
153158

154159
transforms = listOf(
@@ -181,6 +186,9 @@ codegen {
181186
generateDefaultBuildFiles = false
182187
generateFullProject = false
183188
}
189+
apiSettings {
190+
visibility = "internal"
191+
}
184192
}
185193

186194
transforms = listOf(

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class AwsEndpointDelegator : EndpointDelegator {
4343
val defaultProviderSymbol = DefaultEndpointProviderGenerator.getSymbol(ctx.settings)
4444

4545
ctx.delegator.useFileWriter(providerSymbol) {
46-
EndpointProviderGenerator(it, providerSymbol, paramsSymbol).render()
46+
EndpointProviderGenerator(it, ctx.settings, providerSymbol, paramsSymbol).render()
4747
}
4848

4949
val endpointFunctions = buildMap {
@@ -58,7 +58,7 @@ class AwsEndpointDelegator : EndpointDelegator {
5858
}
5959
if (rules != null) {
6060
ctx.delegator.useFileWriter(defaultProviderSymbol) {
61-
DefaultEndpointProviderGenerator(it, rules, defaultProviderSymbol, providerSymbol, paramsSymbol, endpointFunctions, awsEndpointPropertyRenderers).render()
61+
DefaultEndpointProviderGenerator(it, rules, defaultProviderSymbol, providerSymbol, paramsSymbol, ctx.settings, endpointFunctions, awsEndpointPropertyRenderers).render()
6262
}
6363
}
6464
}

codegen/smithy-aws-kotlin-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/protocols/core/AwsHttpProtocolClientGenerator.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@ open class AwsHttpProtocolClientGenerator(
3434

3535
override fun render(writer: KotlinWriter) {
3636
writer.write("\n\n")
37-
writer.write("public const val ServiceApiVersion: String = #S", ctx.service.version)
37+
writer.write(
38+
"#L const val ServiceApiVersion: String = #S",
39+
ctx.settings.api.visibility,
40+
ctx.service.version,
41+
)
3842
writer.write("\n\n")
3943
// set AWS specific span attributes for an operation
4044
// https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/instrumentation/aws-sdk/

gradle/sdk-plugins/src/main/kotlin/aws/sdk/kotlin/gradle/codegen/dsl/SmithyKotlinPluginSettings.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@ import software.amazon.smithy.model.node.ObjectNode
1111
import software.amazon.smithy.model.node.ToNode
1212
import java.util.*
1313

14+
class SmithyKotlinApiSettings : ToNode {
15+
var visibility: String? = null
16+
17+
override fun toNode(): Node {
18+
val builder = ObjectNode.objectNodeBuilder()
19+
builder.withNullableMember("visibility", visibility)
20+
return builder.build()
21+
}
22+
}
23+
1424
class SmithyKotlinBuildSettings : ToNode {
1525
var generateFullProject: Boolean? = null
1626
var generateDefaultBuildFiles: Boolean? = null
@@ -24,6 +34,7 @@ class SmithyKotlinBuildSettings : ToNode {
2434

2535
val optInArrNode = optInAnnotations?.map { Node.from(it) }?.let { ArrayNode.fromNodes(it) }
2636
builder.withOptionalMember("optInAnnotations", Optional.ofNullable(optInArrNode))
37+
2738
return builder.build()
2839
}
2940
}
@@ -43,6 +54,12 @@ class SmithyKotlinPluginSettings : SmithyBuildPlugin {
4354
buildSettings!!.apply(configure)
4455
}
4556

57+
internal var apiSettings: SmithyKotlinApiSettings? = null
58+
fun apiSettings(configure: SmithyKotlinApiSettings.() -> Unit) {
59+
if (apiSettings == null) apiSettings = SmithyKotlinApiSettings()
60+
apiSettings!!.apply(configure)
61+
}
62+
4663
override fun equals(other: Any?): Boolean {
4764
if (this === other) return true
4865
if (javaClass != other?.javaClass) return false
@@ -79,6 +96,7 @@ class SmithyKotlinPluginSettings : SmithyBuildPlugin {
7996
}
8097
.withNullableMember("sdkId", sdkId)
8198
.withNullableMember("build", buildSettings)
99+
.withNullableMember("api", apiSettings)
82100

83101
return obj.build()
84102
}

0 commit comments

Comments
 (0)