From 4b3d908915803f2a12bd9809a2ec1b2896a07e61 Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Wed, 20 Mar 2019 15:09:24 +0100 Subject: [PATCH 1/3] ResponseStatusExceptionFilter: Remove a "throws" declaration IOException is never thrown in getBodyAsMessage(). --- .../dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..00eb953f8 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java +++ b/src/main/java/com/github/dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java @@ -55,7 +55,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; From 32b4db656a428fa6cd1f5b64e124954e9d187130 Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Wed, 20 Mar 2019 15:10:55 +0100 Subject: [PATCH 2/3] ResponseStatusExceptionFilter: Unwrap a JSON message For JSON messages like {"message":"Cannot locate specified Dockerfile: /path/to/Dockerfile"} unwrap the message to make the exception message read nicer. --- .../filter/ResponseStatusExceptionFilter.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 00eb953f8..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; @@ -73,7 +76,17 @@ private String getBodyAsMessage(ClientResponseContext responseContext) { 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; From 2769032dc4626b5e8f7c0843655108c767e05126 Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Wed, 20 Mar 2019 19:18:36 +0100 Subject: [PATCH 3/3] LoadImageCmdIT: Trivially fix a typo in a comment --- src/test/java/com/github/dockerjava/cmd/LoadImageCmdIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); }