Repository: olingo-odata4 Updated Branches: refs/heads/master 48263a8ce -> ac02329d1
[OLINGO-1190]To get the exact exception reason from odata service, instead of getting a generic message. Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/ac02329d Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/ac02329d Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/ac02329d Branch: refs/heads/master Commit: ac02329d1f680a069c9c09d06fb5d432ca8574ef Parents: 48263a8 Author: Archana Rai <[email protected]> Authored: Thu Oct 12 17:00:46 2017 +0530 Committer: Archana Rai <[email protected]> Committed: Thu Oct 12 17:00:46 2017 +0530 ---------------------------------------------------------------------- .../communication/header/ODataErrorResponseChecker.java | 11 +++++++++++ .../java/org/apache/olingo/client/core/ErrorTest.java | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ac02329d/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java index 274da3a..2884acc 100644 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/header/ODataErrorResponseChecker.java @@ -19,6 +19,7 @@ package org.apache.olingo.client.core.communication.header; import java.io.InputStream; +import java.util.Map; import org.apache.http.StatusLine; import org.apache.olingo.client.api.ODataClient; @@ -57,6 +58,16 @@ public final class ODataErrorResponseChecker { ODataError error; try { error = odataClient.getReader().readError(entity, contentType); + if (error != null) { + Map<String, String> innerError = error.getInnerError(); + if (innerError != null) { + if (innerError.get("internalexception") != null) { + error.setMessage(error.getMessage() + innerError.get("internalexception")); + } else { + error.setMessage(error.getMessage() + innerError.get("message")); + } + } + } } catch (final RuntimeException e) { LOG.warn("Error deserializing error response", e); error = getGenericError( http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ac02329d/lib/client-core/src/test/java/org/apache/olingo/client/core/ErrorTest.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/ErrorTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/ErrorTest.java index 4446e92..f2e9af7 100644 --- a/lib/client-core/src/test/java/org/apache/olingo/client/core/ErrorTest.java +++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/ErrorTest.java @@ -92,7 +92,7 @@ public class ErrorTest extends AbstractTest { checkResponse(odataClient, statusLine, entity, "Json"); assertTrue(exp.getMessage().contains("(500) Internal Server Error")); ODataError error = exp.getODataError(); - assertEquals("Internal Server Error", error.getMessage()); + assertTrue(error.getMessage().startsWith("Internal Server Error")); assertEquals(500, Integer.parseInt(error.getCode())); assertEquals(2, error.getInnerError().size()); assertEquals("\"Method does not support entities of specific type\"", error.getInnerError().get("message")); @@ -111,6 +111,6 @@ public class ErrorTest extends AbstractTest { ODataServerErrorException exp = (ODataServerErrorException) ODataErrorResponseChecker. checkResponse(odataClient, statusLine, entity, "Json"); - assertEquals("Internal Server Error", exp.getMessage()); + assertTrue(exp.getMessage().startsWith("Internal Server Error")); } }
