diff --git a/pom.xml b/pom.xml
index 4d1689804..3bb280f25 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,13 +50,14 @@
1.6.1
- 1.18
+ 2.11
1.9
2.3.3
4.2.5
1.5
+ 1.8
2.3
2.6
1.7.5
@@ -87,38 +88,21 @@
${jackson-jaxrs.version}
- com.sun.jersey
- jersey-core
- ${jersey.version}
-
-
- com.sun.jersey
- jersey-client
+ org.glassfish.jersey.connectors
+ jersey-jetty-connector
${jersey.version}
-
- com.sun.jersey.contribs
- jersey-multipart
- ${jersey.version}
-
-
- com.sun.jersey.contribs
- jersey-apache-client4
- ${jersey-apache-client4.version}
-
-
-
- org.apache.httpcomponents
- httpclient
- ${httpclient.version}
-
-
org.apache.commons
commons-compress
${commons-compress.version}
+
+ commons-codec
+ commons-codec
+ ${commons-codec.version}
+
commons-lang
commons-lang
diff --git a/src/main/java/com/github/dockerjava/client/DockerClient.java b/src/main/java/com/github/dockerjava/client/DockerClient.java
index f938edcef..7dee0cb4a 100644
--- a/src/main/java/com/github/dockerjava/client/DockerClient.java
+++ b/src/main/java/com/github/dockerjava/client/DockerClient.java
@@ -1,32 +1,21 @@
package com.github.dockerjava.client;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.commons.io.IOUtils.closeQuietly;
-
-import java.io.*;
-
+import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import com.github.dockerjava.client.command.*;
-
+import com.github.dockerjava.client.model.AuthConfig;
+import com.github.dockerjava.client.utils.JsonClientFilter;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.LineIterator;
-import org.apache.http.client.HttpClient;
-import org.apache.http.conn.scheme.PlainSocketFactory;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.conn.ssl.SSLSocketFactory;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.impl.conn.PoolingClientConnectionManager;
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.client.ClientProperties;
-import com.github.dockerjava.client.model.AuthConfig;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
+import java.io.*;
-import com.github.dockerjava.client.utils.JsonClientFilter;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.client.apache4.ApacheHttpClient4;
-import com.sun.jersey.client.apache4.ApacheHttpClient4Handler;
+import static com.google.common.base.Preconditions.checkNotNull;
/**
* @author Konstantin Pelykh (kpelykh@gmail.com)
@@ -36,7 +25,7 @@ public class DockerClient implements Closeable {
private final Client client;
private final CommandFactory cmdFactory;
- private final WebResource baseResource;
+ private final WebTarget baseResource;
private final DockerClientConfig dockerClientConfig;
public DockerClient() {
@@ -61,43 +50,27 @@ public DockerClient(DockerClientConfig dockerClientConfig, CommandFactory cmdFac
this.cmdFactory = cmdFactory;
this.dockerClientConfig = dockerClientConfig;
- HttpClient httpClient = getPoolingHttpClient(dockerClientConfig);
- ClientConfig clientConfig = new DefaultClientConfig();
- client = new ApacheHttpClient4(new ApacheHttpClient4Handler(httpClient,
- null, false), clientConfig);
-
- if(dockerClientConfig.getReadTimeout() != null) {
- client.setReadTimeout(dockerClientConfig.getReadTimeout());
- }
-
- client.addFilter(new JsonClientFilter());
+ ClientConfig clientConfig = new ClientConfig();
- if (dockerClientConfig.isLoggingFilterEnabled())
- client.addFilter(new SelectiveLoggingFilter());
+ if (dockerClientConfig.getReadTimeout() != null) {
+ clientConfig.property(ClientProperties.READ_TIMEOUT, dockerClientConfig.getReadTimeout());
+ }
- WebResource webResource = client.resource(dockerClientConfig.getUri());
-
- if(dockerClientConfig.getVersion() != null) {
- baseResource = webResource.path("v" + dockerClientConfig.getVersion());
- } else {
- baseResource = webResource;
- }
- }
+ clientConfig.register(JsonClientFilter.class);
+ clientConfig.register(JacksonJsonProvider.class);
- private HttpClient getPoolingHttpClient(DockerClientConfig dockerClientConfig) {
- SchemeRegistry schemeRegistry = new SchemeRegistry();
- schemeRegistry.register(new Scheme("http", dockerClientConfig.getUri().getPort(),
- PlainSocketFactory.getSocketFactory()));
- schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory
- .getSocketFactory()));
+ if (dockerClientConfig.isLoggingFilterEnabled()) {
+ clientConfig.register(SelectiveLoggingFilter.class);
+ }
- PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry);
- // Increase max total connection
- cm.setMaxTotal(1000);
- // Increase default max connection per route
- cm.setDefaultMaxPerRoute(1000);
+ client = ClientBuilder.newBuilder().withConfig(clientConfig).build();
+ WebTarget webResource = client.target(dockerClientConfig.getUri());
- return new DefaultHttpClient(cm);
+ if (dockerClientConfig.getVersion() != null) {
+ baseResource = webResource.path("v" + dockerClientConfig.getVersion());
+ } else {
+ baseResource = webResource;
+ }
}
public RES_T execute(AbstrDockerCmd, RES_T> command)
@@ -105,7 +78,7 @@ public RES_T execute(AbstrDockerCmd, RES_T> command)
return command.withBaseResource(baseResource).exec();
}
- public AuthConfig authConfig() throws DockerException {
+ public AuthConfig authConfig() throws DockerException {
checkNotNull(dockerClientConfig.getUsername(), "Configured username is null.");
checkNotNull(dockerClientConfig.getPassword(), "Configured password is null.");
checkNotNull(dockerClientConfig.getEmail(), "Configured email is null.");
@@ -263,28 +236,29 @@ public TagImageCmd tagImageCmd(String imageId, String repository, String tag) {
}
// TODO This is only being used by the test code for logging. Is it really necessary?
- /**
- * @return The output slurped into a string.
- */
- public static String asString(ClientResponse response) throws IOException {
-
- StringWriter out = new StringWriter();
- try {
- LineIterator itr = IOUtils.lineIterator(
- response.getEntityInputStream(), "UTF-8");
- while (itr.hasNext()) {
- String line = itr.next();
- out.write(line + (itr.hasNext() ? "\n" : ""));
- }
- } finally {
- closeQuietly(response.getEntityInputStream());
- }
- return out.toString();
- }
+
+ /**
+ * @return The output slurped into a string.
+ */
+ public static String asString(Response response) throws IOException {
+
+ StringWriter out = new StringWriter();
+ InputStream is = response.readEntity(InputStream.class);
+ try {
+ LineIterator itr = IOUtils.lineIterator(is, "UTF-8");
+ while (itr.hasNext()) {
+ String line = itr.next();
+ out.write(line + (itr.hasNext() ? "\n" : ""));
+ }
+ } finally {
+ IOUtils.closeQuietly(is);
+ }
+ return out.toString();
+ }
@Override
public void close() throws IOException {
- client.destroy();
+ client.close();
}
}
diff --git a/src/main/java/com/github/dockerjava/client/SelectiveLoggingFilter.java b/src/main/java/com/github/dockerjava/client/SelectiveLoggingFilter.java
index fbdbfc7a2..b0f69ebb0 100644
--- a/src/main/java/com/github/dockerjava/client/SelectiveLoggingFilter.java
+++ b/src/main/java/com/github/dockerjava/client/SelectiveLoggingFilter.java
@@ -1,15 +1,15 @@
package com.github.dockerjava.client;
+import java.io.IOException;
import java.util.Set;
+import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import com.google.common.collect.ImmutableSet;
-import com.sun.jersey.api.client.ClientHandlerException;
-import com.sun.jersey.api.client.ClientRequest;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.filter.LoggingFilter;
+
+import org.glassfish.jersey.filter.LoggingFilter;
/**
* A version of the logging filter that will avoid trying to log entities which can cause
@@ -26,22 +26,13 @@ public class SelectiveLoggingFilter extends LoggingFilter {
.build();
@Override
- public ClientResponse handle(ClientRequest request) throws ClientHandlerException {
+ public void filter(ClientRequestContext context) throws IOException {
// Unless the content type is in the list of those we want to ellide, then just have
// our super-class handle things.
- Object contentType = request.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE);
- if (contentType != null && SKIPPED_CONTENT.contains(contentType.toString())) {
- // Skip logging this.
- //
- // N.B. -- I'd actually love to reproduce (or better yet just use) the logging code from
- // our super-class. However, everything is private (so we can't use it) and the code
- // is under a modified GPL which means we can't pull it into an ASL project. Right now
- // I don't have the energy to do a clean implementation.
- return getNext().handle(request);
+ Object contentType = context.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE);
+ if (contentType == null || !SKIPPED_CONTENT.contains(contentType.toString())) {
+ super.filter(context);
}
-
- // Do what we normally would
- return super.handle(request);
}
}
diff --git a/src/main/java/com/github/dockerjava/client/command/AbstrAuthCfgDockerCmd.java b/src/main/java/com/github/dockerjava/client/command/AbstrAuthCfgDockerCmd.java
index 425df6156..37a3ffd1d 100644
--- a/src/main/java/com/github/dockerjava/client/command/AbstrAuthCfgDockerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/AbstrAuthCfgDockerCmd.java
@@ -2,12 +2,11 @@
import java.io.IOException;
-import org.apache.commons.codec.binary.Base64;
-
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.model.AuthConfig;
import com.google.common.base.Preconditions;
+import org.apache.commons.codec.binary.Base64;
public abstract class AbstrAuthCfgDockerCmd, RES_T> extends
AbstrDockerCmd {
diff --git a/src/main/java/com/github/dockerjava/client/command/AbstrDockerCmd.java b/src/main/java/com/github/dockerjava/client/command/AbstrDockerCmd.java
index e5e2f2be0..48ed9a5e0 100644
--- a/src/main/java/com/github/dockerjava/client/command/AbstrDockerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/AbstrDockerCmd.java
@@ -4,16 +4,17 @@
import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.WebResource;
+
+import javax.ws.rs.client.WebTarget;
public abstract class AbstrDockerCmd, RES_T> implements DockerCmd {
private final static Logger LOGGER = LoggerFactory.getLogger(AbstrDockerCmd.class);
- protected WebResource baseResource;
+ protected WebTarget baseResource;
@SuppressWarnings("unchecked")
- public T withBaseResource(WebResource baseResource) {
+ public T withBaseResource(WebTarget baseResource) {
this.baseResource = baseResource;
return (T)this;
}
diff --git a/src/main/java/com/github/dockerjava/client/command/AttachContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/AttachContainerCmd.java
index 84b54c36c..1a4249510 100644
--- a/src/main/java/com/github/dockerjava/client/command/AttachContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/AttachContainerCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
@@ -9,10 +10,10 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.NotFoundException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
+
+import static javax.ws.rs.client.Entity.entity;
/**
* Attach to container
@@ -29,7 +30,7 @@
* - true or false, if true, print timestamps for every log line.
* Defaults to false.
*/
-public class AttachContainerCmd extends AbstrDockerCmd {
+public class AttachContainerCmd extends AbstrDockerCmd {
private static final Logger LOGGER = LoggerFactory
.getLogger(AttachContainerCmd.class);
@@ -109,23 +110,20 @@ public AttachContainerCmd withLogs(boolean logs) {
return this;
}
- protected ClientResponse impl() throws DockerException {
- MultivaluedMap params = new MultivaluedMapImpl();
- params.add("logs", logs ? "1" : "0");
- params.add("timestamps", timestamps ? "1" : "0");
- params.add("stdout", stdout ? "1" : "0");
- params.add("stderr", stderr ? "1" : "0");
- params.add("follow", followStream ? "1" : "0");
-
- WebResource webResource = baseResource.path(
- String.format("/containers/%s/attach", containerId))
- .queryParams(params);
+ protected Response impl() throws DockerException {
+ WebTarget webResource = baseResource.path("/containers/{id}/attach")
+ .resolveTemplate("{id}", containerId)
+ .queryParam("logs", logs ? "1" : "0")
+ .queryParam("timestamps", timestamps ? "1" : "0")
+ .queryParam("stdout", stdout ? "1" : "0")
+ .queryParam("stderr", stderr ? "1" : "0")
+ .queryParam("follow", followStream ? "1" : "0");
try {
LOGGER.trace("POST: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_OCTET_STREAM_TYPE)
- .post(ClientResponse.class);
- } catch (UniformInterfaceException exception) {
+ return webResource.request().accept(MediaType.APPLICATION_OCTET_STREAM_TYPE)
+ .post(entity(null, MediaType.APPLICATION_JSON), Response.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 400) {
throw new DockerException("bad parameter");
} else if (exception.getResponse().getStatus() == 404) {
diff --git a/src/main/java/com/github/dockerjava/client/command/AuthCmd.java b/src/main/java/com/github/dockerjava/client/command/AuthCmd.java
index 85f681033..7333bf2d7 100644
--- a/src/main/java/com/github/dockerjava/client/command/AuthCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/AuthCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -7,8 +8,9 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.model.AuthConfig;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
+
+import static javax.ws.rs.client.Entity.entity;
/**
*
@@ -25,12 +27,11 @@ public AuthCmd(AuthConfig authConfig) {
protected Void impl() throws DockerException {
try {
- WebResource webResource = baseResource.path("/auth");
+ WebTarget webResource = baseResource.path("/auth");
LOGGER.trace("POST: {}", webResource);
- webResource.header("Content-Type", MediaType.APPLICATION_JSON)
- .accept(MediaType.APPLICATION_JSON).post(authConfig);
+ webResource.request().accept(MediaType.APPLICATION_JSON).post(entity(authConfig, MediaType.APPLICATION_JSON));
return null;
- } catch (UniformInterfaceException e) {
+ } catch (ClientErrorException e) {
throw new DockerException(e);
}
}
diff --git a/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java b/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java
index 34de8a8b7..65b6227c7 100644
--- a/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/BuildImgCmd.java
@@ -13,6 +13,7 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
@@ -23,10 +24,10 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.utils.CompressArchiveUtil;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
+
+import static javax.ws.rs.client.Entity.entity;
/**
*
@@ -35,7 +36,7 @@
* TODO: http://docs.docker.com/reference/builder/#dockerignore
*
*/
-public class BuildImgCmd extends AbstrDockerCmd {
+public class BuildImgCmd extends AbstrDockerCmd {
private static final Logger LOGGER = LoggerFactory.getLogger(BuildImgCmd.class);
@@ -117,7 +118,7 @@ public String toString() {
.toString();
}
- protected ClientResponse impl() {
+ protected Response impl() {
if (tarInputStream == null) {
File dockerFolderTar = buildDockerFolderTar();
try {
@@ -132,28 +133,27 @@ protected ClientResponse impl() {
}
}
- protected ClientResponse callDocker(final InputStream dockerFolderTarInputStream) {
- MultivaluedMap params = new MultivaluedMapImpl();
- params.add("t", tag);
- if (noCache) {
- params.add("nocache", "true");
- }
- if (remove) {
- params.add("rm", "true");
- }
+ protected Response callDocker(final InputStream dockerFolderTarInputStream) {
+
+ WebTarget webResource = baseResource.path("/build")
+ .queryParam("t", tag);
+ if (noCache) {
+ webResource = webResource.queryParam("nocache", "true");
+ }
+ if (remove) {
+ webResource = webResource.queryParam("rm", "true");
+ }
if (quiet) {
- params.add("q", "true");
+ webResource = webResource.queryParam("q", "true");
}
- WebResource webResource = baseResource.path("/build").queryParams(params);
-
try {
LOGGER.trace("POST: {}", webResource);
return webResource
- .type("application/tar")
+ .request()
.accept(MediaType.TEXT_PLAIN)
- .post(ClientResponse.class, dockerFolderTarInputStream);
- } catch (UniformInterfaceException exception) {
+ .post(entity(dockerFolderTarInputStream, "application/tar"), Response.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 500) {
throw new DockerException("Server error", exception);
} else {
diff --git a/src/main/java/com/github/dockerjava/client/command/CommitCmd.java b/src/main/java/com/github/dockerjava/client/command/CommitCmd.java
index 37b2e1eca..dea567929 100644
--- a/src/main/java/com/github/dockerjava/client/command/CommitCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/CommitCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
@@ -15,9 +16,9 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.NotFoundException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import javax.ws.rs.client.WebTarget;
+
+import static javax.ws.rs.client.Entity.entity;
/**
*
@@ -319,21 +320,20 @@ public String toString() {
}
protected String impl() throws DockerException {
- MultivaluedMap params = new MultivaluedMapImpl();
- params.add("container", containerId);
- params.add("repo", repository);
- params.add("tag", tag);
- params.add("m", message);
- params.add("author", author);
- params.add("pause", pause ? "1" : "0");
- WebResource webResource = baseResource.path("/commit").queryParams(params);
+ WebTarget webResource = baseResource.path("/commit")
+ .queryParam("container", containerId)
+ .queryParam("repo", repository)
+ .queryParam("tag", tag)
+ .queryParam("m", message)
+ .queryParam("author", author)
+ .queryParam("pause", pause ? "1" : "0");
try {
LOGGER.trace("POST: {}", webResource);
- ObjectNode objectNode = webResource.queryParams(params).accept("application/vnd.docker.raw-stream").type(MediaType.APPLICATION_JSON).post(ObjectNode.class, this);
+ ObjectNode objectNode = webResource.request().accept("application/vnd.docker.raw-stream").post(entity(this, MediaType.APPLICATION_JSON), ObjectNode.class);
return objectNode.get("Id").asText();
- } catch (UniformInterfaceException exception) {
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
throw new NotFoundException(String.format("No such container %s", containerId));
} else if (exception.getResponse().getStatus() == 500) {
diff --git a/src/main/java/com/github/dockerjava/client/command/ContainerDiffCmd.java b/src/main/java/com/github/dockerjava/client/command/ContainerDiffCmd.java
index 8c16e6008..e5d7df41b 100644
--- a/src/main/java/com/github/dockerjava/client/command/ContainerDiffCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/ContainerDiffCmd.java
@@ -2,6 +2,9 @@
import java.util.List;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -11,9 +14,6 @@
import com.github.dockerjava.client.NotFoundException;
import com.github.dockerjava.client.model.ChangeLog;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.GenericType;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
/**
* Inspect changes on a container's filesystem
@@ -49,13 +49,13 @@ public String toString() {
}
protected List impl() throws DockerException {
- WebResource webResource = baseResource.path(String.format("/containers/%s/changes", containerId));
+ WebTarget webResource = baseResource.path("/containers/{id}/changes").resolveTemplate("id", containerId);
try {
LOGGER.trace("GET: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_JSON).get(new GenericType>() {
- });
- } catch (UniformInterfaceException exception) {
+ return webResource.request().accept(MediaType.APPLICATION_JSON).get(new GenericType>() {
+ });
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
throw new NotFoundException(String.format("No such container %s", containerId));
} else if (exception.getResponse().getStatus() == 500) {
diff --git a/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java
index c95239275..2edc6a21d 100644
--- a/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/CopyFileFromContainerCmd.java
@@ -1,5 +1,7 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.Invocation;
import javax.ws.rs.core.MediaType;
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -9,16 +11,17 @@
import com.github.dockerjava.client.DockerException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
+
+import static javax.ws.rs.client.Entity.entity;
/**
*
* Copy files or folders from a container.
*
*/
-public class CopyFileFromContainerCmd extends AbstrDockerCmd {
+public class CopyFileFromContainerCmd extends AbstrDockerCmd {
private static final Logger LOGGER = LoggerFactory.getLogger(CopyFileFromContainerCmd.class);
@@ -74,18 +77,18 @@ public String toString() {
.toString();
}
- protected ClientResponse impl() throws DockerException {
+ protected Response impl() throws DockerException {
- WebResource webResource =
- baseResource.path(String.format("/containers/%s/copy", containerId));
+ WebTarget webResource =
+ baseResource.path("/containers/{id}/copy").resolveTemplate("id", containerId);
try {
LOGGER.trace("POST: " + webResource.toString());
- WebResource.Builder builder =
- webResource.accept(MediaType.APPLICATION_OCTET_STREAM_TYPE).type("application/json");
+ Invocation.Builder builder =
+ webResource.request().accept(MediaType.APPLICATION_OCTET_STREAM_TYPE);
- return builder.post(ClientResponse.class, this);
- } catch (UniformInterfaceException exception) {
+ return builder.post(entity(this, MediaType.APPLICATION_JSON), Response.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 400) {
throw new DockerException("bad parameter");
} else if (exception.getResponse().getStatus() == 404) {
diff --git a/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java
index 45bec8122..b8f39a342 100644
--- a/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/CreateContainerCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
@@ -13,9 +14,9 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.NotFoundException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import javax.ws.rs.client.WebTarget;
+
+import static javax.ws.rs.client.Entity.entity;
/**
@@ -259,18 +260,17 @@ public String toString() {
}
protected CreateContainerResponse impl() {
- MultivaluedMap params = new MultivaluedMapImpl();
- if (name != null) {
- params.add("name", name);
- }
- WebResource webResource = baseResource.path("/containers/create").queryParams(params);
+ WebTarget webResource = baseResource.path("/containers/create");
+
+ if (name != null) {
+ webResource = webResource.queryParam("name", name);
+ }
try {
LOGGER.trace("POST: {} ", webResource);
- return webResource.accept(MediaType.APPLICATION_JSON)
- .type(MediaType.APPLICATION_JSON)
- .post(CreateContainerResponse.class, this);
- } catch (UniformInterfaceException exception) {
+ return webResource.request().accept(MediaType.APPLICATION_JSON)
+ .post(entity(this, MediaType.APPLICATION_JSON), CreateContainerResponse.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
throw new NotFoundException(String.format("%s is an unrecognized image. Please pull the image first.", getImage()));
} else if (exception.getResponse().getStatus() == 406) {
diff --git a/src/main/java/com/github/dockerjava/client/command/CreateImageCmd.java b/src/main/java/com/github/dockerjava/client/command/CreateImageCmd.java
index 776cf94fd..4d34db8e9 100644
--- a/src/main/java/com/github/dockerjava/client/command/CreateImageCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/CreateImageCmd.java
@@ -2,6 +2,7 @@
import java.io.InputStream;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
@@ -11,9 +12,9 @@
import com.github.dockerjava.client.DockerException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import javax.ws.rs.client.WebTarget;
+
+import static javax.ws.rs.client.Entity.entity;
/**
* Create an image by importing the given stream of a tar file.
@@ -79,19 +80,19 @@ public String toString() {
}
protected CreateImageResponse impl() {
- MultivaluedMap params = new MultivaluedMapImpl();
- params.add("repo", repository);
- params.add("tag", tag);
- params.add("fromSrc", "-");
- WebResource webResource = baseResource.path("/images/create").queryParams(params);
+ WebTarget webResource = baseResource
+ .path("/images/create")
+ .queryParam("repo", repository)
+ .queryParam("tag", tag)
+ .queryParam("fromSrc", "-");
try {
LOGGER.trace("POST: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_OCTET_STREAM_TYPE)
- .post(CreateImageResponse.class, imageStream);
+ return webResource.request().accept(MediaType.APPLICATION_OCTET_STREAM_TYPE)
+ .post(entity(imageStream, MediaType.APPLICATION_OCTET_STREAM), CreateImageResponse.class);
- } catch (UniformInterfaceException exception) {
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 500) {
throw new DockerException("Server error.", exception);
} else {
diff --git a/src/main/java/com/github/dockerjava/client/command/InfoCmd.java b/src/main/java/com/github/dockerjava/client/command/InfoCmd.java
index 42985e632..db5033798 100644
--- a/src/main/java/com/github/dockerjava/client/command/InfoCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/InfoCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -7,8 +8,7 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.model.Info;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
/**
@@ -24,12 +24,12 @@ public String toString() {
}
protected Info impl() throws DockerException {
- WebResource webResource = baseResource.path("/info");
+ WebTarget webResource = baseResource.path("/info");
try {
LOGGER.trace("GET: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_JSON).get(Info.class);
- } catch (UniformInterfaceException exception) {
+ return webResource.request().accept(MediaType.APPLICATION_JSON).get(Info.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 500) {
throw new DockerException("Server error.", exception);
} else {
diff --git a/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java
index 78967e2d3..e08b4eaa7 100644
--- a/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/InspectContainerCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -8,8 +9,7 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.NotFoundException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
/**
* Inspect the details of a container.
@@ -40,12 +40,12 @@ public String toString() {
}
protected InspectContainerResponse impl() throws DockerException {
- WebResource webResource = baseResource.path(String.format("/containers/%s/json", containerId));
+ WebTarget webResource = baseResource.path("/containers/{id}/json").resolveTemplate("id", containerId);
try {
LOGGER.trace("GET: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_JSON).get(InspectContainerResponse.class);
- } catch (UniformInterfaceException exception) {
+ return webResource.request().accept(MediaType.APPLICATION_JSON).get(InspectContainerResponse.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
throw new NotFoundException(String.format("No such container %s", containerId));
} else if (exception.getResponse().getStatus() == 500) {
diff --git a/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java b/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java
index 0343dc82e..f334b866e 100644
--- a/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/InspectImageCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -8,8 +9,7 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.NotFoundException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
/**
@@ -41,12 +41,12 @@ public String toString() {
}
protected InspectImageResponse impl() {
- WebResource webResource = baseResource.path(String.format("/images/%s/json", imageId));
+ WebTarget webResource = baseResource.path("/images/{id}/json").resolveTemplate("id", imageId);
try {
LOGGER.trace("GET: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_JSON).get(InspectImageResponse.class);
- } catch (UniformInterfaceException exception) {
+ return webResource.request().accept(MediaType.APPLICATION_JSON).get(InspectImageResponse.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
throw new NotFoundException(String.format("No such image %s", imageId));
} else if (exception.getResponse().getStatus() == 500) {
diff --git a/src/main/java/com/github/dockerjava/client/command/KillContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/KillContainerCmd.java
index 9f9cc6a59..fca7b310a 100644
--- a/src/main/java/com/github/dockerjava/client/command/KillContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/KillContainerCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -7,8 +8,9 @@
import com.github.dockerjava.client.DockerException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
+
+import static javax.ws.rs.client.Entity.entity;
/**
* Kill a running container.
@@ -49,7 +51,7 @@ public String toString() {
}
protected Void impl() throws DockerException {
- WebResource webResource = baseResource.path(String.format("/containers/%s/kill", containerId));
+ WebTarget webResource = baseResource.path("/containers/{id}/kill").resolveTemplate("id", containerId);
if(signal != null) {
webResource = webResource.queryParam("signal", signal);
@@ -57,8 +59,8 @@ protected Void impl() throws DockerException {
try {
LOGGER.trace("POST: {}", webResource);
- webResource.accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).post();
- } catch (UniformInterfaceException exception) {
+ webResource.request().accept(MediaType.APPLICATION_JSON).post(entity(null, MediaType.APPLICATION_JSON));
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
LOGGER.warn("No such container {}", containerId);
} else if (exception.getResponse().getStatus() == 204) {
diff --git a/src/main/java/com/github/dockerjava/client/command/ListContainersCmd.java b/src/main/java/com/github/dockerjava/client/command/ListContainersCmd.java
index 226e16805..e6ea3b5fc 100644
--- a/src/main/java/com/github/dockerjava/client/command/ListContainersCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/ListContainersCmd.java
@@ -2,6 +2,7 @@
import java.util.List;
+import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
@@ -10,9 +11,7 @@
import com.github.dockerjava.client.model.Container;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.GenericType;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import javax.ws.rs.client.WebTarget;
/**
@@ -93,19 +92,19 @@ public String toString() {
}
protected List impl() {
- MultivaluedMap params = new MultivaluedMapImpl();
- if(limit >= 0) {
- params.add("limit", String.valueOf(limit));
- }
- params.add("all", showAll ? "1" : "0");
- params.add("since", sinceId);
- params.add("before", beforeId);
- params.add("size", showSize ? "1" : "0");
-
- WebResource webResource = baseResource.path("/containers/json").queryParams(params);
+ WebTarget webResource = baseResource.path("/containers/json")
+ .queryParam("all", showAll ? "1" : "0")
+ .queryParam("since", sinceId)
+ .queryParam("before", beforeId)
+ .queryParam("size", showSize ? "1" : "0");
+
+ if (limit >= 0) {
+ webResource = webResource.queryParam("limit", String.valueOf(limit));
+ }
+
LOGGER.trace("GET: {}", webResource);
- List containers = webResource.accept(MediaType.APPLICATION_JSON).get(new GenericType>() {
- });
+ List containers = webResource.request().accept(MediaType.APPLICATION_JSON).get(new GenericType>() {
+ });
LOGGER.trace("Response: {}", containers);
return containers;
diff --git a/src/main/java/com/github/dockerjava/client/command/ListImagesCmd.java b/src/main/java/com/github/dockerjava/client/command/ListImagesCmd.java
index 27af8ed9a..7cf55b3fa 100644
--- a/src/main/java/com/github/dockerjava/client/command/ListImagesCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/ListImagesCmd.java
@@ -2,6 +2,8 @@
import java.util.List;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
@@ -11,10 +13,7 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.model.Image;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.GenericType;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import javax.ws.rs.client.WebTarget;
/**
@@ -58,19 +57,18 @@ public String toString() {
}
protected List impl() {
- MultivaluedMap params = new MultivaluedMapImpl();
- params.add("filter", filter);
- params.add("all", showAll ? "1" : "0");
-
- WebResource webResource = baseResource.path("/images/json").queryParams(params);
+ WebTarget webResource = baseResource
+ .path("/images/json")
+ .queryParam("filter", filter)
+ .queryParam("all", showAll ? "1" : "0");
try {
LOGGER.trace("GET: {}", webResource);
- List images = webResource.accept(MediaType.APPLICATION_JSON).get(new GenericType>() {
+ List images = webResource.request().accept(MediaType.APPLICATION_JSON).get(new GenericType>() {
});
LOGGER.trace("Response: {}", images);
return images;
- } catch (UniformInterfaceException exception) {
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 400) {
throw new DockerException("bad parameter");
} else if (exception.getResponse().getStatus() == 500) {
diff --git a/src/main/java/com/github/dockerjava/client/command/LogContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/LogContainerCmd.java
index f1feb73a8..0e9f29a68 100644
--- a/src/main/java/com/github/dockerjava/client/command/LogContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/LogContainerCmd.java
@@ -1,18 +1,18 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
+import org.omg.PortableInterceptor.ClientRequestInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.NotFoundException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
/**
* Get container logs
@@ -29,7 +29,7 @@
* @param tail
* - `all` or ``, Output specified number of lines at the end of logs
*/
-public class LogContainerCmd extends AbstrDockerCmd {
+public class LogContainerCmd extends AbstrDockerCmd {
private static final Logger LOGGER = LoggerFactory
.getLogger(LogContainerCmd.class);
@@ -126,23 +126,22 @@ public String toString() {
.toString();
}
- protected ClientResponse impl() throws DockerException {
- MultivaluedMap params = new MultivaluedMapImpl();
- params.add("timestamps", timestamps ? "1" : "0");
- params.add("stdout", stdout ? "1" : "0");
- params.add("stderr", stderr ? "1" : "0");
- params.add("follow", followStream ? "1" : "0");
- params.add("tail", tail < 0 ? "all" : ""+ tail);
+ protected Response impl() throws DockerException {
- WebResource webResource = baseResource.path(
- String.format("/containers/%s/logs", containerId))
- .queryParams(params);
+ WebTarget webResource =
+ baseResource.path("/containers/{id}/logs")
+ .resolveTemplate("id", containerId)
+ .queryParam("timestamps", timestamps ? "1" : "0")
+ .queryParam("stdout", stdout ? "1" : "0")
+ .queryParam("stderr", stderr ? "1" : "0")
+ .queryParam("follow", followStream ? "1" : "0")
+ .queryParam("tail", tail < 0 ? "all" : "" + tail);
try {
LOGGER.trace("GET: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_OCTET_STREAM_TYPE)
- .get(ClientResponse.class);
- } catch (UniformInterfaceException exception) {
+ return webResource.request().accept(MediaType.APPLICATION_OCTET_STREAM_TYPE)
+ .get(Response.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 400) {
throw new DockerException("bad parameter");
} else if (exception.getResponse().getStatus() == 404) {
diff --git a/src/main/java/com/github/dockerjava/client/command/PauseContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/PauseContainerCmd.java
index a45083697..869528661 100644
--- a/src/main/java/com/github/dockerjava/client/command/PauseContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/PauseContainerCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -7,9 +8,10 @@
import com.github.dockerjava.client.DockerException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
+
+import static javax.ws.rs.client.Entity.entity;
/**
* Pause a container.
@@ -45,14 +47,14 @@ public String toString() {
}
protected Integer impl() throws DockerException {
- WebResource webResource = baseResource.path(String.format("/containers/%s/pause", containerId));
+ WebTarget webResource = baseResource.path("/containers/{id}/pause").resolveTemplate("id", containerId);
- ClientResponse response = null;
+ Response response = null;
try {
LOGGER.trace("POST: {}", webResource);
- response = webResource.accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).post(ClientResponse.class);
- } catch (UniformInterfaceException exception) {
+ response = webResource.request().accept(MediaType.APPLICATION_JSON).post(entity(null, MediaType.APPLICATION_JSON), Response.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
LOGGER.warn("No such container {}", containerId);
} else if (exception.getResponse().getStatus() == 204) {
diff --git a/src/main/java/com/github/dockerjava/client/command/PingCmd.java b/src/main/java/com/github/dockerjava/client/command/PingCmd.java
index e017617a5..ebbaf49b1 100644
--- a/src/main/java/com/github/dockerjava/client/command/PingCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/PingCmd.java
@@ -3,9 +3,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
/**
* Ping the Docker server
@@ -16,13 +16,13 @@ public class PingCmd extends AbstrDockerCmd {
private static final Logger LOGGER = LoggerFactory.getLogger(PingCmd.class);
protected Integer impl() {
- WebResource webResource = baseResource.path("/_ping");
+ WebTarget webResource = baseResource.path("/_ping");
try {
LOGGER.trace("GET: {}", webResource);
- ClientResponse resp = webResource.get(ClientResponse.class);
+ Response resp = webResource.request().get(Response.class);
return resp.getStatus();
- } catch (UniformInterfaceException exception) {
+ } catch (ClientErrorException exception) {
return exception.getResponse().getStatus();
}
}
diff --git a/src/main/java/com/github/dockerjava/client/command/PullImageCmd.java b/src/main/java/com/github/dockerjava/client/command/PullImageCmd.java
index c6fa460e0..d236c2700 100644
--- a/src/main/java/com/github/dockerjava/client/command/PullImageCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/PullImageCmd.java
@@ -1,34 +1,30 @@
package com.github.dockerjava.client.command;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-
-import org.apache.commons.lang.StringUtils;
+import com.github.dockerjava.client.DockerException;
+import com.google.common.base.Preconditions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.github.dockerjava.client.DockerException;
-import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import static javax.ws.rs.client.Entity.entity;
/**
- *
* Pull image from repository.
- *
*/
-public class PullImageCmd extends AbstrDockerCmd {
+public class PullImageCmd extends AbstrDockerCmd {
- private static final Logger LOGGER = LoggerFactory.getLogger(PullImageCmd.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(PullImageCmd.class);
- private String repository, tag, registry;
+ private String repository, tag, registry;
- public PullImageCmd(String repository) {
- withRepository(repository);
- }
+ public PullImageCmd(String repository) {
+ withRepository(repository);
+ }
public String getRepository() {
return repository;
@@ -43,50 +39,49 @@ public String getRegistry() {
}
public PullImageCmd withRepository(String repository) {
- Preconditions.checkNotNull(repository, "repository was not specified");
- this.repository = repository;
- return this;
- }
-
- public PullImageCmd withTag(String tag) {
- Preconditions.checkNotNull(tag, "tag was not specified");
- this.tag = tag;
- return this;
- }
-
- public PullImageCmd withRegistry(String registry) {
- Preconditions.checkNotNull(registry, "registry was not specified");
- this.registry = registry;
- return this;
- }
+ Preconditions.checkNotNull(repository, "repository was not specified");
+ this.repository = repository;
+ return this;
+ }
+
+ public PullImageCmd withTag(String tag) {
+ Preconditions.checkNotNull(tag, "tag was not specified");
+ this.tag = tag;
+ return this;
+ }
+
+ public PullImageCmd withRegistry(String registry) {
+ Preconditions.checkNotNull(registry, "registry was not specified");
+ this.registry = registry;
+ return this;
+ }
@Override
public String toString() {
return new StringBuilder("pull ")
- .append(repository)
- .append(tag != null ? ":" + tag : "")
- .toString();
+ .append(repository)
+ .append(tag != null ? ":" + tag : "")
+ .toString();
}
- protected ClientResponse impl() {
- Preconditions.checkNotNull(repository, "Repository was not specified");
-
- MultivaluedMap params = new MultivaluedMapImpl();
- params.add("tag", tag);
- params.add("fromImage", repository);
- params.add("registry", registry);
-
- WebResource webResource = baseResource.path("/images/create").queryParams(params);
-
- try {
- LOGGER.trace("POST: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_OCTET_STREAM_TYPE).post(ClientResponse.class);
- } catch (UniformInterfaceException exception) {
- if (exception.getResponse().getStatus() == 500) {
- throw new DockerException("Server error.", exception);
- } else {
- throw new DockerException(exception);
- }
- }
- }
+ protected Response impl() {
+ Preconditions.checkNotNull(repository, "Repository was not specified");
+
+ WebTarget webResource = baseResource
+ .path("/images/create")
+ .queryParam("tag", tag)
+ .queryParam("fromImage", repository)
+ .queryParam("registry", registry);
+
+ try {
+ LOGGER.trace("POST: {}", webResource);
+ return webResource.request().accept(MediaType.APPLICATION_OCTET_STREAM_TYPE).post(entity(Response.class, MediaType.APPLICATION_JSON));
+ } catch (ClientErrorException exception) {
+ if (exception.getResponse().getStatus() == 500) {
+ throw new DockerException("Server error.", exception);
+ } else {
+ throw new DockerException(exception);
+ }
+ }
+ }
}
diff --git a/src/main/java/com/github/dockerjava/client/command/PushImageCmd.java b/src/main/java/com/github/dockerjava/client/command/PushImageCmd.java
index 41cdc077a..20156068e 100644
--- a/src/main/java/com/github/dockerjava/client/command/PushImageCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/PushImageCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -7,9 +8,10 @@
import com.github.dockerjava.client.DockerException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
+
+import static javax.ws.rs.client.Entity.entity;
/**
@@ -17,7 +19,7 @@
*
* @param name The name, e.g. "alexec/busybox" or just "busybox" if you want to default. Not null.
*/
-public class PushImageCmd extends AbstrAuthCfgDockerCmd {
+public class PushImageCmd extends AbstrAuthCfgDockerCmd {
private static final Logger LOGGER = LoggerFactory.getLogger(PushImageCmd.class);
@@ -47,16 +49,17 @@ public String toString() {
.toString();
}
- protected ClientResponse impl() {
- WebResource webResource = baseResource.path("/images/" + name(name) + "/push");
+ protected Response impl() {
+ WebTarget webResource = baseResource.path("/images/" + name(name) + "/push");
try {
final String registryAuth = registryAuth();
LOGGER.trace("POST: {}", webResource);
return webResource
+ .request()
.header("X-Registry-Auth", registryAuth)
.accept(MediaType.APPLICATION_JSON)
- .post(ClientResponse.class);
- } catch (UniformInterfaceException e) {
+ .post(entity(Response.class, MediaType.APPLICATION_JSON));
+ } catch (ClientErrorException e) {
throw new DockerException(e);
}
}
diff --git a/src/main/java/com/github/dockerjava/client/command/RemoveContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/RemoveContainerCmd.java
index 3a12cd8e7..33a634ecc 100644
--- a/src/main/java/com/github/dockerjava/client/command/RemoveContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/RemoveContainerCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.apache.commons.lang.StringUtils;
@@ -8,8 +9,7 @@
import com.github.dockerjava.client.DockerException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
/**
* Remove a container.
@@ -73,13 +73,13 @@ public String toString() {
protected Void impl() throws DockerException {
Preconditions.checkState(!StringUtils.isEmpty(containerId), "Container ID can't be empty");
- WebResource webResource = baseResource.path("/containers/" + containerId).queryParam("v", removeVolumes ? "1" : "0").queryParam("force", force ? "1" : "0");
+ WebTarget webResource = baseResource.path("/containers/" + containerId).queryParam("v", removeVolumes ? "1" : "0").queryParam("force", force ? "1" : "0");
try {
LOGGER.trace("DELETE: {}", webResource);
- String response = webResource.accept(MediaType.APPLICATION_JSON).delete(String.class);
+ String response = webResource.request().accept(MediaType.APPLICATION_JSON).delete(String.class);
LOGGER.trace("Response: {}", response);
- } catch (UniformInterfaceException exception) {
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 204) {
//no error
LOGGER.trace("Successfully removed container " + containerId);
diff --git a/src/main/java/com/github/dockerjava/client/command/RemoveImageCmd.java b/src/main/java/com/github/dockerjava/client/command/RemoveImageCmd.java
index 49707d51e..1143919c6 100644
--- a/src/main/java/com/github/dockerjava/client/command/RemoveImageCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/RemoveImageCmd.java
@@ -6,9 +6,10 @@
import com.github.dockerjava.client.DockerException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
/**
*
@@ -72,14 +73,14 @@ protected Void impl() throws DockerException {
Preconditions.checkState(!StringUtils.isEmpty(imageId), "Image ID can't be empty");
try {
- WebResource webResource = baseResource.path("/images/" + imageId)
+ WebTarget webResource = baseResource.path("/images/" + imageId)
.queryParam("force", force ? "1" : "0").queryParam("noprune", noPrune ? "1" : "0");
LOGGER.trace("DELETE: {}", webResource);
- webResource.delete(ClientResponse.class);
+ webResource.request().delete(Response.class);
- } catch (UniformInterfaceException exception) {
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 204) {
//no error
LOGGER.trace("Successfully removed image " + imageId);
diff --git a/src/main/java/com/github/dockerjava/client/command/RestartContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/RestartContainerCmd.java
index 8a383af2e..2f8c9f869 100644
--- a/src/main/java/com/github/dockerjava/client/command/RestartContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/RestartContainerCmd.java
@@ -1,5 +1,7 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -8,8 +10,9 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.NotFoundException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
+
+import static javax.ws.rs.client.Entity.entity;
/**
* Restart a running container.
@@ -58,13 +61,13 @@ public String toString() {
}
protected Void impl() throws DockerException {
- WebResource webResource = baseResource.path(String.format("/containers/%s/restart", containerId))
- .queryParam("t", String.valueOf(timeout));;
+ WebTarget webResource = baseResource.path("/containers/{id}/restart").resolveTemplate("id", containerId)
+ .queryParam("t", String.valueOf(timeout));
try {
LOGGER.trace("POST: {}", webResource);
- webResource.accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).post();
- } catch (UniformInterfaceException exception) {
+ webResource.request().accept(MediaType.APPLICATION_JSON).post(entity(null, MediaType.APPLICATION_JSON_TYPE));
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
throw new NotFoundException(String.format("No such container %s", containerId));
} else if (exception.getResponse().getStatus() == 204) {
diff --git a/src/main/java/com/github/dockerjava/client/command/SearchImagesCmd.java b/src/main/java/com/github/dockerjava/client/command/SearchImagesCmd.java
index 6be296068..7d0bca70d 100644
--- a/src/main/java/com/github/dockerjava/client/command/SearchImagesCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/SearchImagesCmd.java
@@ -2,6 +2,8 @@
import java.util.List;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -10,9 +12,7 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.model.SearchItem;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.GenericType;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
/**
@@ -48,12 +48,12 @@ public String toString() {
}
protected List impl() {
- WebResource webResource = baseResource.path("/images/search").queryParam("term", term);
+ WebTarget webResource = baseResource.path("/images/search").queryParam("term", term);
try {
LOGGER.trace("GET: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_JSON).get(new GenericType>() {
- });
- } catch (UniformInterfaceException exception) {
+ return webResource.request().accept(MediaType.APPLICATION_JSON).get(new GenericType>() {
+ });
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 500) {
throw new DockerException("Server error.", exception);
} else {
diff --git a/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java
index b116d8da7..1b2534e6d 100644
--- a/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/StartContainerCmd.java
@@ -1,5 +1,7 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.Invocation;
import javax.ws.rs.core.MediaType;
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -12,9 +14,9 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.NotFoundException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.WebResource.Builder;
+import javax.ws.rs.client.WebTarget;
+
+import static javax.ws.rs.client.Entity.entity;
/**
* Run a container
@@ -156,16 +158,16 @@ public String toString() {
}
protected Void impl() throws DockerException {
- WebResource webResource = baseResource.path(String.format(
- "/containers/%s/start", containerId));
+ WebTarget webResource = baseResource.path(
+ "/containers/{id}/start").resolveTemplate("id", containerId);
try {
LOGGER.trace("POST: {}", webResource);
- Builder builder = webResource.accept(MediaType.APPLICATION_JSON);
+ Invocation.Builder builder = webResource.request().accept(MediaType.APPLICATION_JSON);
- builder.type(MediaType.APPLICATION_JSON).post(this);
+ builder.post(entity(this, MediaType.APPLICATION_JSON));
- } catch (UniformInterfaceException exception) {
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
throw new NotFoundException(String.format(
"No such container %s", containerId));
diff --git a/src/main/java/com/github/dockerjava/client/command/StopContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/StopContainerCmd.java
index 69f453914..7bb0699dc 100644
--- a/src/main/java/com/github/dockerjava/client/command/StopContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/StopContainerCmd.java
@@ -1,5 +1,7 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -7,8 +9,9 @@
import com.github.dockerjava.client.DockerException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
+
+import static javax.ws.rs.client.Entity.entity;
/**
* Stop a running container.
@@ -58,13 +61,13 @@ public String toString() {
}
protected Void impl() throws DockerException {
- WebResource webResource = baseResource.path(String.format("/containers/%s/stop", containerId))
+ WebTarget webResource = baseResource.path("/containers/{id}/stop").resolveTemplate("id", containerId)
.queryParam("t", String.valueOf(timeout));
try {
LOGGER.trace("POST: {}", webResource);
- webResource.accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).post();
- } catch (UniformInterfaceException exception) {
+ webResource.request().accept(MediaType.APPLICATION_JSON).post(entity(null, MediaType.APPLICATION_JSON));
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
LOGGER.warn("No such container {}", containerId);
} else if(exception.getResponse().getStatus() == 304) {
diff --git a/src/main/java/com/github/dockerjava/client/command/TagImageCmd.java b/src/main/java/com/github/dockerjava/client/command/TagImageCmd.java
index 8b1f281c2..e24f499d8 100644
--- a/src/main/java/com/github/dockerjava/client/command/TagImageCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/TagImageCmd.java
@@ -1,5 +1,7 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import org.slf4j.Logger;
@@ -7,10 +9,10 @@
import com.github.dockerjava.client.DockerException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
+
+import static javax.ws.rs.client.Entity.entity;
/**
@@ -92,20 +94,16 @@ public String toString() {
}
protected Integer impl() {
-
- MultivaluedMap params = new MultivaluedMapImpl();
- params.add("repo", repository);
- params.add("tag", tag);
- params.add("force", force ? "1" : "0");
-
- WebResource webResource = baseResource.path("/images/" + imageId + "/tag").queryParams(
- params);
+ WebTarget webResource = baseResource.path("/images/" + imageId + "/tag")
+ .queryParam("repo", repository)
+ .queryParam("tag", tag)
+ .queryParam("force", force ? "1" : "0");
try {
LOGGER.trace("POST: {}", webResource);
- ClientResponse resp = webResource.post(ClientResponse.class);
+ Response resp = webResource.request().post(entity(null, MediaType.APPLICATION_JSON), Response.class);
return resp.getStatus();
- } catch (UniformInterfaceException exception) {
+ } catch (ClientErrorException exception) {
throw new DockerException(exception);
}
}
diff --git a/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java
index fde5f54eb..ec0c108bf 100644
--- a/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/TopContainerCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.apache.commons.lang.StringUtils;
@@ -9,8 +10,7 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.NotFoundException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
/**
*
@@ -59,15 +59,15 @@ public String toString() {
}
protected TopContainerResponse impl() throws DockerException {
- WebResource webResource = baseResource.path(String.format("/containers/%s/top", containerId));
+ WebTarget webResource = baseResource.path("/containers/{id}/top").resolveTemplate("id", containerId);
if(!StringUtils.isEmpty(psArgs))
webResource = webResource.queryParam("ps_args", psArgs);
try {
LOGGER.trace("GET: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_JSON).get(TopContainerResponse.class);
- } catch (UniformInterfaceException exception) {
+ return webResource.request().accept(MediaType.APPLICATION_JSON).get(TopContainerResponse.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
throw new NotFoundException(String.format("No such container %s", containerId));
} else if (exception.getResponse().getStatus() == 500) {
diff --git a/src/main/java/com/github/dockerjava/client/command/UnpauseContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/UnpauseContainerCmd.java
index 9e75540c2..2b3488055 100644
--- a/src/main/java/com/github/dockerjava/client/command/UnpauseContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/UnpauseContainerCmd.java
@@ -1,5 +1,7 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
+import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -7,9 +9,8 @@
import com.github.dockerjava.client.DockerException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.Response;
/**
* Unpause a container.
@@ -45,14 +46,14 @@ public String toString() {
}
protected Integer impl() throws DockerException {
- WebResource webResource = baseResource.path(String.format("/containers/%s/unpause", containerId));
+ WebTarget webResource = baseResource.path("/containers/{id}/unpause").resolveTemplate("id", containerId);
- ClientResponse response = null;
+ Response response = null;
try {
LOGGER.trace("POST: {}", webResource);
- response = webResource.accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).post(ClientResponse.class);
- } catch (UniformInterfaceException exception) {
+ response = webResource.request().accept(MediaType.APPLICATION_JSON).post(Entity.entity(Response.class, MediaType.APPLICATION_JSON));
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
LOGGER.warn("No such container {}", containerId);
} else if (exception.getResponse().getStatus() == 204) {
diff --git a/src/main/java/com/github/dockerjava/client/command/VersionCmd.java b/src/main/java/com/github/dockerjava/client/command/VersionCmd.java
index c1809e4e7..5ad8c961a 100644
--- a/src/main/java/com/github/dockerjava/client/command/VersionCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/VersionCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -7,8 +8,7 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.model.Version;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
/**
@@ -25,12 +25,12 @@ public String toString() {
}
protected Version impl() throws DockerException {
- WebResource webResource = baseResource.path("/version");
+ WebTarget webResource = baseResource.path("/version");
try {
LOGGER.trace("GET: {}", webResource);
- return webResource.accept(MediaType.APPLICATION_JSON).get(Version.class);
- } catch (UniformInterfaceException exception) {
+ return webResource.request().accept(MediaType.APPLICATION_JSON).get(Version.class);
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 500) {
throw new DockerException("Server error.", exception);
} else {
diff --git a/src/main/java/com/github/dockerjava/client/command/WaitContainerCmd.java b/src/main/java/com/github/dockerjava/client/command/WaitContainerCmd.java
index 653a86db1..1ddbee86a 100644
--- a/src/main/java/com/github/dockerjava/client/command/WaitContainerCmd.java
+++ b/src/main/java/com/github/dockerjava/client/command/WaitContainerCmd.java
@@ -1,5 +1,6 @@
package com.github.dockerjava.client.command;
+import javax.ws.rs.ClientErrorException;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
@@ -9,8 +10,9 @@
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.NotFoundException;
import com.google.common.base.Preconditions;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import com.sun.jersey.api.client.WebResource;
+import javax.ws.rs.client.WebTarget;
+
+import static javax.ws.rs.client.Entity.entity;
/**
* Wait for a container to exit and print its exit code
@@ -41,13 +43,13 @@ public String toString() {
}
protected Integer impl() throws DockerException {
- WebResource webResource = baseResource.path(String.format("/containers/%s/wait", containerId));
+ WebTarget webResource = baseResource.path("/containers/{id}/wait").resolveTemplate("id", containerId);
try {
LOGGER.trace("POST: {}", webResource);
- ObjectNode ObjectNode = webResource.accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).post(ObjectNode.class);
+ ObjectNode ObjectNode = webResource.request().accept(MediaType.APPLICATION_JSON).post(entity(null, MediaType.APPLICATION_JSON), ObjectNode.class);
return ObjectNode.get("StatusCode").asInt();
- } catch (UniformInterfaceException exception) {
+ } catch (ClientErrorException exception) {
if (exception.getResponse().getStatus() == 404) {
throw new NotFoundException(String.format("No such container %s", containerId));
} else if (exception.getResponse().getStatus() == 500) {
diff --git a/src/main/java/com/github/dockerjava/client/utils/JsonClientFilter.java b/src/main/java/com/github/dockerjava/client/utils/JsonClientFilter.java
index a29255d3c..31b51845d 100644
--- a/src/main/java/com/github/dockerjava/client/utils/JsonClientFilter.java
+++ b/src/main/java/com/github/dockerjava/client/utils/JsonClientFilter.java
@@ -1,26 +1,25 @@
package com.github.dockerjava.client.utils;
-import com.sun.jersey.api.client.ClientRequest;
-import com.sun.jersey.api.client.ClientResponse;
-import com.sun.jersey.api.client.filter.ClientFilter;
+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 java.io.IOException;
/**
*
* @author Konstantin Pelykh (kpelykh@gmail.com)
*
*/
-public class JsonClientFilter extends ClientFilter {
+public class JsonClientFilter implements ClientResponseFilter {
- public ClientResponse handle(ClientRequest cr) {
- // Call the next filter
- ClientResponse resp = getNext().handle(cr);
- String respContentType = resp.getHeaders().getFirst("Content-Type");
- if (respContentType != null && respContentType.startsWith("text/plain")) {
- String newContentType = "application/json" + respContentType.substring(10);
- resp.getHeaders().putSingle("Content-Type", newContentType);
+
+ @Override
+ public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
+ if (responseContext.getMediaType() != null && responseContext.getMediaType().isCompatible(MediaType.TEXT_PLAIN_TYPE)) {
+ String newContentType = "application/json" + responseContext.getMediaType().toString().substring(10);
+ responseContext.getHeaders().putSingle("Content-Type", newContentType);
}
- return resp;
}
-
}
diff --git a/src/test/java/com/github/dockerjava/client/AbstractDockerClientTest.java b/src/test/java/com/github/dockerjava/client/AbstractDockerClientTest.java
index 21c78e54e..918d51ee9 100644
--- a/src/test/java/com/github/dockerjava/client/AbstractDockerClientTest.java
+++ b/src/test/java/com/github/dockerjava/client/AbstractDockerClientTest.java
@@ -2,13 +2,13 @@
import com.github.dockerjava.client.DockerClient;
import com.github.dockerjava.client.DockerException;
-import com.sun.jersey.api.client.ClientResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.ITestResult;
+import javax.ws.rs.core.Response;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.DatagramSocket;
@@ -82,7 +82,7 @@ public void afterMethod(ITestResult result) {
result.getName());
}
- protected String logResponseStream(ClientResponse response) {
+ protected String logResponseStream(Response response) {
String responseString;
try {
responseString = DockerClient.asString(response);
diff --git a/src/test/java/com/github/dockerjava/client/command/AuthCmdTest.java b/src/test/java/com/github/dockerjava/client/command/AuthCmdTest.java
index 608d84535..fd4513827 100644
--- a/src/test/java/com/github/dockerjava/client/command/AuthCmdTest.java
+++ b/src/test/java/com/github/dockerjava/client/command/AuthCmdTest.java
@@ -3,12 +3,12 @@
import com.github.dockerjava.client.AbstractDockerClientTest;
import com.github.dockerjava.client.DockerClient;
import com.github.dockerjava.client.DockerException;
-import com.sun.jersey.api.client.UniformInterfaceException;
import org.hamcrest.Matchers;
import org.testng.ITestResult;
import org.testng.annotations.*;
+import javax.ws.rs.ClientErrorException;
import java.lang.reflect.Method;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -46,8 +46,8 @@ public void testAuthInvalid() throws Exception {
new DockerClient().authCmd().exec();
fail("Expected a DockerException caused by a bad password.");
} catch (DockerException e) {
- assertThat(e.getCause(), Matchers.instanceOf(UniformInterfaceException.class));
- assertEquals(((UniformInterfaceException) e.getCause()).getResponse().getStatus(), 401);
+ assertThat(e.getCause(), Matchers.instanceOf(ClientErrorException.class));
+ assertEquals(((ClientErrorException) e.getCause()).getResponse().getStatus(), 401);
}
}
}
diff --git a/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java
index 17934c062..bec603094 100644
--- a/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java
+++ b/src/test/java/com/github/dockerjava/client/command/BuildImageCmdTest.java
@@ -10,12 +10,14 @@
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.io.StringWriter;
import java.lang.reflect.Method;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.LineIterator;
import org.apache.commons.lang.StringUtils;
+import org.glassfish.jersey.client.ClientResponse;
import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
@@ -25,7 +27,8 @@
import com.github.dockerjava.client.AbstractDockerClientTest;
import com.github.dockerjava.client.DockerException;
-import com.sun.jersey.api.client.ClientResponse;
+
+import javax.ws.rs.core.Response;
public class BuildImageCmdTest extends AbstractDockerClientTest {
@@ -55,20 +58,21 @@ public void testNginxDockerfileBuilder() throws DockerException,
File baseDir = new File(Thread.currentThread().getContextClassLoader()
.getResource("nginx").getFile());
- ClientResponse response = dockerClient.buildImageCmd(baseDir).exec();
+ Response response = dockerClient.buildImageCmd(baseDir).exec();
StringWriter logwriter = new StringWriter();
+ InputStream is = response.readEntity(InputStream.class);
try {
- LineIterator itr = IOUtils.lineIterator(
- response.getEntityInputStream(), "UTF-8");
+ LineIterator itr = IOUtils.lineIterator(
+ is, "UTF-8");
while (itr.hasNext()) {
String line = itr.next();
logwriter.write(line + "\n");
LOG.info(line);
}
} finally {
- IOUtils.closeQuietly(response.getEntityInputStream());
+ IOUtils.closeQuietly(is);
}
String fullLog = logwriter.toString();
@@ -115,20 +119,21 @@ private String dockerfileBuild(File baseDir, String expectedText)
throws DockerException, IOException {
// Build image
- ClientResponse response = dockerClient.buildImageCmd(baseDir).exec();
+ Response response = dockerClient.buildImageCmd(baseDir).exec();
StringWriter logwriter = new StringWriter();
+ InputStream is = response.readEntity(InputStream.class);
try {
- LineIterator itr = IOUtils.lineIterator(
- response.getEntityInputStream(), "UTF-8");
+ LineIterator itr = IOUtils.lineIterator(
+ is, "UTF-8");
while (itr.hasNext()) {
String line = itr.next();
logwriter.write(line + "\n");
LOG.info(line);
}
} finally {
- IOUtils.closeQuietly(response.getEntityInputStream());
+ IOUtils.closeQuietly(is);
}
String fullLog = logwriter.toString();
@@ -150,7 +155,7 @@ private String dockerfileBuild(File baseDir, String expectedText)
tmpContainers.add(container.getId());
// Log container
- ClientResponse logResponse = logContainer(container
+ Response logResponse = logContainer(container
.getId());
assertThat(logResponseStream(logResponse), containsString(expectedText));
@@ -159,7 +164,7 @@ private String dockerfileBuild(File baseDir, String expectedText)
}
- private ClientResponse logContainer(String containerId) {
+ private Response logContainer(String containerId) {
return dockerClient.logContainerCmd(containerId).withStdErr().withStdOut().exec();
}
@@ -169,20 +174,21 @@ public void testNetCatDockerfileBuilder() throws DockerException,
File baseDir = new File(Thread.currentThread().getContextClassLoader()
.getResource("netcat").getFile());
- ClientResponse response = dockerClient.buildImageCmd(baseDir).withNoCache().exec();
+ Response response = dockerClient.buildImageCmd(baseDir).withNoCache().exec();
StringWriter logwriter = new StringWriter();
+ InputStream is = response.readEntity(InputStream.class);
try {
- LineIterator itr = IOUtils.lineIterator(
- response.getEntityInputStream(), "UTF-8");
+ LineIterator itr = IOUtils.lineIterator(
+ is, "UTF-8");
while (itr.hasNext()) {
String line = itr.next();
logwriter.write(line + "\n");
LOG.info(line);
}
} finally {
- IOUtils.closeQuietly(response.getEntityInputStream());
+ IOUtils.closeQuietly(is);
}
String fullLog = logwriter.toString();
diff --git a/src/test/java/com/github/dockerjava/client/command/CopyFileFromContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/CopyFileFromContainerCmdTest.java
index 4ef739887..3d6f6ff37 100644
--- a/src/test/java/com/github/dockerjava/client/command/CopyFileFromContainerCmdTest.java
+++ b/src/test/java/com/github/dockerjava/client/command/CopyFileFromContainerCmdTest.java
@@ -1,10 +1,10 @@
package com.github.dockerjava.client.command;
import com.github.dockerjava.client.AbstractDockerClientTest;
-import com.sun.jersey.api.client.ClientResponse;
import org.testng.ITestResult;
import org.testng.annotations.*;
+import javax.ws.rs.core.Response;
import java.lang.reflect.Method;
import static org.hamcrest.Matchers.*;
@@ -46,7 +46,7 @@ public void copyFromContainer() {
dockerClient.startContainerCmd(container.getId()).exec();
tmpContainers.add(container.getId());
- ClientResponse response = dockerClient.copyFileFromContainerCmd(container.getId(), "/test").exec();
+ Response response = dockerClient.copyFileFromContainerCmd(container.getId(), "/test").exec();
assertTrue(response.getStatus() == 200 && response.hasEntity(), "The file was not copied from the container.");
}
}
diff --git a/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java b/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java
index 43c54d22e..f09de8e27 100644
--- a/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java
+++ b/src/test/java/com/github/dockerjava/client/command/LogContainerCmdTest.java
@@ -18,7 +18,8 @@
import com.github.dockerjava.client.AbstractDockerClientTest;
import com.github.dockerjava.client.DockerException;
-import com.sun.jersey.api.client.ClientResponse;
+
+import javax.ws.rs.core.Response;
public class LogContainerCmdTest extends AbstractDockerClientTest {
@@ -60,7 +61,7 @@ public void logContainer() throws DockerException, IOException {
assertThat(exitCode, equalTo(0));
- ClientResponse response = dockerClient.logContainerCmd(container.getId()).withStdErr().withStdOut().exec();
+ Response response = dockerClient.logContainerCmd(container.getId()).withStdErr().withStdOut().exec();
assertThat(logResponseStream(response), endsWith(snippet));
}
diff --git a/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java b/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java
index 0472720d9..fd1d09354 100644
--- a/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java
+++ b/src/test/java/com/github/dockerjava/client/command/PullImageCmdTest.java
@@ -18,7 +18,8 @@
import com.github.dockerjava.client.AbstractDockerClientTest;
import com.github.dockerjava.client.DockerException;
import com.github.dockerjava.client.model.Info;
-import com.sun.jersey.api.client.ClientResponse;
+
+import javax.ws.rs.core.Response;
public class PullImageCmdTest extends AbstractDockerClientTest {
@@ -70,7 +71,7 @@ public void testPullImage() throws DockerException, IOException {
LOG.info("Pulling image: {}", testImage);
tmpImgs.add(testImage);
- ClientResponse response = dockerClient.pullImageCmd(testImage).exec();
+ Response response = dockerClient.pullImageCmd(testImage).exec();
assertThat(logResponseStream(response),
containsString("Download complete"));