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"));
   }
 }

Reply via email to