38
38
import software .amazon .awssdk .protocols .json .JsonOperationMetadata ;
39
39
import software .amazon .awssdk .retries .api .RetryStrategy ;
40
40
import software .amazon .awssdk .services .querytojsoncompatible .internal .QueryToJsonCompatibleServiceClientConfigurationBuilder ;
41
+ import software .amazon .awssdk .services .querytojsoncompatible .internal .ServiceVersionUserAgent ;
41
42
import software .amazon .awssdk .services .querytojsoncompatible .model .APostOperationRequest ;
42
43
import software .amazon .awssdk .services .querytojsoncompatible .model .APostOperationResponse ;
43
44
import software .amazon .awssdk .services .querytojsoncompatible .model .InvalidInputException ;
@@ -57,7 +58,7 @@ final class DefaultQueryToJsonCompatibleAsyncClient implements QueryToJsonCompat
57
58
private static final Logger log = LoggerFactory .getLogger (DefaultQueryToJsonCompatibleAsyncClient .class );
58
59
59
60
private static final AwsProtocolMetadata protocolMetadata = AwsProtocolMetadata .builder ()
60
- .serviceProtocol (AwsServiceProtocol .AWS_JSON ).build ();
61
+ .serviceProtocol (AwsServiceProtocol .AWS_JSON ).build ();
61
62
62
63
private final AsyncClientHandler clientHandler ;
63
64
@@ -67,7 +68,8 @@ final class DefaultQueryToJsonCompatibleAsyncClient implements QueryToJsonCompat
67
68
68
69
protected DefaultQueryToJsonCompatibleAsyncClient (SdkClientConfiguration clientConfiguration ) {
69
70
this .clientHandler = new AwsAsyncClientHandler (clientConfiguration );
70
- this .clientConfiguration = clientConfiguration .toBuilder ().option (SdkClientOption .SDK_CLIENT , this ).build ();
71
+ this .clientConfiguration = clientConfiguration .toBuilder ().option (SdkClientOption .SDK_CLIENT , this )
72
+ .option (SdkClientOption .API_METADATA , ServiceVersionUserAgent .USER_AGENT ).build ();
71
73
this .protocolFactory = init (AwsJsonProtocolFactory .builder ()).build ();
72
74
}
73
75
@@ -99,43 +101,43 @@ protected DefaultQueryToJsonCompatibleAsyncClient(SdkClientConfiguration clientC
99
101
public CompletableFuture <APostOperationResponse > aPostOperation (APostOperationRequest aPostOperationRequest ) {
100
102
SdkClientConfiguration clientConfiguration = updateSdkClientConfiguration (aPostOperationRequest , this .clientConfiguration );
101
103
List <MetricPublisher > metricPublishers = resolveMetricPublishers (clientConfiguration , aPostOperationRequest
102
- .overrideConfiguration ().orElse (null ));
104
+ .overrideConfiguration ().orElse (null ));
103
105
MetricCollector apiCallMetricCollector = metricPublishers .isEmpty () ? NoOpMetricCollector .create () : MetricCollector
104
- .create ("ApiCall" );
106
+ .create ("ApiCall" );
105
107
try {
106
108
apiCallMetricCollector .reportMetric (CoreMetric .SERVICE_ID , "QueryToJsonCompatibleService" );
107
109
apiCallMetricCollector .reportMetric (CoreMetric .OPERATION_NAME , "APostOperation" );
108
110
JsonOperationMetadata operationMetadata = JsonOperationMetadata .builder ().hasStreamingSuccessResponse (false )
109
- .isPayloadJson (true ).build ();
111
+ .isPayloadJson (true ).build ();
110
112
111
113
HttpResponseHandler <APostOperationResponse > responseHandler = protocolFactory .createResponseHandler (
112
- operationMetadata , APostOperationResponse ::builder );
114
+ operationMetadata , APostOperationResponse ::builder );
113
115
Function <String , Optional <ExceptionMetadata >> exceptionMetadataMapper = errorCode -> {
114
116
if (errorCode == null ) {
115
117
return Optional .empty ();
116
118
}
117
119
switch (errorCode ) {
118
- case "InvalidInput" :
119
- return Optional .of (ExceptionMetadata .builder ().errorCode ("InvalidInput" ).httpStatusCode (400 )
120
- .exceptionBuilderSupplier (InvalidInputException ::builder ).build ());
121
- default :
122
- return Optional .empty ();
120
+ case "InvalidInput" :
121
+ return Optional .of (ExceptionMetadata .builder ().errorCode ("InvalidInput" ).httpStatusCode (400 )
122
+ .exceptionBuilderSupplier (InvalidInputException ::builder ).build ());
123
+ default :
124
+ return Optional .empty ();
123
125
}
124
126
};
125
127
HttpResponseHandler <AwsServiceException > errorResponseHandler = createErrorResponseHandler (protocolFactory ,
126
- operationMetadata , exceptionMetadataMapper );
128
+ operationMetadata , exceptionMetadataMapper );
127
129
String hostPrefix = "{StringMember}-foo." ;
128
130
HostnameValidator .validateHostnameCompliant (aPostOperationRequest .stringMember (), "StringMember" ,
129
- "aPostOperationRequest" );
131
+ "aPostOperationRequest" );
130
132
String resolvedHostExpression = String .format ("%s-foo." , aPostOperationRequest .stringMember ());
131
133
132
134
CompletableFuture <APostOperationResponse > executeFuture = clientHandler
133
- .execute (new ClientExecutionParams <APostOperationRequest , APostOperationResponse >()
134
- .withOperationName ("APostOperation" ).withProtocolMetadata (protocolMetadata )
135
- .withMarshaller (new APostOperationRequestMarshaller (protocolFactory ))
136
- .withResponseHandler (responseHandler ).withErrorResponseHandler (errorResponseHandler )
137
- .withRequestConfiguration (clientConfiguration ).withMetricCollector (apiCallMetricCollector )
138
- .hostPrefixExpression (resolvedHostExpression ).withInput (aPostOperationRequest ));
135
+ .execute (new ClientExecutionParams <APostOperationRequest , APostOperationResponse >()
136
+ .withOperationName ("APostOperation" ).withProtocolMetadata (protocolMetadata )
137
+ .withMarshaller (new APostOperationRequestMarshaller (protocolFactory ))
138
+ .withResponseHandler (responseHandler ).withErrorResponseHandler (errorResponseHandler )
139
+ .withRequestConfiguration (clientConfiguration ).withMetricCollector (apiCallMetricCollector )
140
+ .hostPrefixExpression (resolvedHostExpression ).withInput (aPostOperationRequest ));
139
141
CompletableFuture <APostOperationResponse > whenCompleted = executeFuture .whenComplete ((r , e ) -> {
140
142
metricPublishers .forEach (p -> p .publish (apiCallMetricCollector .collect ()));
141
143
});
@@ -159,12 +161,12 @@ public final String serviceName() {
159
161
160
162
private <T extends BaseAwsJsonProtocolFactory .Builder <T >> T init (T builder ) {
161
163
return builder .clientConfiguration (clientConfiguration )
162
- .defaultServiceExceptionSupplier (QueryToJsonCompatibleException ::builder ).protocol (AwsJsonProtocol .AWS_JSON )
163
- .protocolVersion ("1.1" ).hasAwsQueryCompatible (true );
164
+ .defaultServiceExceptionSupplier (QueryToJsonCompatibleException ::builder ).protocol (AwsJsonProtocol .AWS_JSON )
165
+ .protocolVersion ("1.1" ).hasAwsQueryCompatible (true );
164
166
}
165
167
166
168
private static List <MetricPublisher > resolveMetricPublishers (SdkClientConfiguration clientConfiguration ,
167
- RequestOverrideConfiguration requestOverrideConfiguration ) {
169
+ RequestOverrideConfiguration requestOverrideConfiguration ) {
168
170
List <MetricPublisher > publishers = null ;
169
171
if (requestOverrideConfiguration != null ) {
170
172
publishers = requestOverrideConfiguration .metricPublishers ();
@@ -208,7 +210,7 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request,
208
210
return configuration .build ();
209
211
}
210
212
QueryToJsonCompatibleServiceClientConfigurationBuilder serviceConfigBuilder = new QueryToJsonCompatibleServiceClientConfigurationBuilder (
211
- configuration );
213
+ configuration );
212
214
for (SdkPlugin plugin : plugins ) {
213
215
plugin .configureClient (serviceConfigBuilder );
214
216
}
@@ -217,7 +219,7 @@ private SdkClientConfiguration updateSdkClientConfiguration(SdkRequest request,
217
219
}
218
220
219
221
private HttpResponseHandler <AwsServiceException > createErrorResponseHandler (BaseAwsJsonProtocolFactory protocolFactory ,
220
- JsonOperationMetadata operationMetadata , Function <String , Optional <ExceptionMetadata >> exceptionMetadataMapper ) {
222
+ JsonOperationMetadata operationMetadata , Function <String , Optional <ExceptionMetadata >> exceptionMetadataMapper ) {
221
223
return protocolFactory .createErrorResponseHandler (operationMetadata , exceptionMetadataMapper );
222
224
}
223
225
0 commit comments