Skip to content

Commit 265ef27

Browse files
authored
misc: add clarifying docs for endpointProvider (#822)
1 parent f2e238d commit 265ef27

File tree

7 files changed

+38
-6
lines changed

7 files changed

+38
-6
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"id": "ce8cc156-ee47-40ce-8ef7-7c3fca2e9536",
3+
"type": "misc",
4+
"description": "Add clarifying documentation for `endpointProvider` in client config."
5+
}

codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/ServiceClientConfigGenerator.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import software.amazon.smithy.kotlin.codegen.model.expectTrait
1212
import software.amazon.smithy.kotlin.codegen.model.hasIdempotentTokenMember
1313
import software.amazon.smithy.kotlin.codegen.model.hasTrait
1414
import software.amazon.smithy.kotlin.codegen.rendering.endpoints.DefaultEndpointProviderGenerator
15+
import software.amazon.smithy.kotlin.codegen.rendering.endpoints.EndpointParametersGenerator
1516
import software.amazon.smithy.kotlin.codegen.rendering.endpoints.EndpointProviderGenerator
1617
import software.amazon.smithy.kotlin.codegen.rendering.util.AbstractConfigGenerator
1718
import software.amazon.smithy.kotlin.codegen.rendering.util.ConfigProperty
@@ -63,14 +64,24 @@ class ServiceClientConfigGenerator(
6364
val hasRules = shape.hasTrait<EndpointRuleSetTrait>()
6465
symbol = EndpointProviderGenerator.getSymbol(context.settings)
6566
propertyType = if (hasRules) { // if there's a ruleset, we have a usable default, otherwise caller has to provide their own
66-
additionalImports = listOf(DefaultEndpointProviderGenerator.getSymbol(context.settings))
6767
ConfigPropertyType.RequiredWithDefault("DefaultEndpointProvider()")
6868
} else {
6969
ConfigPropertyType.Required()
7070
}
7171
documentation = """
72-
The endpoint provider used to determine where to make service requests.
72+
The endpoint provider used to determine where to make service requests. **This is an advanced config
73+
option.**
74+
75+
Endpoint resolution occurs as part of the workflow for every request made via the service client.
76+
77+
The inputs to endpoint resolution are defined on a per-service basis (see [EndpointParameters]).
7378
""".trimIndent()
79+
additionalImports = buildList {
80+
add(EndpointParametersGenerator.getSymbol(context.settings))
81+
if (hasRules) {
82+
add(DefaultEndpointProviderGenerator.getSymbol(context.settings))
83+
}
84+
}
7485
},
7586
)
7687
}

codegen/smithy-kotlin-codegen/src/test/kotlin/software/amazon/smithy/kotlin/codegen/rendering/ServiceClientConfigGeneratorTest.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,12 @@ public class Config private constructor(builder: Builder) : HttpClientConfig, Id
7474
override var httpClientEngine: HttpClientEngine? = null
7575
7676
/**
77-
* The endpoint provider used to determine where to make service requests.
77+
* The endpoint provider used to determine where to make service requests. **This is an advanced config
78+
* option.**
79+
*
80+
* Endpoint resolution occurs as part of the workflow for every request made via the service client.
81+
*
82+
* The inputs to endpoint resolution are defined on a per-service basis (see [EndpointParameters]).
7883
*/
7984
public var endpointProvider: EndpointProvider? = null
8085
@@ -252,7 +257,12 @@ public class Config private constructor(builder: Builder) {
252257
public var customProp: Int? = null
253258
254259
/**
255-
* The endpoint provider used to determine where to make service requests.
260+
* The endpoint provider used to determine where to make service requests. **This is an advanced config
261+
* option.**
262+
*
263+
* Endpoint resolution occurs as part of the workflow for every request made via the service client.
264+
*
265+
* The inputs to endpoint resolution are defined on a per-service basis (see [EndpointParameters]).
256266
*/
257267
public var endpointProvider: EndpointProvider? = null
258268
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.test.endpoints
2+
3+
class EndpointParameters

tests/codegen/paginator-tests/src/main/kotlin/com/test/endpoints/EndpointProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ package com.test.endpoints
33
/**
44
* Stubbed EndpointProvider since we don't use a concrete protocol generator for this test.
55
*/
6-
typealias EndpointProvider = aws.smithy.kotlin.runtime.client.endpoints.EndpointProvider<Unit>
6+
typealias EndpointProvider = aws.smithy.kotlin.runtime.client.endpoints.EndpointProvider<EndpointParameters>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.test.endpoints
2+
3+
class EndpointParameters

tests/codegen/waiter-tests/src/main/kotlin/com/test/endpoints/EndpointProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ package com.test.endpoints
33
/**
44
* Stubbed EndpointProvider since we don't use a concrete protocol generator for this test.
55
*/
6-
typealias EndpointProvider = aws.smithy.kotlin.runtime.client.endpoints.EndpointProvider<Unit>
6+
typealias EndpointProvider = aws.smithy.kotlin.runtime.client.endpoints.EndpointProvider<EndpointParameters>

0 commit comments

Comments
 (0)