Skip to content

Commit 0370309

Browse files
Austin BrooksQuanzzzz
Austin Brooks
authored andcommitted
Expose the metadata key on client interfaces
1 parent e59216d commit 0370309

File tree

7 files changed

+39
-6
lines changed

7 files changed

+39
-6
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "bugfix",
3+
"category": "AWS SDK for Java v2",
4+
"contributor": "",
5+
"description": "Expose the metadata key on SDK client interfaces for use with `ServiceMetadataProvider`"
6+
}

codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/AsyncClientInterface.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import software.amazon.awssdk.core.SdkClient;
4949
import software.amazon.awssdk.core.async.AsyncRequestBody;
5050
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
51+
import software.amazon.awssdk.regions.ServiceMetadataProvider;
5152
import software.amazon.awssdk.regions.providers.DefaultAwsRegionProviderChain;
5253

5354
public class AsyncClientInterface implements ClassSpec {
@@ -78,6 +79,12 @@ public TypeSpec poetSpec() {
7879
.addField(FieldSpec.builder(String.class, "SERVICE_NAME")
7980
.addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
8081
.initializer("$S", model.getMetadata().getSigningName())
82+
.build())
83+
.addField(FieldSpec.builder(String.class, "SERVICE_METADATA_ID")
84+
.addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
85+
.initializer("$S", model.getMetadata().getEndpointPrefix())
86+
.addJavadoc("Value for looking up the service's metadata from the {@link $T}.",
87+
ServiceMetadataProvider.class)
8188
.build());
8289

8390
PoetUtils.addJavadoc(result::addJavadoc, getJavadoc());

codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/SyncClientInterface.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import software.amazon.awssdk.core.sync.RequestBody;
5555
import software.amazon.awssdk.core.sync.ResponseTransformer;
5656
import software.amazon.awssdk.regions.ServiceMetadata;
57+
import software.amazon.awssdk.regions.ServiceMetadataProvider;
5758
import software.amazon.awssdk.regions.providers.DefaultAwsRegionProviderChain;
5859

5960
public final class SyncClientInterface implements ClassSpec {
@@ -78,7 +79,13 @@ public TypeSpec poetSpec() {
7879
.addField(FieldSpec.builder(String.class, "SERVICE_NAME")
7980
.addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
8081
.initializer("$S", model.getMetadata().getSigningName())
81-
.build());
82+
.build())
83+
.addField(FieldSpec.builder(String.class, "SERVICE_METADATA_ID")
84+
.addModifiers(Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL)
85+
.initializer("$S", model.getMetadata().getEndpointPrefix())
86+
.addJavadoc("Value for looking up the service's metadata from the {@link $T}.",
87+
ServiceMetadataProvider.class)
88+
.build());
8289

8390
PoetUtils.addJavadoc(result::addJavadoc, getJavadoc());
8491

@@ -148,7 +155,7 @@ private MethodSpec serviceMetadata() {
148155
return MethodSpec.methodBuilder("serviceMetadata")
149156
.returns(ServiceMetadata.class)
150157
.addModifiers(Modifier.STATIC, Modifier.PUBLIC)
151-
.addStatement("return $T.of($S)", ServiceMetadata.class, model.getMetadata().getEndpointPrefix())
158+
.addStatement("return $T.of(SERVICE_METADATA_ID)", ServiceMetadata.class)
152159
.build();
153160
}
154161

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/builder/test-client-builder-class.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
abstract class DefaultJsonBaseClientBuilder<B extends JsonBaseClientBuilder<B, C>, C> extends AwsDefaultClientBuilder<B, C> {
2525
@Override
2626
protected final String serviceEndpointPrefix() {
27-
return "json-service";
27+
return "json-service-endpoint";
2828
}
2929

3030
@Override

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/c2j/json/service-2.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
"version": "2.0",
33
"metadata": {
44
"apiVersion": "2010-05-08",
5-
"endpointPrefix": "json-service",
5+
"endpointPrefix": "json-service-endpoint",
66
"globalEndpoint": "json-service.amazonaws.com",
77
"protocol": "rest-json",
88
"serviceAbbreviation": "Json Service",
99
"serviceFullName": "Some Service That Uses Json Protocol",
10-
"serviceId":"Json Service",
10+
"serviceId": "Json Service",
11+
"signingName": "json-service",
1112
"signatureVersion": "v4",
1213
"uid": "json-service-2010-05-08",
1314
"xmlNamespace": "https://json-service.amazonaws.com/doc/2010-05-08/"

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-json-async-client-interface.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@
4747
public interface JsonAsyncClient extends SdkClient {
4848
String SERVICE_NAME = "json-service";
4949

50+
/**
51+
* Value for looking up the service's metadata from the
52+
* {@link software.amazon.awssdk.regions.ServiceMetadataProvider}.
53+
*/
54+
String SERVICE_METADATA_ID = "json-service-endpoint";
55+
5056
/**
5157
* Create a {@link JsonAsyncClient} with the region loaded from the
5258
* {@link software.amazon.awssdk.regions.providers.DefaultAwsRegionProviderChain} and credentials loaded from the

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-json-client-interface.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@
4343
public interface JsonClient extends SdkClient {
4444
String SERVICE_NAME = "json-service";
4545

46+
/**
47+
* Value for looking up the service's metadata from the
48+
* {@link software.amazon.awssdk.regions.ServiceMetadataProvider}.
49+
*/
50+
String SERVICE_METADATA_ID = "json-service-endpoint";
51+
4652
/**
4753
* Create a {@link JsonClient} with the region loaded from the
4854
* {@link software.amazon.awssdk.regions.providers.DefaultAwsRegionProviderChain} and credentials loaded from the
@@ -1358,7 +1364,7 @@ default ResponseBytes<StreamingOutputOperationResponse> streamingOutputOperation
13581364
}
13591365

13601366
static ServiceMetadata serviceMetadata() {
1361-
return ServiceMetadata.of("json-service");
1367+
return ServiceMetadata.of(SERVICE_METADATA_ID);
13621368
}
13631369

13641370
/**

0 commit comments

Comments
 (0)