De-uglified some twisted optional use.
diff --git a/src/main/java/io/mifos/core/api/util/AnnotatedErrorDecoder.java b/src/main/java/io/mifos/core/api/util/AnnotatedErrorDecoder.java
index 192ad8c..367b741 100644
--- a/src/main/java/io/mifos/core/api/util/AnnotatedErrorDecoder.java
+++ b/src/main/java/io/mifos/core/api/util/AnnotatedErrorDecoder.java
@@ -50,16 +50,16 @@
public Exception decode(
final String methodKey,
final Response response) {
- final Optional<Optional<Optional<Exception>>> ret =
+ final Optional<Exception> ret =
Arrays.stream(feignClientClass.getMethods())
.filter(method -> Feign.configKey(feignClientClass, method).equals(methodKey))
.map(method -> {
final Optional<ThrowsException> annotation = getMatchingAnnotation(response, method);
- return annotation.map(a -> constructException(response, a));
+ return annotation.flatMap(a -> constructException(response, a));
})
- .findAny();
+ .findAny().flatMap(x -> x);
- return unwrapEmbeddedOptional(ret, getAlternative(methodKey, response));
+ return ret.orElse(getAlternative(methodKey, response));
}
private RuntimeException getAlternative(final String methodKey, final Response response) {
@@ -115,12 +115,6 @@
return throwsExceptionAnnotation.status().value() == response.status();
}
- @SuppressWarnings("OptionalUsedAsFieldOrParameterType")
- private <T> T unwrapEmbeddedOptional(
- final Optional<Optional<Optional<T>>> embeddedOptional, T alternative) {
- return embeddedOptional.orElse(Optional.empty()).orElse(Optional.empty()).orElse(alternative);
- }
-
private Optional<Exception> constructException(
final Response response,
final ThrowsException throwsExceptionAnnotations) {