Skip to content

Commit 5ffef1e

Browse files
committed
Address review comments
1 parent dc7f88b commit 5ffef1e

File tree

3 files changed

+26
-24
lines changed

3 files changed

+26
-24
lines changed

core/protocols/aws-ion-protocol/pom.xml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@
2626
<artifactId>aws-json-protocol</artifactId>
2727
<version>${awsjavasdk.version}</version>
2828
</dependency>
29-
<dependency>
30-
<groupId>software.amazon.awssdk</groupId>
31-
<artifactId>protocol-core</artifactId>
32-
<version>${awsjavasdk.version}</version>
33-
</dependency>
3429
<dependency>
3530
<groupId>software.amazon.awssdk</groupId>
3631
<artifactId>sdk-core</artifactId>
@@ -79,6 +74,12 @@
7974
<artifactId>mockito-core</artifactId>
8075
<scope>test</scope>
8176
</dependency>
77+
<dependency>
78+
<groupId>software.amazon.awssdk</groupId>
79+
<artifactId>protocol-core</artifactId>
80+
<version>${awsjavasdk.version}</version>
81+
<scope>test</scope>
82+
</dependency>
8283
</dependencies>
8384

8485
<build>

core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/BaseAwsJsonProtocolFactory.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ protected BaseAwsJsonProtocolFactory(Builder<?> builder) {
7474
* @return HttpResponseHandler that will handle the HTTP response and unmarshall into a POJO.
7575
*/
7676
public final <T extends SdkPojo> HttpResponseHandler<T> createResponseHandler(JsonOperationMetadata operationMetadata,
77-
Supplier<SdkPojo> pojoSupplier) {
77+
Supplier<SdkPojo> pojoSupplier) {
7878
return createResponseHandler(operationMetadata, r -> pojoSupplier.get());
7979
}
8080

@@ -88,8 +88,9 @@ public final <T extends SdkPojo> HttpResponseHandler<T> createResponseHandler(Js
8888
* @param <T> Type being unmarshalled.
8989
* @return HttpResponseHandler that will handle the HTTP response and unmarshall into a POJO.
9090
*/
91-
public final <T extends SdkPojo> HttpResponseHandler<T> createResponseHandler(JsonOperationMetadata operationMetadata,
92-
Function<SdkHttpFullResponse, SdkPojo> pojoSupplier) {
91+
public final <T extends SdkPojo> HttpResponseHandler<T> createResponseHandler(
92+
JsonOperationMetadata operationMetadata,
93+
Function<SdkHttpFullResponse, SdkPojo> pojoSupplier) {
9394
JsonProtocolUnmarshaller unmarshaller = createJsonProtocolUnmarshaller();
9495
return new AwsJsonResponseHandler<>(
9596
new JsonResponseHandler<>(unmarshaller,
@@ -248,4 +249,4 @@ private SubclassT getSubclass() {
248249
}
249250

250251
}
251-
}
252+
}

core/protocols/aws-json-protocol/src/main/java/software/amazon/awssdk/protocols/json/internal/unmarshall/AwsJsonProtocolErrorUnmarshaller.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.fasterxml.jackson.core.JsonFactory;
1919
import java.util.List;
2020
import java.util.Map;
21+
import java.util.Optional;
2122
import java.util.function.Supplier;
2223
import software.amazon.awssdk.annotations.SdkInternalApi;
2324
import software.amazon.awssdk.awscore.exception.AwsErrorDetails;
@@ -49,11 +50,11 @@ public final class AwsJsonProtocolErrorUnmarshaller implements HttpResponseHandl
4950

5051
private AwsJsonProtocolErrorUnmarshaller(Builder builder) {
5152
this.jsonProtocolUnmarshaller = builder.jsonProtocolUnmarshaller;
52-
this.exceptions = builder.exceptions;
5353
this.errorCodeParser = builder.errorCodeParser;
5454
this.errorMessageParser = builder.errorMessageParser;
5555
this.jsonFactory = builder.jsonFactory;
5656
this.defaultExceptionSupplier = builder.defaultExceptionSupplier;
57+
this.exceptions = builder.exceptions;
5758
}
5859

5960
@Override
@@ -64,12 +65,14 @@ public AwsServiceException handle(SdkHttpFullResponse response, ExecutionAttribu
6465
private AwsServiceException unmarshall(SdkHttpFullResponse response, ExecutionAttributes executionAttributes) {
6566
JsonContent jsonContent = JsonContent.createJsonContent(response, jsonFactory);
6667
String errorCode = errorCodeParser.parseErrorCode(response, jsonContent);
67-
SdkPojo sdkPojo = exceptions.stream()
68-
.filter(e -> e.errorCode().equals(errorCode))
69-
.map(ExceptionMetadata::exceptionBuilderSupplier)
70-
.findAny()
71-
.orElse(defaultExceptionSupplier)
72-
.get();
68+
69+
Optional<ExceptionMetadata> modeledExceptionMetadata = exceptions.stream()
70+
.filter(e -> e.errorCode().equals(errorCode))
71+
.findAny();
72+
73+
SdkPojo sdkPojo = modeledExceptionMetadata.map(ExceptionMetadata::exceptionBuilderSupplier)
74+
.orElse(defaultExceptionSupplier)
75+
.get();
7376

7477
AwsServiceException.Builder exception = ((AwsServiceException) jsonProtocolUnmarshaller
7578
.unmarshall(sdkPojo, response, jsonContent.getJsonNode())).toBuilder();
@@ -78,22 +81,19 @@ private AwsServiceException unmarshall(SdkHttpFullResponse response, ExecutionAt
7881
errorCode, errorMessage));
7982
// Status code and request id are sdk level fields
8083
exception.message(errorMessage);
81-
exception.statusCode(statusCode(response, errorCode));
84+
exception.statusCode(statusCode(response, modeledExceptionMetadata));
8285
exception.requestId(getRequestIdFromHeaders(response.headers()));
8386
return exception.build();
8487
}
8588

86-
private int statusCode(SdkHttpFullResponse response, String errorCode) {
89+
private int statusCode(SdkHttpFullResponse response, Optional<ExceptionMetadata> modeledExceptionMetadata) {
8790
if (response.statusCode() != 0) {
8891
return response.statusCode();
8992
}
9093

91-
return exceptions.stream()
92-
.filter(e -> e.errorCode().equals(errorCode))
93-
.filter(e -> e.httpStatusCode() != null)
94-
.map(ExceptionMetadata::httpStatusCode)
95-
.findAny()
96-
.orElse(500);
94+
return modeledExceptionMetadata.filter(m -> m.httpStatusCode() != null)
95+
.map(ExceptionMetadata::httpStatusCode)
96+
.orElse(500);
9797
}
9898

9999
/**

0 commit comments

Comments
 (0)