From 9e6bfdc28edc4d9e96edfa9d6f13e35d84e36693 Mon Sep 17 00:00:00 2001 From: yuxuanchi Date: Fri, 19 Sep 2014 10:27:38 +0800 Subject: [PATCH 1/3] Remove unused code --- .../dockerjava/core/DockerClientImpl.java | 1 - .../dockerjava/core/command/AbstrDockerCmd.java | 17 ++--------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/github/dockerjava/core/DockerClientImpl.java b/src/main/java/com/github/dockerjava/core/DockerClientImpl.java index 1f4590b96..baa5b5da5 100644 --- a/src/main/java/com/github/dockerjava/core/DockerClientImpl.java +++ b/src/main/java/com/github/dockerjava/core/DockerClientImpl.java @@ -11,7 +11,6 @@ import com.github.dockerjava.api.command.*; import com.github.dockerjava.api.model.AuthConfig; import com.github.dockerjava.core.command.*; -import com.github.dockerjava.jaxrs.DockerCmdExecFactoryImpl; import com.google.common.base.Preconditions; /** diff --git a/src/main/java/com/github/dockerjava/core/command/AbstrDockerCmd.java b/src/main/java/com/github/dockerjava/core/command/AbstrDockerCmd.java index f4d5f8cca..00c89159e 100644 --- a/src/main/java/com/github/dockerjava/core/command/AbstrDockerCmd.java +++ b/src/main/java/com/github/dockerjava/core/command/AbstrDockerCmd.java @@ -3,20 +3,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.github.dockerjava.api.BadRequestException; -import com.github.dockerjava.api.ConflictException; import com.github.dockerjava.api.DockerException; -import com.github.dockerjava.api.InternalServerErrorException; -import com.github.dockerjava.api.NotAcceptableException; -import com.github.dockerjava.api.NotFoundException; -import com.github.dockerjava.api.NotModifiedException; import com.github.dockerjava.api.command.DockerCmd; import com.github.dockerjava.api.command.DockerCmdExec; - import com.google.common.base.Preconditions; -import javax.ws.rs.ClientErrorException; - public abstract class AbstrDockerCmd, RES_T> implements DockerCmd { private final static Logger LOGGER = LoggerFactory.getLogger(AbstrDockerCmd.class); @@ -28,14 +19,10 @@ public AbstrDockerCmd(DockerCmdExec execution) { this.execution = execution; } - @Override + @Override + @SuppressWarnings("unchecked") public RES_T exec() throws DockerException { LOGGER.debug("Cmd: {}", this); return execution.exec((CMD_T)this); } - - protected DockerException toDockerException(ClientErrorException exception) { - LOGGER.info("toDockerException"); - return new DockerException(exception.getMessage(), exception.getResponse().getStatus(), exception); - } } \ No newline at end of file From 833dc2f47d772c3917d1ede575e5718dfa44f13d Mon Sep 17 00:00:00 2001 From: yuxuanchi Date: Fri, 19 Sep 2014 10:37:06 +0800 Subject: [PATCH 2/3] Clear code style --- .../com/github/dockerjava/jaxrs/InspectContainerCmdExec.java | 2 +- .../dockerjava/jaxrs/util/ResponseStatusExceptionFilter.java | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/github/dockerjava/jaxrs/InspectContainerCmdExec.java b/src/main/java/com/github/dockerjava/jaxrs/InspectContainerCmdExec.java index 1cacd1e88..664a67c59 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/InspectContainerCmdExec.java +++ b/src/main/java/com/github/dockerjava/jaxrs/InspectContainerCmdExec.java @@ -21,7 +21,7 @@ public InspectContainerCmdExec(WebTarget baseResource) { @Override protected InspectContainerResponse execute(InspectContainerCmd command) { - WebTarget webResource = getBaseResource().path(String.format("/containers/%s/json", command.getContainerId())); + WebTarget webResource = getBaseResource().path("/containers/{id}/json").resolveTemplate("id", command.getContainerId()); LOGGER.debug("GET: {}", webResource); return webResource.request().accept(MediaType.APPLICATION_JSON).get(InspectContainerResponse.class); diff --git a/src/main/java/com/github/dockerjava/jaxrs/util/ResponseStatusExceptionFilter.java b/src/main/java/com/github/dockerjava/jaxrs/util/ResponseStatusExceptionFilter.java index 2ce5dda9d..4ce67f9db 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/util/ResponseStatusExceptionFilter.java +++ b/src/main/java/com/github/dockerjava/jaxrs/util/ResponseStatusExceptionFilter.java @@ -46,10 +46,8 @@ public void filter(ClientRequestContext requestContext, ClientResponseContext re throw new NotAcceptableException(getBodyAsMessage(responseContext)); case 409: throw new ConflictException(getBodyAsMessage(responseContext)); - case 500: { - + case 500: throw new InternalServerErrorException(getBodyAsMessage(responseContext)); - } default: throw new DockerException(getBodyAsMessage(responseContext), status); } From 04c528eed90317f7db29f6964f2b176e1e8ea07c Mon Sep 17 00:00:00 2001 From: yuxuanchi Date: Fri, 19 Sep 2014 11:02:20 +0800 Subject: [PATCH 3/3] Fixed ResponseStatusExceptionFilter.getBodyAsMessage() incorrect reading entity --- .../util/ResponseStatusExceptionFilter.java | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/github/dockerjava/jaxrs/util/ResponseStatusExceptionFilter.java b/src/main/java/com/github/dockerjava/jaxrs/util/ResponseStatusExceptionFilter.java index 4ce67f9db..61d97f93b 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/util/ResponseStatusExceptionFilter.java +++ b/src/main/java/com/github/dockerjava/jaxrs/util/ResponseStatusExceptionFilter.java @@ -1,10 +1,13 @@ package com.github.dockerjava.jaxrs.util; +import java.io.EOFException; import java.io.IOException; +import java.nio.charset.Charset; import javax.ws.rs.client.ClientRequestContext; import javax.ws.rs.client.ClientResponseContext; import javax.ws.rs.client.ClientResponseFilter; +import javax.ws.rs.core.MediaType; import org.apache.commons.io.IOUtils; @@ -55,9 +58,36 @@ public void filter(ClientRequestContext requestContext, ClientResponseContext re public String getBodyAsMessage(ClientResponseContext responseContext) throws IOException { - byte[] buffer = new byte[1000]; - IOUtils.read(responseContext.getEntityStream(), buffer); - String message = new String(buffer); - return message; + if (responseContext.hasEntity()) { + int contentLength = responseContext.getLength(); + if (contentLength != -1) { + byte[] buffer = new byte[contentLength]; + try { + IOUtils.readFully(responseContext.getEntityStream(), buffer); + } + catch (EOFException e) { + return null; + } + Charset charset = null; + MediaType mediaType = responseContext.getMediaType(); + if (mediaType != null) { + String charsetName = mediaType.getParameters().get("charset"); + if (charsetName != null) { + try { + charset = Charset.forName(charsetName); + } + catch (Exception e) { + //Do noting... + } + } + } + if (charset == null) { + charset = Charset.defaultCharset(); + } + String message = new String(buffer, charset); + return message; + } + } + return null; } }