From 4fd2f1c951a9ddf40c5a09232bb266b63d333f0c Mon Sep 17 00:00:00 2001 From: Jianghao Lu Date: Thu, 22 Sep 2016 18:14:25 -0700 Subject: [PATCH] Fix error constructor call in mapper adapter --- .../java/com/microsoft/rest/ServiceResponseBuilder.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/runtimes/client-runtime/src/main/java/com/microsoft/rest/ServiceResponseBuilder.java b/runtimes/client-runtime/src/main/java/com/microsoft/rest/ServiceResponseBuilder.java index 34d11a14c17a..3e16e187eeaf 100644 --- a/runtimes/client-runtime/src/main/java/com/microsoft/rest/ServiceResponseBuilder.java +++ b/runtimes/client-runtime/src/main/java/com/microsoft/rest/ServiceResponseBuilder.java @@ -143,10 +143,11 @@ public ServiceResponse build(Response response) throws E, IOExc return new ServiceResponse<>((T) buildBody(statusCode, responseBody), response); } else { try { - Object errorBody = buildBody(statusCode, responseBody); - E exception = (E) exceptionType.getConstructor(String.class).newInstance(mapperAdapter.serialize(errorBody)); + String responseContent = responseBody.string(); + responseBody = ResponseBody.create(responseBody.contentType(), responseContent); + E exception = (E) exceptionType.getConstructor(String.class).newInstance(responseContent); exceptionType.getMethod("setResponse", response.getClass()).invoke(exception, response); - exceptionType.getMethod("setBody", (Class) responseTypes.get(0)).invoke(exception, errorBody); + exceptionType.getMethod("setBody", (Class) responseTypes.get(0)).invoke(exception, buildBody(statusCode, responseBody)); throw exception; } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { throw new IOException("Invalid status code " + statusCode + ", but an instance of " + exceptionType.getCanonicalName()