Skip to content

Commit 9d1cecc

Browse files
committed
chore(codegen): call getEndpointDiscovery*Plugin from commands
1 parent c615b20 commit 9d1cecc

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Map;
2121
import java.util.function.Consumer;
2222

23+
import software.amazon.smithy.aws.traits.clientendpointdiscovery.ClientDiscoveredEndpointTrait;
2324
import software.amazon.smithy.aws.traits.clientendpointdiscovery.ClientEndpointDiscoveryTrait;
2425
import software.amazon.smithy.codegen.core.CodegenException;
2526
import software.amazon.smithy.codegen.core.SymbolProvider;
@@ -33,6 +34,7 @@
3334
import software.amazon.smithy.typescript.codegen.TypeScriptWriter;
3435
import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin;
3536
import software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration;
37+
import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin.Convention;
3638
import software.amazon.smithy.utils.ListUtils;
3739
import software.amazon.smithy.utils.MapUtils;
3840
import software.amazon.smithy.utils.SmithyInternalApi;
@@ -70,7 +72,22 @@ public List<RuntimeClientPlugin> getClientPlugins() {
7072
// ToDo: The Endpoint Discovery Command Name needs to be read from ClientEndpointDiscoveryTrait.
7173
.additionalResolveFunctionParameters("DescribeEndpointsCommand")
7274
.servicePredicate((m, s) -> hasClientEndpointDiscovery(s))
75+
.build(),
76+
// ToDo: The value ClientDiscoveredEndpointTrait.isRequired() needs to be passed to Plugin instead
77+
// of creating two functions Required and Optional. The map of identifiers also needs to be passed.
78+
RuntimeClientPlugin.builder()
79+
.withConventions(AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY.dependency,
80+
"EndpointDiscoveryRequired", RuntimeClientPlugin.Convention.HAS_MIDDLEWARE)
81+
.additionalResolveFunctionParameters(new String[]{"clientStack", "options"})
82+
.operationPredicate((m, s, o) -> isClientDiscoveredEndpointRequired(s, o))
83+
.build(),
84+
RuntimeClientPlugin.builder()
85+
.withConventions(AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY.dependency,
86+
"EndpointDiscoveryOptional", RuntimeClientPlugin.Convention.HAS_MIDDLEWARE)
87+
.additionalResolveFunctionParameters(new String[]{"clientStack", "options"})
88+
.operationPredicate((m, s, o) -> isClientDiscoveredEndpointOptional(s, o))
7389
.build()
90+
7491
);
7592
}
7693

@@ -125,9 +142,23 @@ private void addEndpointDiscoveryCommandImport(
125142
}
126143

127144
private static boolean hasClientEndpointDiscovery(ServiceShape service) {
128-
if(service.getTrait(ClientEndpointDiscoveryTrait.class).isPresent()) {
145+
if(service.hasTrait(ClientEndpointDiscoveryTrait.class)) {
129146
return true;
130147
}
131148
return false;
132149
}
150+
151+
private static boolean isClientDiscoveredEndpointRequired(ServiceShape service, OperationShape operation) {
152+
if (hasClientEndpointDiscovery(service) && operation.hasTrait(ClientDiscoveredEndpointTrait.class)) {
153+
return operation.getTrait(ClientDiscoveredEndpointTrait.class).orElse(null).isRequired();
154+
}
155+
return false;
156+
}
157+
158+
private static boolean isClientDiscoveredEndpointOptional(ServiceShape service, OperationShape operation) {
159+
if (!hasClientEndpointDiscovery(service) && operation.hasTrait(ClientDiscoveredEndpointTrait.class)) {
160+
return !operation.getTrait(ClientDiscoveredEndpointTrait.class).orElse(null).isRequired();
161+
}
162+
return false;
163+
}
133164
}

0 commit comments

Comments
 (0)