diff --git a/src/main/java/com/github/dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java b/src/main/java/com/github/dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java index 895e900cd..6c2476291 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java +++ b/src/main/java/com/github/dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java @@ -11,6 +11,9 @@ import org.apache.commons.io.IOUtils; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + import com.github.dockerjava.api.exception.BadRequestException; import com.github.dockerjava.api.exception.ConflictException; import com.github.dockerjava.api.exception.DockerException; @@ -55,7 +58,7 @@ public void filter(ClientRequestContext requestContext, ClientResponseContext re } } - private String getBodyAsMessage(ClientResponseContext responseContext) throws IOException { + private String getBodyAsMessage(ClientResponseContext responseContext) { if (responseContext.hasEntity()) { try (InputStream entityStream = responseContext.getEntityStream()) { Charset charset = null; @@ -73,7 +76,17 @@ private String getBodyAsMessage(ClientResponseContext responseContext) throws IO charset = Charset.defaultCharset(); } - return IOUtils.toString(entityStream, charset); + String message = IOUtils.toString(entityStream, charset); + + if (MediaType.APPLICATION_JSON_TYPE.equals(mediaType)) { + ObjectMapper mapper = new ObjectMapper(); + JsonNode node = mapper.readTree(entityStream).get("message"); + if (node != null) { + message = node.textValue(); + } + } + + return message; } catch (Exception ignored) { } } return null; diff --git a/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java b/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java index 1660773c3..5734163f9 100644 --- a/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java +++ b/src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java @@ -41,7 +41,7 @@ public void loadImageFromTar() throws Exception { dockerRule.getClient().loadImageCmd(uploadStream).exec(); } - //swarm needs some time to refelct new images + //swarm needs some time to reflect new images synchronized (this) { wait(5000); }