1
0
mirror of https://github.com/apache/olingo-odata4.git synced 2025-02-18 16:08:29 +00:00

[OLINGO-1190]To get the exact exception reason from odata service, instead of getting a generic message.

This commit is contained in:
Archana Rai 2017-10-12 17:00:46 +05:30
parent 48263a8ce3
commit ac02329d1f
2 changed files with 13 additions and 2 deletions
lib/client-core/src
main/java/org/apache/olingo/client/core/communication/header
test/java/org/apache/olingo/client/core

@ -19,6 +19,7 @@
package org.apache.olingo.client.core.communication.header; package org.apache.olingo.client.core.communication.header;
import java.io.InputStream; import java.io.InputStream;
import java.util.Map;
import org.apache.http.StatusLine; import org.apache.http.StatusLine;
import org.apache.olingo.client.api.ODataClient; import org.apache.olingo.client.api.ODataClient;
@ -57,6 +58,16 @@ public final class ODataErrorResponseChecker {
ODataError error; ODataError error;
try { try {
error = odataClient.getReader().readError(entity, contentType); 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) { } catch (final RuntimeException e) {
LOG.warn("Error deserializing error response", e); LOG.warn("Error deserializing error response", e);
error = getGenericError( error = getGenericError(

@ -92,7 +92,7 @@ public class ErrorTest extends AbstractTest {
checkResponse(odataClient, statusLine, entity, "Json"); checkResponse(odataClient, statusLine, entity, "Json");
assertTrue(exp.getMessage().contains("(500) Internal Server Error")); assertTrue(exp.getMessage().contains("(500) Internal Server Error"));
ODataError error = exp.getODataError(); ODataError error = exp.getODataError();
assertEquals("Internal Server Error", error.getMessage()); assertTrue(error.getMessage().startsWith("Internal Server Error"));
assertEquals(500, Integer.parseInt(error.getCode())); assertEquals(500, Integer.parseInt(error.getCode()));
assertEquals(2, error.getInnerError().size()); assertEquals(2, error.getInnerError().size());
assertEquals("\"Method does not support entities of specific type\"", error.getInnerError().get("message")); 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. ODataServerErrorException exp = (ODataServerErrorException) ODataErrorResponseChecker.
checkResponse(odataClient, statusLine, entity, "Json"); checkResponse(odataClient, statusLine, entity, "Json");
assertEquals("Internal Server Error", exp.getMessage()); assertTrue(exp.getMessage().startsWith("Internal Server Error"));
} }
} }