From 78fd7c7ed0c47c8c4806163b795769f7e88cd603 Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Tue, 10 Dec 2019 21:21:25 +0100 Subject: [PATCH 1/5] Make Jersey transport extend from AbstractDockerCmdExecFactory --- .../core/exec/StartContainerCmdExec.java | 13 +- .../jaxrs/AbstrAsyncDockerCmdExec.java | 68 --- .../dockerjava/jaxrs/AbstrDockerCmdExec.java | 98 ---- .../jaxrs/AbstrSyncDockerCmdExec.java | 35 -- .../jaxrs/AttachContainerCmdExec.java | 46 -- .../github/dockerjava/jaxrs/AuthCmdExec.java | 39 -- .../dockerjava/jaxrs/BuildImageCmdExec.java | 155 ------ .../dockerjava/jaxrs/CommitCmdExec.java | 40 -- .../jaxrs/ConnectToNetworkCmdExec.java | 32 -- .../jaxrs/ContainerDiffCmdExec.java | 35 -- .../CopyArchiveFromContainerCmdExec.java | 37 -- .../jaxrs/CopyArchiveToContainerCmdExec.java | 37 -- .../jaxrs/CopyFileFromContainerCmdExec.java | 40 -- .../jaxrs/CreateContainerCmdExec.java | 36 -- .../dockerjava/jaxrs/CreateImageCmdExec.java | 37 -- .../jaxrs/CreateNetworkCmdExec.java | 31 -- .../dockerjava/jaxrs/CreateSecretCmdExec.java | 32 -- .../jaxrs/CreateServiceCmdExec.java | 31 -- .../dockerjava/jaxrs/CreateVolumeCmdExec.java | 32 -- .../jaxrs/DisconnectFromNetworkCmdExec.java | 32 -- .../dockerjava/jaxrs/EventsCmdExec.java | 42 -- .../dockerjava/jaxrs/ExecCreateCmdExec.java | 34 -- .../dockerjava/jaxrs/ExecStartCmdExec.java | 36 -- .../github/dockerjava/jaxrs/InfoCmdExec.java | 29 -- .../jaxrs/InitializeSwarmCmdExec.java | 32 -- .../jaxrs/InspectContainerCmdExec.java | 33 -- .../dockerjava/jaxrs/InspectExecCmdExec.java | 27 -- .../dockerjava/jaxrs/InspectImageCmdExec.java | 30 -- .../jaxrs/InspectNetworkCmdExec.java | 29 -- .../jaxrs/InspectServiceCmdExec.java | 30 -- .../dockerjava/jaxrs/InspectSwarmCmdExec.java | 29 -- .../jaxrs/InspectSwarmNodeCmdExec.java | 30 -- .../jaxrs/InspectVolumeCmdExec.java | 29 -- .../jaxrs/JerseyDockerCmdExecFactory.java | 451 +----------------- .../jaxrs/JerseyInvocationBuilder.java | 194 ++++++++ .../dockerjava/jaxrs/JerseyWebTarget.java | 74 +++ .../dockerjava/jaxrs/JoinSwarmCmdExec.java | 32 -- .../jaxrs/KillContainerCmdExec.java | 36 -- .../dockerjava/jaxrs/LeaveSwarmCmdExec.java | 32 -- .../jaxrs/ListContainersCmdExec.java | 54 --- .../dockerjava/jaxrs/ListImagesCmdExec.java | 50 -- .../dockerjava/jaxrs/ListNetworksCmdExec.java | 46 -- .../dockerjava/jaxrs/ListSecretsCmdExec.java | 43 -- .../dockerjava/jaxrs/ListServicesCmdExec.java | 44 -- .../jaxrs/ListSwarmNodesCmdExec.java | 42 -- .../dockerjava/jaxrs/ListTasksCmdExec.java | 43 -- .../dockerjava/jaxrs/ListVolumesCmdExec.java | 36 -- .../dockerjava/jaxrs/LoadImageCmdExec.java | 31 -- .../dockerjava/jaxrs/LogContainerCmdExec.java | 49 -- .../dockerjava/jaxrs/LogSwarmObjectExec.java | 50 -- .../jaxrs/PauseContainerCmdExec.java | 32 -- .../github/dockerjava/jaxrs/PingCmdExec.java | 29 -- .../github/dockerjava/jaxrs/PruneCmdExec.java | 41 -- .../dockerjava/jaxrs/PullImageCmdExec.java | 47 -- .../dockerjava/jaxrs/PushImageCmdExec.java | 51 -- .../jaxrs/RemoveContainerCmdExec.java | 34 -- .../dockerjava/jaxrs/RemoveImageCmdExec.java | 32 -- .../jaxrs/RemoveNetworkCmdExec.java | 30 -- .../dockerjava/jaxrs/RemoveSecretCmdExec.java | 30 -- .../jaxrs/RemoveServiceCmdExec.java | 30 -- .../jaxrs/RemoveSwarmNodeCmdExec.java | 31 -- .../dockerjava/jaxrs/RemoveVolumeCmdExec.java | 30 -- .../jaxrs/RenameContainerCmdExec.java | 30 -- .../jaxrs/RestartContainerCmdExec.java | 36 -- .../dockerjava/jaxrs/SaveImageCmdExec.java | 39 -- .../dockerjava/jaxrs/SearchImagesCmdExec.java | 34 -- .../jaxrs/StartContainerCmdExec.java | 35 -- .../github/dockerjava/jaxrs/StatsCmdExec.java | 35 -- .../jaxrs/StopContainerCmdExec.java | 35 -- .../dockerjava/jaxrs/TagImageCmdExec.java | 31 -- .../dockerjava/jaxrs/TopContainerCmdExec.java | 36 -- .../jaxrs/UnpauseContainerCmdExec.java | 32 -- .../jaxrs/UpdateContainerCmdExec.java | 36 -- .../jaxrs/UpdateServiceCmdExec.java | 36 -- .../dockerjava/jaxrs/UpdateSwarmCmdExec.java | 35 -- .../jaxrs/UpdateSwarmNodeCmdExec.java | 36 -- .../dockerjava/jaxrs/VersionCmdExec.java | 29 -- .../jaxrs/WaitContainerCmdExec.java | 42 -- .../java/com/github/dockerjava/cmd/CmdIT.java | 2 +- 79 files changed, 290 insertions(+), 3309 deletions(-) delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrAsyncDockerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrDockerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrSyncDockerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AttachContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AuthCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/BuildImageCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CommitCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ConnectToNetworkCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ContainerDiffCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyArchiveFromContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyArchiveToContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyFileFromContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateImageCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateNetworkCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateSecretCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateServiceCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateVolumeCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/DisconnectFromNetworkCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/EventsCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ExecCreateCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ExecStartCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InfoCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InitializeSwarmCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectExecCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectImageCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectNetworkCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectServiceCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectSwarmCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectSwarmNodeCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectVolumeCmdExec.java create mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java create mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyWebTarget.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JoinSwarmCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/KillContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LeaveSwarmCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListContainersCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListImagesCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListNetworksCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListSecretsCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListServicesCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListSwarmNodesCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListTasksCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListVolumesCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LoadImageCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LogContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LogSwarmObjectExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PauseContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PingCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PruneCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PullImageCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PushImageCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveImageCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveNetworkCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveSecretCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveServiceCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveSwarmNodeCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveVolumeCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RenameContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RestartContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/SaveImageCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/SearchImagesCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StartContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StatsCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StopContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/TagImageCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/TopContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UnpauseContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateContainerCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateServiceCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateSwarmCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateSwarmNodeCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/VersionCmdExec.java delete mode 100644 docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/WaitContainerCmdExec.java diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/exec/StartContainerCmdExec.java b/docker-java-core/src/main/java/com/github/dockerjava/core/exec/StartContainerCmdExec.java index c773f5a56..774a85c3d 100644 --- a/docker-java-core/src/main/java/com/github/dockerjava/core/exec/StartContainerCmdExec.java +++ b/docker-java-core/src/main/java/com/github/dockerjava/core/exec/StartContainerCmdExec.java @@ -8,6 +8,8 @@ import com.github.dockerjava.core.MediaType; import com.github.dockerjava.core.WebTarget; +import java.io.IOException; + public class StartContainerCmdExec extends AbstrSyncDockerCmdExec implements StartContainerCmd.Exec { @@ -23,9 +25,14 @@ protected Void execute(StartContainerCmd command) { command.getContainerId()); LOGGER.trace("POST: {}", webResource); - webResource.request() - .accept(MediaType.APPLICATION_JSON) - .post(command); + try { + webResource.request() + .accept(MediaType.APPLICATION_JSON) + .post(null) + .close(); + } catch (IOException e) { + throw new RuntimeException(e); + } return null; } diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrAsyncDockerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrAsyncDockerCmdExec.java deleted file mode 100644 index eac18ae8d..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrAsyncDockerCmdExec.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import java.io.Closeable; -import java.io.IOException; - -import javax.ws.rs.client.WebTarget; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.AsyncDockerCmd; -import com.github.dockerjava.api.command.DockerCmdAsyncExec; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; - -public abstract class AbstrAsyncDockerCmdExec, A_RES_T> extends - AbstrDockerCmdExec implements DockerCmdAsyncExec { - - public AbstrAsyncDockerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - public Void exec(CMD_T command, ResultCallback resultCallback) { - return execute(command, resultCallback); - } - - protected final Void execute(final CMD_T command, final ResultCallback resultCallback) { - - ResultCallback delegatingResultCallback = new ResultCallback() { - - @Override - public void close() throws IOException { - resultCallback.close(); - command.close(); - } - - @Override - public void onStart(Closeable closeable) { - resultCallback.onStart(closeable); - } - - @Override - public void onNext(A_RES_T object) { - resultCallback.onNext(object); - } - - @Override - public void onError(Throwable throwable) { - resultCallback.onError(throwable); - } - - @Override - public void onComplete() { - resultCallback.onComplete(); - command.close(); - } - }; - - AbstractCallbackNotifier callbackNotifier = callbackNotifier(command, delegatingResultCallback); - - AbstractCallbackNotifier.startAsyncProcessing(callbackNotifier); - - return null; - } - - protected abstract AbstractCallbackNotifier callbackNotifier(CMD_T command, - ResultCallback resultCallback); - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrDockerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrDockerCmdExec.java deleted file mode 100644 index 3b93a8af2..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrDockerCmdExec.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.github.dockerjava.api.model.AuthConfig; -import com.github.dockerjava.api.model.AuthConfigurations; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.RemoteApiVersion; -import com.google.common.io.BaseEncoding; - -import javax.ws.rs.client.Invocation; -import javax.ws.rs.client.WebTarget; -import java.io.IOException; - -import static com.github.dockerjava.core.RemoteApiVersion.UNKNOWN_VERSION; -import static com.github.dockerjava.core.RemoteApiVersion.VERSION_1_19; -import static com.google.common.base.Preconditions.checkNotNull; - -public abstract class AbstrDockerCmdExec { - - private final DockerClientConfig dockerClientConfig; - - private final WebTarget baseResource; - - protected final ObjectMapper objectMapper; - - public AbstrDockerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - checkNotNull(baseResource, "baseResource was not specified"); - checkNotNull(dockerClientConfig, "dockerClientConfig was not specified"); - this.baseResource = baseResource; - this.dockerClientConfig = dockerClientConfig; - this.objectMapper = dockerClientConfig.getObjectMapper(); - checkNotNull(objectMapper, "objectMapper was not specified"); - } - - protected WebTarget getBaseResource() { - return baseResource; - } - - protected AuthConfigurations getBuildAuthConfigs() { - return dockerClientConfig.getAuthConfigurations(); - } - - protected String registryAuth(AuthConfig authConfig) { - try { - return BaseEncoding.base64Url().encode(objectMapper.writeValueAsString(authConfig).getBytes()); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - protected Invocation.Builder resourceWithAuthConfig(AuthConfig authConfig, Invocation.Builder request) { - request = request.header("X-Registry-Auth", registryAuth(authConfig)); - return request; - } - - protected Invocation.Builder resourceWithOptionalAuthConfig(AuthConfig authConfig, Invocation.Builder request) { - if (authConfig != null) { - request = resourceWithAuthConfig(authConfig, request); - } - return request; - } - - protected String registryConfigs(AuthConfigurations authConfigs) { - try { - final String json; - final RemoteApiVersion apiVersion = dockerClientConfig.getApiVersion(); - - if (apiVersion.equals(UNKNOWN_VERSION)) { - ObjectNode rootNode = objectMapper.valueToTree(authConfigs.getConfigs()); // all registries - final ObjectNode authNodes = objectMapper.valueToTree(authConfigs); // wrapped in "configs":{} - rootNode.setAll(authNodes); // merge 2 variants - json = rootNode.toString(); - } else if (apiVersion.isGreaterOrEqual(VERSION_1_19)) { - json = objectMapper.writeValueAsString(authConfigs.getConfigs()); - } else { - json = objectMapper.writeValueAsString(authConfigs); - } - - return BaseEncoding.base64Url().encode(json.getBytes()); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - protected boolean bool(Boolean bool) { - return bool != null && bool; - } - - protected WebTarget booleanQueryParam(WebTarget webTarget, String name, Boolean value) { - if (bool(value)) { - webTarget = webTarget.queryParam(name, bool(value) + ""); - } - - return webTarget; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrSyncDockerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrSyncDockerCmdExec.java deleted file mode 100644 index ed7d3adf0..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AbstrSyncDockerCmdExec.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.ProcessingException; -import javax.ws.rs.client.WebTarget; - -import com.github.dockerjava.api.command.DockerCmd; -import com.github.dockerjava.api.command.DockerCmdSyncExec; -import com.github.dockerjava.api.exception.DockerException; -import com.github.dockerjava.core.DockerClientConfig; - -public abstract class AbstrSyncDockerCmdExec, RES_T> extends AbstrDockerCmdExec - implements DockerCmdSyncExec { - - public AbstrSyncDockerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - public RES_T exec(CMD_T command) { - // this hack works because of ResponseStatusExceptionFilter - try (CMD_T cmd = command) { - try { - return execute(cmd); - } catch (ProcessingException e) { - if (e.getCause() instanceof DockerException) { - throw (DockerException) e.getCause(); - } else { - throw e; - } - } - } - } - - protected abstract RES_T execute(CMD_T command); -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AttachContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AttachContainerCmdExec.java deleted file mode 100644 index 6131d48a1..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AttachContainerCmdExec.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.AttachContainerCmd; -import com.github.dockerjava.api.model.Frame; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.async.FrameStreamProcessor; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; -import com.github.dockerjava.jaxrs.async.POSTCallbackNotifier; - -public class AttachContainerCmdExec extends AbstrAsyncDockerCmdExec implements - AttachContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(AttachContainerCmdExec.class); - - public AttachContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected AbstractCallbackNotifier callbackNotifier(AttachContainerCmd command, - ResultCallback resultCallback) { - - if (command.getStdin() != null) { - throw new UnsupportedOperationException( - "Passing stdin to the container is currently not supported. Try experimental netty engine!"); - } - - WebTarget webTarget = getBaseResource().path("/containers/{id}/attach").resolveTemplate("id", - command.getContainerId()); - - webTarget = booleanQueryParam(webTarget, "logs", command.hasLogsEnabled()); - webTarget = booleanQueryParam(webTarget, "stdout", command.hasStdoutEnabled()); - webTarget = booleanQueryParam(webTarget, "stderr", command.hasStderrEnabled()); - webTarget = booleanQueryParam(webTarget, "stream", command.hasFollowStreamEnabled()); - - LOGGER.trace("POST: {}", webTarget); - - return new POSTCallbackNotifier<>(new FrameStreamProcessor(), resultCallback, webTarget.request(), null); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AuthCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AuthCmdExec.java deleted file mode 100644 index 6812e397a..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/AuthCmdExec.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.AuthCmd; -import com.github.dockerjava.api.exception.UnauthorizedException; -import com.github.dockerjava.api.model.AuthResponse; -import com.github.dockerjava.core.DockerClientConfig; - -public class AuthCmdExec extends AbstrSyncDockerCmdExec implements AuthCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(AuthCmdExec.class); - - public AuthCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected AuthResponse execute(AuthCmd command) { - WebTarget webResource = getBaseResource().path("/auth"); - LOGGER.trace("POST: {}", webResource); - Response response = webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command.getAuthConfig(), MediaType.APPLICATION_JSON)); - - if (response.getStatus() == 401) { - throw new UnauthorizedException("Unauthorized"); - } - - return response.readEntity(AuthResponse.class); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/BuildImageCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/BuildImageCmdExec.java deleted file mode 100644 index 20dd5396d..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/BuildImageCmdExec.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; -import static org.apache.commons.lang.StringUtils.isNotBlank; - -import javax.ws.rs.client.Invocation; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import com.github.dockerjava.core.util.CacheFromEncoder; -import org.glassfish.jersey.client.ClientProperties; -import org.glassfish.jersey.client.RequestEntityProcessing; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.BuildImageCmd; -import com.github.dockerjava.api.model.AuthConfigurations; -import com.github.dockerjava.api.model.BuildResponseItem; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.async.JsonStreamProcessor; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; -import com.github.dockerjava.jaxrs.async.POSTCallbackNotifier; - -import java.io.IOException; -import java.net.URLEncoder; -import java.util.Map; - -public class BuildImageCmdExec extends AbstrAsyncDockerCmdExec implements - BuildImageCmd.Exec { - private static final Logger LOGGER = LoggerFactory.getLogger(BuildImageCmdExec.class); - - public BuildImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - private Invocation.Builder resourceWithOptionalAuthConfig(BuildImageCmd command, Invocation.Builder request) { - final AuthConfigurations authConfigs = firstNonNull(command.getBuildAuthConfigs(), getBuildAuthConfigs()); - if (authConfigs != null && !authConfigs.getConfigs().isEmpty()) { - request = request.header("X-Registry-Config", registryConfigs(authConfigs)); - } - return request; - } - - private static AuthConfigurations firstNonNull(final AuthConfigurations fromCommand, - final AuthConfigurations fromConfig) { - if (fromCommand != null) { - return fromCommand; - } - if (fromConfig != null) { - return fromConfig; - } - return null; - } - - @Override - protected AbstractCallbackNotifier callbackNotifier(BuildImageCmd command, - ResultCallback resultCallback) { - - WebTarget webTarget = getBaseResource().path("/build"); - String dockerFilePath = command.getPathToDockerfile(); - - if (dockerFilePath != null && command.getRemote() == null && !"Dockerfile".equals(dockerFilePath)) { - webTarget = webTarget.queryParam("dockerfile", dockerFilePath); - } - - if (command.getTags() != null && !command.getTags().isEmpty()) { - for (String t : command.getTags()) { - webTarget = webTarget.queryParam("t", t); - } - } else if (isNotBlank(command.getTag())) { - webTarget = webTarget.queryParam("t", command.getTag()); - } - - if (command.getCacheFrom() != null && !command.getCacheFrom().isEmpty()) { - webTarget = webTarget.queryParam("cachefrom", CacheFromEncoder.jsonEncode(command.getCacheFrom())); - } - - if (command.getRemote() != null) { - webTarget = webTarget.queryParam("remote", command.getRemote().toString()); - } - - webTarget = booleanQueryParam(webTarget, "q", command.isQuiet()); - webTarget = booleanQueryParam(webTarget, "nocache", command.hasNoCacheEnabled()); - webTarget = booleanQueryParam(webTarget, "pull", command.hasPullEnabled()); - webTarget = booleanQueryParam(webTarget, "rm", command.hasRemoveEnabled()); - webTarget = booleanQueryParam(webTarget, "forcerm", command.isForcerm()); - - // this has to be handled differently as it should switch to 'false' - if (command.hasRemoveEnabled() == null || !command.hasRemoveEnabled()) { - webTarget = webTarget.queryParam("rm", "false"); - } - - if (command.getMemory() != null) { - webTarget = webTarget.queryParam("memory", command.getMemory()); - } - if (command.getMemswap() != null) { - webTarget = webTarget.queryParam("memswap", command.getMemswap()); - } - if (command.getCpushares() != null) { - webTarget = webTarget.queryParam("cpushares", command.getCpushares()); - } - if (command.getCpusetcpus() != null) { - webTarget = webTarget.queryParam("cpusetcpus", command.getCpusetcpus()); - } - - if (command.hasRemoveEnabled() == null || !command.hasRemoveEnabled()) { - webTarget = webTarget.queryParam("rm", "false"); - } - - webTarget = writeMap(webTarget, "buildargs", command.getBuildArgs()); - - if (command.getShmsize() != null) { - webTarget = webTarget.queryParam("shmsize", command.getShmsize()); - } - - webTarget = writeMap(webTarget, "labels", command.getLabels()); - - if (command.getNetworkMode() != null) { - webTarget = webTarget.queryParam("networkmode", command.getNetworkMode()); - } - - if (command.getPlatform() != null) { - webTarget = webTarget.queryParam("platform", command.getPlatform()); - } - - if (command.getTarget() != null) { - webTarget = webTarget.queryParam("target", command.getTarget()); - } - - webTarget.property(ClientProperties.REQUEST_ENTITY_PROCESSING, RequestEntityProcessing.CHUNKED); - webTarget.property(ClientProperties.CHUNKED_ENCODING_SIZE, 1024 * 1024); - - LOGGER.trace("POST: {}", webTarget); - - return new POSTCallbackNotifier<>(new JsonStreamProcessor<>(objectMapper, BuildResponseItem.class), - resultCallback, - resourceWithOptionalAuthConfig(command, webTarget.request()).accept(MediaType.TEXT_PLAIN), - entity(command.getTarInputStream(), "application/tar") - ); - } - - private WebTarget writeMap(WebTarget webTarget, String name, Map value) { - if (value != null && !value.isEmpty()) { - try { - return webTarget.queryParam(name, - URLEncoder.encode(objectMapper.writeValueAsString(value), "UTF-8").replaceAll("\\+", "%20")); - } catch (IOException e) { - throw new RuntimeException(e); - } - } else { - return webTarget; - } - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CommitCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CommitCmdExec.java deleted file mode 100644 index f9ed0d5df..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CommitCmdExec.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.github.dockerjava.api.command.CommitCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class CommitCmdExec extends AbstrSyncDockerCmdExec implements CommitCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(CommitCmdExec.class); - - public CommitCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected String execute(CommitCmd command) { - WebTarget webTarget = getBaseResource().path("/commit") - .queryParam("container", command.getContainerId()) - .queryParam("repo", command.getRepository()) - .queryParam("tag", command.getTag()) - .queryParam("m", command.getMessage()) - .queryParam("author", command.getAuthor()); - - webTarget = booleanQueryParam(webTarget, "pause", command.hasPauseEnabled()); - - LOGGER.trace("POST: {}", webTarget); - ObjectNode objectNode = webTarget.request().accept("application/vnd.docker.raw-stream") - .post(entity(command, MediaType.APPLICATION_JSON), ObjectNode.class); - return objectNode.get("Id").asText(); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ConnectToNetworkCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ConnectToNetworkCmdExec.java deleted file mode 100644 index 8a69b31fd..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ConnectToNetworkCmdExec.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.ConnectToNetworkCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class ConnectToNetworkCmdExec extends AbstrSyncDockerCmdExec - implements ConnectToNetworkCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(ConnectToNetworkCmdExec.class); - - public ConnectToNetworkCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(ConnectToNetworkCmd command) { - - WebTarget webTarget = getBaseResource().path("/networks/" + command.getNetworkId() + "/connect"); - - LOGGER.trace("POST: {}", webTarget); - webTarget.request().post(entity(command, MediaType.APPLICATION_JSON)); - - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ContainerDiffCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ContainerDiffCmdExec.java deleted file mode 100644 index 29cbeebf7..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ContainerDiffCmdExec.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import java.util.List; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.ContainerDiffCmd; -import com.github.dockerjava.api.model.ChangeLog; -import com.github.dockerjava.core.DockerClientConfig; - -public class ContainerDiffCmdExec extends AbstrSyncDockerCmdExec> implements - ContainerDiffCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(ContainerDiffCmdExec.class); - - public ContainerDiffCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected List execute(ContainerDiffCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/changes").resolveTemplate("id", - command.getContainerId()); - - LOGGER.trace("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(new GenericType>() { - }); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyArchiveFromContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyArchiveFromContainerCmdExec.java deleted file mode 100644 index 7b6a6e2f4..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyArchiveFromContainerCmdExec.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import java.io.InputStream; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.Response; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.jaxrs.util.WrappedResponseInputStream; - -public class CopyArchiveFromContainerCmdExec extends AbstrSyncDockerCmdExec - implements CopyArchiveFromContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(CopyArchiveFromContainerCmdExec.class); - - public CopyArchiveFromContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected InputStream execute(CopyArchiveFromContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/archive").resolveTemplate("id", - command.getContainerId()); - - LOGGER.trace("Get: " + webResource.toString()); - - Response response = webResource.queryParam("path", command.getResource()).request().accept("application/x-tar") - .get(); - - return new WrappedResponseInputStream(response); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyArchiveToContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyArchiveToContainerCmdExec.java deleted file mode 100644 index b38d337a8..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyArchiveToContainerCmdExec.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; - -import java.io.InputStream; - -import javax.ws.rs.client.WebTarget; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.CopyArchiveToContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class CopyArchiveToContainerCmdExec extends AbstrSyncDockerCmdExec implements - CopyArchiveToContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(CopyArchiveFromContainerCmdExec.class); - - public CopyArchiveToContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(CopyArchiveToContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/archive").resolveTemplate("id", - command.getContainerId()); - - LOGGER.trace("PUT: " + webResource.toString()); - InputStream streamToUpload = command.getTarInputStream(); - webResource.queryParam("path", command.getRemotePath()) - .queryParam("noOverwriteDirNonDir", command.isNoOverwriteDirNonDir()).request() - .put(entity(streamToUpload, "application/x-tar")).close(); - return null; - - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyFileFromContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyFileFromContainerCmdExec.java deleted file mode 100644 index 6afffe0c4..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CopyFileFromContainerCmdExec.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; - -import java.io.InputStream; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.CopyFileFromContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.jaxrs.util.WrappedResponseInputStream; - -public class CopyFileFromContainerCmdExec extends AbstrSyncDockerCmdExec - implements CopyFileFromContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(CopyFileFromContainerCmdExec.class); - - public CopyFileFromContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected InputStream execute(CopyFileFromContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/copy").resolveTemplate("id", - command.getContainerId()); - - LOGGER.trace("POST: " + webResource.toString()); - - Response response = webResource.request().accept(MediaType.APPLICATION_OCTET_STREAM_TYPE) - .post(entity(command, MediaType.APPLICATION_JSON)); - - return new WrappedResponseInputStream(response); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateContainerCmdExec.java deleted file mode 100644 index 527b3954f..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateContainerCmdExec.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.CreateContainerCmd; -import com.github.dockerjava.api.command.CreateContainerResponse; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class CreateContainerCmdExec extends AbstrSyncDockerCmdExec - implements CreateContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(CreateContainerCmdExec.class); - - public CreateContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected CreateContainerResponse execute(CreateContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/create"); - - if (command.getName() != null) { - webResource = webResource.queryParam("name", command.getName()); - } - - LOGGER.trace("POST: {} ", webResource); - return resourceWithOptionalAuthConfig(command.getAuthConfig(), webResource.request()).accept(MediaType.APPLICATION_JSON) - .post(entity(command, MediaType.APPLICATION_JSON), CreateContainerResponse.class); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateImageCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateImageCmdExec.java deleted file mode 100644 index dc1c9e1af..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateImageCmdExec.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.CreateImageCmd; -import com.github.dockerjava.api.command.CreateImageResponse; -import com.github.dockerjava.core.DockerClientConfig; - -public class CreateImageCmdExec extends AbstrSyncDockerCmdExec implements - CreateImageCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(CreateImageCmdExec.class); - - public CreateImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected CreateImageResponse execute(CreateImageCmd command) { - WebTarget webResource = getBaseResource().path("/images/create").queryParam("repo", command.getRepository()) - .queryParam("tag", command.getTag()).queryParam("fromSrc", "-"); - - if (command.getPlatform() != null) { - webResource = webResource.queryParam("platform", command.getPlatform()); - } - - LOGGER.trace("POST: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_OCTET_STREAM_TYPE) - .post(entity(command.getImageStream(), MediaType.APPLICATION_OCTET_STREAM), CreateImageResponse.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateNetworkCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateNetworkCmdExec.java deleted file mode 100644 index 14f22b502..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateNetworkCmdExec.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.CreateNetworkCmd; -import com.github.dockerjava.api.command.CreateNetworkResponse; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class CreateNetworkCmdExec extends AbstrSyncDockerCmdExec implements - CreateNetworkCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(CreateNetworkCmdExec.class); - - public CreateNetworkCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected CreateNetworkResponse execute(CreateNetworkCmd command) { - WebTarget webResource = getBaseResource().path("/networks/create"); - - LOGGER.trace("POST: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command, MediaType.APPLICATION_JSON), CreateNetworkResponse.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateSecretCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateSecretCmdExec.java deleted file mode 100644 index db85900de..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateSecretCmdExec.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.CreateSecretCmd; -import com.github.dockerjava.api.command.CreateSecretResponse; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class CreateSecretCmdExec extends AbstrSyncDockerCmdExec - implements CreateSecretCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(CreateSecretCmdExec.class); - - public CreateSecretCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected CreateSecretResponse execute(CreateSecretCmd command) { - WebTarget webResource = getBaseResource().path("/secrets/create"); - - - LOGGER.trace("POST: {} ", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command.getSecretSpec(), MediaType.APPLICATION_JSON), CreateSecretResponse.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateServiceCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateServiceCmdExec.java deleted file mode 100644 index aa000e71a..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateServiceCmdExec.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.CreateServiceCmd; -import com.github.dockerjava.api.command.CreateServiceResponse; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class CreateServiceCmdExec extends AbstrSyncDockerCmdExec - implements CreateServiceCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(CreateServiceCmdExec.class); - - public CreateServiceCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected CreateServiceResponse execute(CreateServiceCmd command) { - WebTarget webResource = getBaseResource().path("/services/create"); - - LOGGER.trace("POST: {} ", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command.getServiceSpec(), MediaType.APPLICATION_JSON), CreateServiceResponse.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateVolumeCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateVolumeCmdExec.java deleted file mode 100644 index c71d2297e..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/CreateVolumeCmdExec.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.CreateVolumeCmd; -import com.github.dockerjava.api.command.CreateVolumeResponse; -import com.github.dockerjava.core.DockerClientConfig; - -public class CreateVolumeCmdExec extends AbstrSyncDockerCmdExec implements - CreateVolumeCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(CreateVolumeCmdExec.class); - - public CreateVolumeCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected CreateVolumeResponse execute(CreateVolumeCmd command) { - WebTarget webResource = getBaseResource().path("/volumes/create"); - - LOGGER.trace("POST: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command, MediaType.APPLICATION_JSON), CreateVolumeResponse.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/DisconnectFromNetworkCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/DisconnectFromNetworkCmdExec.java deleted file mode 100644 index 95c3f5c22..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/DisconnectFromNetworkCmdExec.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.DisconnectFromNetworkCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class DisconnectFromNetworkCmdExec extends AbstrSyncDockerCmdExec - implements DisconnectFromNetworkCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(DisconnectFromNetworkCmdExec.class); - - public DisconnectFromNetworkCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(DisconnectFromNetworkCmd command) { - - WebTarget webTarget = getBaseResource().path("/networks/" + command.getNetworkId() + "/disconnect"); - - LOGGER.trace("POST: {}", webTarget); - webTarget.request().post(entity(command, MediaType.APPLICATION_JSON)); - - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/EventsCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/EventsCmdExec.java deleted file mode 100644 index d6cb6aeed..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/EventsCmdExec.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; - -import javax.ws.rs.client.WebTarget; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.EventsCmd; -import com.github.dockerjava.api.model.Event; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.async.JsonStreamProcessor; -import com.github.dockerjava.core.util.FiltersEncoder; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; -import com.github.dockerjava.jaxrs.async.GETCallbackNotifier; - -public class EventsCmdExec extends AbstrAsyncDockerCmdExec implements EventsCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(EventsCmdExec.class); - - public EventsCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected AbstractCallbackNotifier callbackNotifier(EventsCmd command, ResultCallback resultCallback) { - WebTarget webTarget = getBaseResource().path("/events").queryParam("since", command.getSince()) - .queryParam("until", command.getUntil()); - - if (command.getFilters() != null && !command.getFilters().isEmpty()) { - webTarget = webTarget - .queryParam("filters", urlPathSegmentEscaper().escape(FiltersEncoder.jsonEncode(command.getFilters()))); - } - - LOGGER.trace("GET: {}", webTarget); - - return new GETCallbackNotifier<>(new JsonStreamProcessor<>(objectMapper, Event.class), resultCallback, - webTarget.request()); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ExecCreateCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ExecCreateCmdExec.java deleted file mode 100644 index 4de6eedd2..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ExecCreateCmdExec.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.ExecCreateCmd; -import com.github.dockerjava.api.command.ExecCreateCmdResponse; -import com.github.dockerjava.core.DockerClientConfig; - -public class ExecCreateCmdExec extends AbstrSyncDockerCmdExec implements - ExecCreateCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(VersionCmdExec.class); - - public ExecCreateCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected ExecCreateCmdResponse execute(ExecCreateCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/exec").resolveTemplate("id", - command.getContainerId()); - - LOGGER.trace("POST: {}", webResource); - - return webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command, MediaType.APPLICATION_JSON), ExecCreateCmdResponse.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ExecStartCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ExecStartCmdExec.java deleted file mode 100644 index 291cc2212..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ExecStartCmdExec.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.ExecStartCmd; -import com.github.dockerjava.api.model.Frame; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.async.FrameStreamProcessor; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; -import com.github.dockerjava.jaxrs.async.POSTCallbackNotifier; - -public class ExecStartCmdExec extends AbstrAsyncDockerCmdExec implements ExecStartCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(ExecStartCmdExec.class); - - public ExecStartCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected AbstractCallbackNotifier callbackNotifier(ExecStartCmd command, - ResultCallback resultCallback) { - WebTarget webTarget = getBaseResource().path("/exec/{id}/start").resolveTemplate("id", command.getExecId()); - - LOGGER.trace("POST: {}", webTarget); - - return new POSTCallbackNotifier<>(new FrameStreamProcessor(), resultCallback, webTarget.request().accept( - MediaType.APPLICATION_JSON), entity(command, MediaType.APPLICATION_JSON)); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InfoCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InfoCmdExec.java deleted file mode 100644 index c544571ef..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InfoCmdExec.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.InfoCmd; -import com.github.dockerjava.api.model.Info; -import com.github.dockerjava.core.DockerClientConfig; - -public class InfoCmdExec extends AbstrSyncDockerCmdExec implements InfoCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(InfoCmdExec.class); - - public InfoCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Info execute(InfoCmd command) { - WebTarget webResource = getBaseResource().path("/info"); - - LOGGER.trace("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(Info.class); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InitializeSwarmCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InitializeSwarmCmdExec.java deleted file mode 100644 index b3cdc83d4..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InitializeSwarmCmdExec.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.dockerjava.jaxrs; - - -import com.github.dockerjava.api.command.InitializeSwarmCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class InitializeSwarmCmdExec extends AbstrSyncDockerCmdExec - implements InitializeSwarmCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(InitializeSwarmCmdExec.class); - - public InitializeSwarmCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(InitializeSwarmCmd command) { - WebTarget webResource = getBaseResource().path("/swarm/init"); - - LOGGER.trace("POST: {} ", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command, MediaType.APPLICATION_JSON)).close(); - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectContainerCmdExec.java deleted file mode 100644 index 0599f04a1..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectContainerCmdExec.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.InspectContainerCmd; -import com.github.dockerjava.api.command.InspectContainerResponse; -import com.github.dockerjava.core.DockerClientConfig; - -public class InspectContainerCmdExec extends AbstrSyncDockerCmdExec - implements InspectContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(InspectContainerCmdExec.class); - - public InspectContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected InspectContainerResponse execute(InspectContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/json") - .resolveTemplate("id", command.getContainerId()); - - webResource = booleanQueryParam(webResource, "size", command.getSize()); - - LOGGER.debug("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(InspectContainerResponse.class); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectExecCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectExecCmdExec.java deleted file mode 100644 index 4290d0371..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectExecCmdExec.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.InspectExecCmd; -import com.github.dockerjava.api.command.InspectExecResponse; -import com.github.dockerjava.core.DockerClientConfig; - -public class InspectExecCmdExec extends AbstrSyncDockerCmdExec implements - InspectExecCmd.Exec { - private static final Logger LOGGER = LoggerFactory.getLogger(InspectExecCmdExec.class); - - public InspectExecCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected InspectExecResponse execute(InspectExecCmd command) { - WebTarget webResource = getBaseResource().path("/exec/{id}/json").resolveTemplate("id", command.getExecId()); - LOGGER.debug("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(InspectExecResponse.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectImageCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectImageCmdExec.java deleted file mode 100644 index c1ef42424..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectImageCmdExec.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.InspectImageCmd; -import com.github.dockerjava.api.command.InspectImageResponse; -import com.github.dockerjava.core.DockerClientConfig; - -public class InspectImageCmdExec extends AbstrSyncDockerCmdExec implements - InspectImageCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(InspectImageCmdExec.class); - - public InspectImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected InspectImageResponse execute(InspectImageCmd command) { - WebTarget webResource = getBaseResource().path("/images/{id}/json").resolveTemplate("id", command.getImageId()); - - LOGGER.trace("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(InspectImageResponse.class); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectNetworkCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectNetworkCmdExec.java deleted file mode 100644 index c9b19f881..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectNetworkCmdExec.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.InspectNetworkCmd; -import com.github.dockerjava.api.model.Network; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -public class InspectNetworkCmdExec extends AbstrSyncDockerCmdExec implements InspectNetworkCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(ListNetworksCmdExec.class); - - public InspectNetworkCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Network execute(InspectNetworkCmd command) { - - WebTarget webResource = getBaseResource().path("/networks/{id}").resolveTemplate("id", - command.getNetworkId()); - - LOGGER.debug("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(Network.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectServiceCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectServiceCmdExec.java deleted file mode 100644 index 480103b43..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectServiceCmdExec.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.InspectServiceCmd; -import com.github.dockerjava.api.model.Service; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -public class InspectServiceCmdExec extends AbstrSyncDockerCmdExec - implements InspectServiceCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(InspectServiceCmdExec.class); - - public InspectServiceCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Service execute(InspectServiceCmd command) { - WebTarget webResource = getBaseResource().path("/services/{id}") - .resolveTemplate("id", command.getServiceId()); - - LOGGER.debug("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(Service.class); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectSwarmCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectSwarmCmdExec.java deleted file mode 100644 index 87aa167c6..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectSwarmCmdExec.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.github.dockerjava.jaxrs; - - -import com.github.dockerjava.api.command.InspectSwarmCmd; -import com.github.dockerjava.api.model.Swarm; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -public class InspectSwarmCmdExec extends AbstrSyncDockerCmdExec - implements InspectSwarmCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(InspectSwarmCmdExec.class); - - public InspectSwarmCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Swarm execute(InspectSwarmCmd command) { - WebTarget webResource = getBaseResource().path("/swarm"); - - LOGGER.debug("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(Swarm.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectSwarmNodeCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectSwarmNodeCmdExec.java deleted file mode 100644 index ff0075271..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectSwarmNodeCmdExec.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.dockerjava.jaxrs; - - -import com.github.dockerjava.api.command.InspectSwarmNodeCmd; -import com.github.dockerjava.api.model.SwarmNode; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -public class InspectSwarmNodeCmdExec extends AbstrSyncDockerCmdExec - implements InspectSwarmNodeCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(InspectSwarmNodeCmdExec.class); - - public InspectSwarmNodeCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected SwarmNode execute(InspectSwarmNodeCmd command) { - WebTarget webResource = getBaseResource().path("/nodes/{id}") - .resolveTemplate("id", command.getSwarmNodeId()); - - LOGGER.debug("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(SwarmNode.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectVolumeCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectVolumeCmdExec.java deleted file mode 100644 index 9ca2ac02a..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/InspectVolumeCmdExec.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.InspectVolumeCmd; -import com.github.dockerjava.api.command.InspectVolumeResponse; -import com.github.dockerjava.core.DockerClientConfig; - -public class InspectVolumeCmdExec extends AbstrSyncDockerCmdExec implements - InspectVolumeCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(InspectVolumeCmdExec.class); - - public InspectVolumeCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected InspectVolumeResponse execute(InspectVolumeCmd command) { - WebTarget webResource = getBaseResource().path("/volumes/{name}").resolveTemplate("name", command.getName()); - - LOGGER.trace("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(InspectVolumeResponse.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java index 461899290..a83afd7e1 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java @@ -1,81 +1,9 @@ package com.github.dockerjava.jaxrs; import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; -import com.github.dockerjava.api.command.AttachContainerCmd; -import com.github.dockerjava.api.command.AuthCmd; -import com.github.dockerjava.api.command.BuildImageCmd; -import com.github.dockerjava.api.command.CommitCmd; -import com.github.dockerjava.api.command.ConnectToNetworkCmd; -import com.github.dockerjava.api.command.ContainerDiffCmd; -import com.github.dockerjava.api.command.CopyArchiveFromContainerCmd; -import com.github.dockerjava.api.command.CopyArchiveToContainerCmd; -import com.github.dockerjava.api.command.CopyFileFromContainerCmd; -import com.github.dockerjava.api.command.CreateContainerCmd; -import com.github.dockerjava.api.command.CreateImageCmd; -import com.github.dockerjava.api.command.CreateNetworkCmd; -import com.github.dockerjava.api.command.CreateSecretCmd; -import com.github.dockerjava.api.command.CreateServiceCmd; -import com.github.dockerjava.api.command.CreateVolumeCmd; -import com.github.dockerjava.api.command.DisconnectFromNetworkCmd; -import com.github.dockerjava.api.command.DockerCmdExecFactory; -import com.github.dockerjava.api.command.EventsCmd; -import com.github.dockerjava.api.command.ExecCreateCmd; -import com.github.dockerjava.api.command.ExecStartCmd; -import com.github.dockerjava.api.command.InfoCmd; -import com.github.dockerjava.api.command.InitializeSwarmCmd; -import com.github.dockerjava.api.command.InspectContainerCmd; -import com.github.dockerjava.api.command.InspectExecCmd; -import com.github.dockerjava.api.command.InspectImageCmd; -import com.github.dockerjava.api.command.InspectNetworkCmd; -import com.github.dockerjava.api.command.InspectServiceCmd; -import com.github.dockerjava.api.command.InspectSwarmCmd; -import com.github.dockerjava.api.command.InspectSwarmNodeCmd; -import com.github.dockerjava.api.command.InspectVolumeCmd; -import com.github.dockerjava.api.command.JoinSwarmCmd; -import com.github.dockerjava.api.command.KillContainerCmd; -import com.github.dockerjava.api.command.LeaveSwarmCmd; -import com.github.dockerjava.api.command.ListContainersCmd; -import com.github.dockerjava.api.command.ListImagesCmd; -import com.github.dockerjava.api.command.ListNetworksCmd; -import com.github.dockerjava.api.command.ListSecretsCmd; -import com.github.dockerjava.api.command.ListServicesCmd; -import com.github.dockerjava.api.command.ListSwarmNodesCmd; -import com.github.dockerjava.api.command.ListTasksCmd; -import com.github.dockerjava.api.command.ListVolumesCmd; -import com.github.dockerjava.api.command.LoadImageCmd; -import com.github.dockerjava.api.command.LogContainerCmd; -import com.github.dockerjava.api.command.LogSwarmObjectCmd; -import com.github.dockerjava.api.command.PauseContainerCmd; -import com.github.dockerjava.api.command.PingCmd; -import com.github.dockerjava.api.command.PruneCmd; -import com.github.dockerjava.api.command.PullImageCmd; -import com.github.dockerjava.api.command.PushImageCmd; -import com.github.dockerjava.api.command.RemoveContainerCmd; -import com.github.dockerjava.api.command.RemoveImageCmd; -import com.github.dockerjava.api.command.RemoveNetworkCmd; -import com.github.dockerjava.api.command.RemoveSecretCmd; -import com.github.dockerjava.api.command.RemoveServiceCmd; -import com.github.dockerjava.api.command.RemoveSwarmNodeCmd; -import com.github.dockerjava.api.command.RemoveVolumeCmd; -import com.github.dockerjava.api.command.RenameContainerCmd; -import com.github.dockerjava.api.command.RestartContainerCmd; -import com.github.dockerjava.api.command.SaveImageCmd; -import com.github.dockerjava.api.command.SearchImagesCmd; -import com.github.dockerjava.api.command.StartContainerCmd; -import com.github.dockerjava.api.command.StatsCmd; -import com.github.dockerjava.api.command.StopContainerCmd; -import com.github.dockerjava.api.command.TagImageCmd; -import com.github.dockerjava.api.command.TopContainerCmd; -import com.github.dockerjava.api.command.UnpauseContainerCmd; -import com.github.dockerjava.api.command.UpdateContainerCmd; -import com.github.dockerjava.api.command.UpdateServiceCmd; -import com.github.dockerjava.api.command.UpdateSwarmCmd; -import com.github.dockerjava.api.command.UpdateSwarmNodeCmd; -import com.github.dockerjava.api.command.VersionCmd; -import com.github.dockerjava.api.command.WaitContainerCmd; import com.github.dockerjava.api.exception.DockerClientException; +import com.github.dockerjava.core.AbstractDockerCmdExecFactory; import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.DockerClientConfigAware; import com.github.dockerjava.core.SSLConfig; import com.github.dockerjava.jaxrs.filter.JsonClientFilter; import com.github.dockerjava.jaxrs.filter.ResponseStatusExceptionFilter; @@ -100,7 +28,6 @@ import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.ClientRequestFilter; import javax.ws.rs.client.ClientResponseFilter; -import javax.ws.rs.client.WebTarget; import java.io.IOException; import java.net.InetSocketAddress; import java.net.Proxy; @@ -115,13 +42,13 @@ //import org.glassfish.jersey.apache.connector.ApacheConnectorProvider; // see https://github.com/docker-java/docker-java/issues/196 -public class JerseyDockerCmdExecFactory implements DockerCmdExecFactory, DockerClientConfigAware { +public class JerseyDockerCmdExecFactory extends AbstractDockerCmdExecFactory { private static final Logger LOGGER = LoggerFactory.getLogger(JerseyDockerCmdExecFactory.class.getName()); private Client client; - private WebTarget baseResource; + private JerseyWebTarget baseResource; private Integer readTimeout = null; @@ -261,7 +188,13 @@ public void shutdown() { client = clientBuilder.build(); - baseResource = client.target(sanitizeUrl(originalUri).toString()).path(dockerClientConfig.getApiVersion().asWebPathPart()); + baseResource = new JerseyWebTarget( + dockerClientConfig.getObjectMapper(), + client.target(sanitizeUrl(originalUri).toString()) + .path(dockerClientConfig.getApiVersion().asWebPathPart()) + ); + + super.init(dockerClientConfig); } private URI sanitizeUrl(URI originalUri) { @@ -306,7 +239,7 @@ private org.apache.http.config.Registry getSchemeRegist return registryBuilder.build(); } - protected WebTarget getBaseResource() { + protected JerseyWebTarget getBaseResource() { checkNotNull(baseResource, "Factory not initialized, baseResource not set. You probably forgot to call init()!"); return baseResource; } @@ -317,368 +250,6 @@ protected DockerClientConfig getDockerClientConfig() { return dockerClientConfig; } - @Override - public AuthCmd.Exec createAuthCmdExec() { - return new AuthCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public InfoCmd.Exec createInfoCmdExec() { - return new InfoCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public PingCmd.Exec createPingCmdExec() { - return new PingCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public VersionCmd.Exec createVersionCmdExec() { - return new VersionCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public PullImageCmd.Exec createPullImageCmdExec() { - return new PullImageCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public PushImageCmd.Exec createPushImageCmdExec() { - return new PushImageCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public SaveImageCmd.Exec createSaveImageCmdExec() { - return new SaveImageCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public CreateImageCmd.Exec createCreateImageCmdExec() { - return new CreateImageCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public LoadImageCmd.Exec createLoadImageCmdExec() { - return new LoadImageCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public SearchImagesCmd.Exec createSearchImagesCmdExec() { - return new SearchImagesCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public RemoveImageCmd.Exec createRemoveImageCmdExec() { - return new RemoveImageCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public ListImagesCmd.Exec createListImagesCmdExec() { - return new ListImagesCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public InspectImageCmd.Exec createInspectImageCmdExec() { - return new InspectImageCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public ListContainersCmd.Exec createListContainersCmdExec() { - return new ListContainersCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public CreateContainerCmd.Exec createCreateContainerCmdExec() { - return new CreateContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public StartContainerCmd.Exec createStartContainerCmdExec() { - return new StartContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public InspectContainerCmd.Exec createInspectContainerCmdExec() { - return new InspectContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public ExecCreateCmd.Exec createExecCmdExec() { - return new ExecCreateCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public RemoveContainerCmd.Exec createRemoveContainerCmdExec() { - return new RemoveContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public WaitContainerCmd.Exec createWaitContainerCmdExec() { - return new WaitContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public AttachContainerCmd.Exec createAttachContainerCmdExec() { - return new AttachContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public ExecStartCmd.Exec createExecStartCmdExec() { - return new ExecStartCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public InspectExecCmd.Exec createInspectExecCmdExec() { - return new InspectExecCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public LogContainerCmd.Exec createLogContainerCmdExec() { - return new LogContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public CopyArchiveFromContainerCmd.Exec createCopyArchiveFromContainerCmdExec() { - return new CopyArchiveFromContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public CopyFileFromContainerCmd.Exec createCopyFileFromContainerCmdExec() { - return new CopyFileFromContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public CopyArchiveToContainerCmd.Exec createCopyArchiveToContainerCmdExec() { - return new CopyArchiveToContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public StopContainerCmd.Exec createStopContainerCmdExec() { - return new StopContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public ContainerDiffCmd.Exec createContainerDiffCmdExec() { - return new ContainerDiffCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public KillContainerCmd.Exec createKillContainerCmdExec() { - return new KillContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public UpdateContainerCmd.Exec createUpdateContainerCmdExec() { - return new UpdateContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public RenameContainerCmd.Exec createRenameContainerCmdExec() { - return new RenameContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public RestartContainerCmd.Exec createRestartContainerCmdExec() { - return new RestartContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public CommitCmd.Exec createCommitCmdExec() { - return new CommitCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public BuildImageCmd.Exec createBuildImageCmdExec() { - return new BuildImageCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public TopContainerCmd.Exec createTopContainerCmdExec() { - return new TopContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public TagImageCmd.Exec createTagImageCmdExec() { - return new TagImageCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public PauseContainerCmd.Exec createPauseContainerCmdExec() { - return new PauseContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public UnpauseContainerCmd.Exec createUnpauseContainerCmdExec() { - return new UnpauseContainerCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public EventsCmd.Exec createEventsCmdExec() { - return new EventsCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public StatsCmd.Exec createStatsCmdExec() { - return new StatsCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public CreateVolumeCmd.Exec createCreateVolumeCmdExec() { - return new CreateVolumeCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public InspectVolumeCmd.Exec createInspectVolumeCmdExec() { - return new InspectVolumeCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public RemoveVolumeCmd.Exec createRemoveVolumeCmdExec() { - return new RemoveVolumeCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public ListVolumesCmd.Exec createListVolumesCmdExec() { - return new ListVolumesCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public ListNetworksCmd.Exec createListNetworksCmdExec() { - return new ListNetworksCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public InspectNetworkCmd.Exec createInspectNetworkCmdExec() { - - return new InspectNetworkCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public CreateNetworkCmd.Exec createCreateNetworkCmdExec() { - - return new CreateNetworkCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public RemoveNetworkCmd.Exec createRemoveNetworkCmdExec() { - - return new RemoveNetworkCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public ConnectToNetworkCmd.Exec createConnectToNetworkCmdExec() { - - return new ConnectToNetworkCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public DisconnectFromNetworkCmd.Exec createDisconnectFromNetworkCmdExec() { - - return new DisconnectFromNetworkCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public InitializeSwarmCmd.Exec createInitializeSwarmCmdExec() { - return new InitializeSwarmCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public InspectSwarmCmd.Exec createInspectSwarmCmdExec() { - return new InspectSwarmCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public JoinSwarmCmd.Exec createJoinSwarmCmdExec() { - return new JoinSwarmCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public LeaveSwarmCmd.Exec createLeaveSwarmCmdExec() { - return new LeaveSwarmCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public UpdateSwarmCmd.Exec createUpdateSwarmCmdExec() { - return new UpdateSwarmCmdExec(getBaseResource(), getDockerClientConfig()); - } - - // service - @Override - public ListServicesCmd.Exec createListServicesCmdExec() { - return new ListServicesCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public CreateServiceCmd.Exec createCreateServiceCmdExec() { - return new CreateServiceCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public InspectServiceCmd.Exec createInspectServiceCmdExec() { - return new InspectServiceCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public UpdateServiceCmd.Exec createUpdateServiceCmdExec() { - return new UpdateServiceCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public RemoveServiceCmd.Exec createRemoveServiceCmdExec() { - return new RemoveServiceCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public LogSwarmObjectCmd.Exec logSwarmObjectExec(String endpoint) { - return new LogSwarmObjectExec(getBaseResource(), getDockerClientConfig(), endpoint); - } - - //node - @Override - public ListSwarmNodesCmd.Exec listSwarmNodeCmdExec() { - return new ListSwarmNodesCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public InspectSwarmNodeCmd.Exec inspectSwarmNodeCmdExec() { - return new InspectSwarmNodeCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public RemoveSwarmNodeCmd.Exec removeSwarmNodeCmdExec() { - return new RemoveSwarmNodeCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public UpdateSwarmNodeCmd.Exec updateSwarmNodeCmdExec() { - return new UpdateSwarmNodeCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public ListTasksCmd.Exec listTasksCmdExec() { - return new ListTasksCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public PruneCmd.Exec pruneCmdExec() { - return new PruneCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public ListSecretsCmd.Exec createListSecretsCmdExec() { - return new ListSecretsCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public CreateSecretCmd.Exec createCreateSecretCmdExec() { - return new CreateSecretCmdExec(getBaseResource(), getDockerClientConfig()); - } - - @Override - public RemoveSecretCmd.Exec createRemoveSecretCmdExec() { - return new RemoveSecretCmdExec(getBaseResource(), getDockerClientConfig()); - } - @Override public void close() throws IOException { checkNotNull(client, "Factory not initialized. You probably forgot to call init()!"); diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java new file mode 100644 index 000000000..407b4bd77 --- /dev/null +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java @@ -0,0 +1,194 @@ +package com.github.dockerjava.jaxrs; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.dockerjava.api.async.ResultCallback; +import com.github.dockerjava.api.exception.UnauthorizedException; +import com.github.dockerjava.api.model.Frame; +import com.github.dockerjava.core.InvocationBuilder; +import com.github.dockerjava.core.MediaType; +import com.github.dockerjava.core.async.FrameStreamProcessor; +import com.github.dockerjava.core.async.JsonStreamProcessor; +import com.github.dockerjava.jaxrs.async.GETCallbackNotifier; +import com.github.dockerjava.jaxrs.async.POSTCallbackNotifier; +import com.github.dockerjava.jaxrs.util.WrappedResponseInputStream; + +import javax.ws.rs.client.Entity; +import javax.ws.rs.client.Invocation; +import javax.ws.rs.core.Response; +import java.io.InputStream; + +class JerseyInvocationBuilder implements InvocationBuilder { + + private final ObjectMapper objectMapper; + + private final Invocation.Builder resource; + + JerseyInvocationBuilder(ObjectMapper objectMapper, Invocation.Builder resource) { + this.objectMapper = objectMapper; + this.resource = resource; + } + + @Override + public InvocationBuilder accept(MediaType mediaType) { + resource.accept(mediaType.getMediaType()); + return this; + } + + @Override + public InvocationBuilder header(String name, String value) { + resource.header(name, value); + return this; + } + + @Override + public void delete() { + resource.delete().close(); + } + + @Override + public void get(ResultCallback resultCallback) { + try { + GETCallbackNotifier getCallbackNotifier = new GETCallbackNotifier( + new FrameStreamProcessor(), + resultCallback, + resource + ); + getCallbackNotifier.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public T get(TypeReference typeReference) { + try { + return (T) resource.get(Class.forName(typeReference.getType().getTypeName())); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + + @Override + public void get(TypeReference typeReference, ResultCallback resultCallback) { + try { + GETCallbackNotifier getCallbackNotifier = new GETCallbackNotifier( + new JsonStreamProcessor(objectMapper, Class.forName(typeReference.getType().getTypeName())), + resultCallback, + resource + ); + getCallbackNotifier.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public InputStream post(Object entity) { + return new WrappedResponseInputStream(resource.post( + toEntity(entity, javax.ws.rs.core.MediaType.APPLICATION_JSON) + )); + } + + @Override + public void post(Object entity, InputStream stdin, ResultCallback resultCallback) { + if (stdin != null) { + throw new UnsupportedOperationException("Passing stdin to the container is currently not supported."); + } + + POSTCallbackNotifier postCallbackNotifier = new POSTCallbackNotifier<>( + new FrameStreamProcessor(), + resultCallback, + resource, + toEntity(entity, javax.ws.rs.core.MediaType.APPLICATION_JSON) + ); + + try { + postCallbackNotifier.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public T post(Object entity, TypeReference typeReference) { + Response response = resource.post( + toEntity(entity, javax.ws.rs.core.MediaType.APPLICATION_JSON) + ); + + if (response.getStatus() == 401) { + throw new UnauthorizedException("Unauthorized"); + } + + try { + return (T) response.readEntity(Class.forName(typeReference.getType().getTypeName())); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + + @Override + public void post(Object entity, TypeReference typeReference, ResultCallback resultCallback) { + try { + POSTCallbackNotifier postCallbackNotifier = new POSTCallbackNotifier<>( + new JsonStreamProcessor<>(objectMapper, Class.forName(typeReference.getType().getTypeName())), + (ResultCallback) resultCallback, + resource, + toEntity(entity, javax.ws.rs.core.MediaType.APPLICATION_JSON) + ); + postCallbackNotifier.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public T post(TypeReference typeReference, InputStream body) { + try { + return (T) resource.post( + toEntity(body, javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM), + Class.forName(typeReference.getType().getTypeName()) + ); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + } + + @Override + public void post(TypeReference typeReference, ResultCallback resultCallback, InputStream body) { + try { + POSTCallbackNotifier postCallbackNotifier = new POSTCallbackNotifier( + new JsonStreamProcessor(objectMapper, Class.forName(typeReference.getType().getTypeName())), + resultCallback, + resource, + toEntity(body, "application/tar") + ); + postCallbackNotifier.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public void postStream(InputStream body) { + resource.post(toEntity(body, javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM)).close(); + } + + @Override + public InputStream get() { + return new WrappedResponseInputStream(resource.get()); + } + + @Override + public void put(InputStream body, MediaType mediaType) { + resource.put(toEntity(body, mediaType.getMediaType())).close(); + } + + private static Entity toEntity(T entity, String mediaType) { + if (entity == null) { + return null; + } + + return Entity.entity(entity, mediaType); + } +} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyWebTarget.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyWebTarget.java new file mode 100644 index 000000000..a1162be4f --- /dev/null +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyWebTarget.java @@ -0,0 +1,74 @@ +package com.github.dockerjava.jaxrs; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.dockerjava.core.InvocationBuilder; +import com.github.dockerjava.core.WebTarget; + +import java.io.IOException; +import java.util.Map; +import java.util.Set; + +class JerseyWebTarget implements WebTarget { + + private static final String PATH_SEPARATOR = "/"; + + private final ObjectMapper objectMapper; + + private final javax.ws.rs.client.WebTarget webTarget; + + JerseyWebTarget(ObjectMapper objectMapper, javax.ws.rs.client.WebTarget webTarget) { + this.objectMapper = objectMapper; + this.webTarget = webTarget; + } + + @Override + public InvocationBuilder request() { + return new JerseyInvocationBuilder(objectMapper, webTarget.request()); + } + + @Override + public JerseyWebTarget path(String... components) { + return new JerseyWebTarget( + objectMapper, + webTarget.path(String.join(PATH_SEPARATOR, components)) + ); + } + + @Override + public JerseyWebTarget resolveTemplate(String name, Object value) { + return new JerseyWebTarget( + objectMapper, + webTarget.resolveTemplate(name, value) + ); + } + + @Override + public JerseyWebTarget queryParam(String name, Object value) { + return new JerseyWebTarget( + objectMapper, + webTarget.queryParam(name, value) + ); + } + + @Override + public JerseyWebTarget queryParamsSet(String name, Set values) { + return new JerseyWebTarget( + objectMapper, + webTarget.queryParam(name, values.toArray()) + ); + } + + @Override + public JerseyWebTarget queryParamsJsonMap(String name, Map values) { + if (values != null && !values.isEmpty()) { + try { + // when param value is JSON string + return queryParam(name, objectMapper.writeValueAsString(values)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } else { + return this; + } + } +} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JoinSwarmCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JoinSwarmCmdExec.java deleted file mode 100644 index a19b7a18d..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JoinSwarmCmdExec.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.dockerjava.jaxrs; - - -import com.github.dockerjava.api.command.JoinSwarmCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class JoinSwarmCmdExec extends AbstrSyncDockerCmdExec - implements JoinSwarmCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(InitializeSwarmCmdExec.class); - - public JoinSwarmCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(JoinSwarmCmd command) { - WebTarget webResource = getBaseResource().path("/swarm/join"); - - LOGGER.trace("POST: {} ", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command, MediaType.APPLICATION_JSON)).close(); - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/KillContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/KillContainerCmdExec.java deleted file mode 100644 index 95c8ef83c..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/KillContainerCmdExec.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.KillContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class KillContainerCmdExec extends AbstrSyncDockerCmdExec implements - KillContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(KillContainerCmdExec.class); - - public KillContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(KillContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/kill").resolveTemplate("id", - command.getContainerId()); - - if (command.getSignal() != null) { - webResource = webResource.queryParam("signal", command.getSignal()); - } - - LOGGER.trace("POST: {}", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON).post(null).close(); - - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LeaveSwarmCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LeaveSwarmCmdExec.java deleted file mode 100644 index 9723980a5..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LeaveSwarmCmdExec.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.dockerjava.jaxrs; - - -import com.github.dockerjava.api.command.LeaveSwarmCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -public class LeaveSwarmCmdExec extends AbstrSyncDockerCmdExec implements LeaveSwarmCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(LeaveSwarmCmdExec.class); - - public LeaveSwarmCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(LeaveSwarmCmd command) { - WebTarget webTarget = getBaseResource().path("/swarm/leave"); - - webTarget = booleanQueryParam(webTarget, "force", command.hasForceEnabled()); - - LOGGER.trace("POST: {}", webTarget); - webTarget.request().accept(MediaType.APPLICATION_JSON) - .post(null).close(); - - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListContainersCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListContainersCmdExec.java deleted file mode 100644 index 50311ef54..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListContainersCmdExec.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; - -import java.util.List; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.ListContainersCmd; -import com.github.dockerjava.api.model.Container; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.util.FiltersEncoder; - -public class ListContainersCmdExec extends AbstrSyncDockerCmdExec> implements - ListContainersCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(ListContainersCmdExec.class); - - public ListContainersCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected List execute(ListContainersCmd command) { - WebTarget webTarget = getBaseResource().path("/containers/json").queryParam("since", command.getSinceId()) - .queryParam("before", command.getBeforeId()); - - webTarget = booleanQueryParam(webTarget, "all", command.hasShowAllEnabled()); - webTarget = booleanQueryParam(webTarget, "size", command.hasShowSizeEnabled()); - - if (command.getLimit() != null && command.getLimit() >= 0) { - webTarget = webTarget.queryParam("limit", String.valueOf(command.getLimit())); - } - - if (command.getFilters() != null && !command.getFilters().isEmpty()) { - webTarget = webTarget - .queryParam("filters", urlPathSegmentEscaper().escape(FiltersEncoder.jsonEncode(command.getFilters()))); - } - - LOGGER.trace("GET: {}", webTarget); - List containers = webTarget.request().accept(MediaType.APPLICATION_JSON) - .get(new GenericType>() { - }); - LOGGER.trace("Response: {}", containers); - - return containers; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListImagesCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListImagesCmdExec.java deleted file mode 100644 index 3d6320151..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListImagesCmdExec.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; - -import java.util.List; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.ListImagesCmd; -import com.github.dockerjava.api.model.Image; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.util.FiltersEncoder; - -public class ListImagesCmdExec extends AbstrSyncDockerCmdExec> implements ListImagesCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(ListImagesCmdExec.class); - - public ListImagesCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected List execute(ListImagesCmd command) { - WebTarget webTarget = getBaseResource().path("/images/json"); - - webTarget = booleanQueryParam(webTarget, "all", command.hasShowAllEnabled()); - - if (command.getFilters() != null && !command.getFilters().isEmpty()) { - webTarget = webTarget.queryParam("filters", urlPathSegmentEscaper().escape(FiltersEncoder.jsonEncode(command.getFilters()))); - } - - if (command.getImageNameFilter() != null) { - webTarget = webTarget.queryParam("filter", urlPathSegmentEscaper().escape(command.getImageNameFilter())); - } - - LOGGER.trace("GET: {}", webTarget); - - List images = webTarget.request().accept(MediaType.APPLICATION_JSON).get(new GenericType>() { - }); - LOGGER.trace("Response: {}", images); - - return images; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListNetworksCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListNetworksCmdExec.java deleted file mode 100644 index 9137e28d2..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListNetworksCmdExec.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.ListNetworksCmd; -import com.github.dockerjava.api.model.Network; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.util.FiltersEncoder; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; - -import java.util.List; - -import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; - -public class ListNetworksCmdExec extends AbstrSyncDockerCmdExec> implements - ListNetworksCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(ListNetworksCmdExec.class); - - public ListNetworksCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected List execute(ListNetworksCmd command) { - WebTarget webTarget = getBaseResource().path("/networks"); - - if (command.getFilters() != null && !command.getFilters().isEmpty()) { - webTarget = webTarget - .queryParam("filters", urlPathSegmentEscaper().escape(FiltersEncoder.jsonEncode(command.getFilters()))); - } - - LOGGER.trace("GET: {}", webTarget); - List networks = webTarget.request().accept(MediaType.APPLICATION_JSON) - .get(new GenericType>() { - }); - LOGGER.trace("Response: {}", networks); - - return networks; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListSecretsCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListSecretsCmdExec.java deleted file mode 100644 index 8052dabfd..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListSecretsCmdExec.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.ListSecretsCmd; -import com.github.dockerjava.api.model.Secret; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.util.FiltersEncoder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; -import java.util.List; - -import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; - -public class ListSecretsCmdExec extends AbstrSyncDockerCmdExec> implements - ListSecretsCmd.Exec { - private static final Logger LOGGER = LoggerFactory.getLogger(ListSecretsCmdExec.class); - - public ListSecretsCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected List execute(ListSecretsCmd command) { - WebTarget webTarget = getBaseResource().path("/secrets"); - - if (command.getFilters() != null && !command.getFilters().isEmpty()) { - webTarget = webTarget - .queryParam("filters", urlPathSegmentEscaper().escape(FiltersEncoder.jsonEncode(command.getFilters()))); - } - - LOGGER.trace("GET: {}", webTarget); - List secrets = webTarget.request().accept(MediaType.APPLICATION_JSON) - .get(new GenericType>() { - }); - LOGGER.trace("Response: {}", secrets); - - return secrets; - } -} - diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListServicesCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListServicesCmdExec.java deleted file mode 100644 index df9f972e6..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListServicesCmdExec.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.ListServicesCmd; -import com.github.dockerjava.api.model.Service; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.util.FiltersEncoder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; -import java.util.List; - -import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; - -public class ListServicesCmdExec extends AbstrSyncDockerCmdExec> implements - ListServicesCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(ListServicesCmdExec.class); - - public ListServicesCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected List execute(ListServicesCmd command) { - WebTarget webTarget = getBaseResource().path("/services"); - - if (command.getFilters() != null && !command.getFilters().isEmpty()) { - webTarget = webTarget - .queryParam("filters", urlPathSegmentEscaper().escape(FiltersEncoder.jsonEncode(command.getFilters()))); - } - - LOGGER.trace("GET: {}", webTarget); - List services = webTarget.request().accept(MediaType.APPLICATION_JSON) - .get(new GenericType>() { - }); - LOGGER.trace("Response: {}", services); - - return services; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListSwarmNodesCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListSwarmNodesCmdExec.java deleted file mode 100644 index 763ff7899..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListSwarmNodesCmdExec.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.ListSwarmNodesCmd; -import com.github.dockerjava.api.model.SwarmNode; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.util.FiltersEncoder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; -import java.util.List; - -import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; - -public class ListSwarmNodesCmdExec extends AbstrSyncDockerCmdExec> implements - ListSwarmNodesCmd.Exec { - private static final Logger LOGGER = LoggerFactory.getLogger(ListSwarmNodesCmdExec.class); - - public ListSwarmNodesCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected List execute(ListSwarmNodesCmd command) { - WebTarget webTarget = getBaseResource().path("/nodes"); - - if (command.getFilters() != null && !command.getFilters().isEmpty()) { - webTarget = webTarget - .queryParam("filters", urlPathSegmentEscaper().escape(FiltersEncoder.jsonEncode(command.getFilters()))); - } - - LOGGER.trace("GET: {}", webTarget); - List nodes = webTarget.request().accept(MediaType.APPLICATION_JSON) - .get(new GenericType>() { - }); - LOGGER.trace("Response: {}", nodes); - - return nodes; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListTasksCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListTasksCmdExec.java deleted file mode 100644 index 6a4b27d40..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListTasksCmdExec.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.ListTasksCmd; -import com.github.dockerjava.api.model.Task; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.util.FiltersEncoder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; -import java.util.List; - -import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; - -public class ListTasksCmdExec extends AbstrSyncDockerCmdExec> implements - ListTasksCmd.Exec { - private static final Logger LOGGER = LoggerFactory.getLogger(ListTasksCmdExec.class); - - public ListTasksCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected List execute(ListTasksCmd command) { - WebTarget webTarget = getBaseResource().path("/tasks"); - - if (command.getFilters() != null && !command.getFilters().isEmpty()) { - webTarget = webTarget - .queryParam("filters", urlPathSegmentEscaper().escape(FiltersEncoder.jsonEncode(command.getFilters()))); - } - - LOGGER.trace("GET: {}", webTarget); - List tasks = webTarget.request().accept(MediaType.APPLICATION_JSON) - .get(new GenericType>() { - }); - LOGGER.trace("Response: {}", tasks); - - return tasks; - } -} - diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListVolumesCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListVolumesCmdExec.java deleted file mode 100644 index 4f2165b93..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ListVolumesCmdExec.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.ListVolumesCmd; -import com.github.dockerjava.api.command.ListVolumesResponse; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.util.FiltersEncoder; - -public class ListVolumesCmdExec extends AbstrSyncDockerCmdExec implements ListVolumesCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(ListVolumesCmdExec.class); - - public ListVolumesCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected ListVolumesResponse execute(ListVolumesCmd command) { - WebTarget webTarget = getBaseResource().path("/volumes"); - - if (command.getFilters() != null && !command.getFilters().isEmpty()) { - webTarget = webTarget.queryParam("filters", urlPathSegmentEscaper().escape(FiltersEncoder.jsonEncode(command.getFilters()))); - } - - LOGGER.trace("GET: {}", webTarget); - - return webTarget.request().accept(MediaType.APPLICATION_JSON).get(ListVolumesResponse.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LoadImageCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LoadImageCmdExec.java deleted file mode 100644 index 23d6c493a..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LoadImageCmdExec.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.LoadImageCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class LoadImageCmdExec extends AbstrSyncDockerCmdExec implements LoadImageCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(LoadImageCmdExec.class); - - public LoadImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(LoadImageCmd command) { - WebTarget webTarget = getBaseResource().path("/images/load"); - - LOGGER.trace("POST: {}", webTarget); - webTarget.request().post(entity(command.getImageStream(), MediaType.APPLICATION_OCTET_STREAM)); - - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LogContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LogContainerCmdExec.java deleted file mode 100644 index 19c2b24b0..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LogContainerCmdExec.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.LogContainerCmd; -import com.github.dockerjava.api.model.Frame; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.async.FrameStreamProcessor; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; -import com.github.dockerjava.jaxrs.async.GETCallbackNotifier; - -public class LogContainerCmdExec extends AbstrAsyncDockerCmdExec implements - LogContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(LogContainerCmdExec.class); - - public LogContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected AbstractCallbackNotifier callbackNotifier(LogContainerCmd command, - ResultCallback resultCallback) { - - WebTarget webTarget = getBaseResource().path("/containers/{id}/logs").resolveTemplate("id", - command.getContainerId()); - - if (command.getTail() != null) { - webTarget = webTarget.queryParam("tail", command.getTail()); - } - - if (command.getSince() != null) { - webTarget = webTarget.queryParam("since", command.getSince()); - } - - webTarget = booleanQueryParam(webTarget, "timestamps", command.hasTimestampsEnabled()); - webTarget = booleanQueryParam(webTarget, "stdout", command.hasStdoutEnabled()); - webTarget = booleanQueryParam(webTarget, "stderr", command.hasStderrEnabled()); - webTarget = booleanQueryParam(webTarget, "follow", command.hasFollowStreamEnabled()); - - LOGGER.trace("GET: {}", webTarget); - - return new GETCallbackNotifier<>(new FrameStreamProcessor(), resultCallback, webTarget.request()); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LogSwarmObjectExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LogSwarmObjectExec.java deleted file mode 100644 index 2fb731005..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/LogSwarmObjectExec.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.LogSwarmObjectCmd; -import com.github.dockerjava.api.model.Frame; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.async.FrameStreamProcessor; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; -import com.github.dockerjava.jaxrs.async.GETCallbackNotifier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; - -public class LogSwarmObjectExec extends AbstrAsyncDockerCmdExec implements - LogSwarmObjectCmd.Exec { - - public LogSwarmObjectExec(WebTarget baseResource, DockerClientConfig dockerClientConfig, String endpoint) { - super(baseResource, dockerClientConfig); - this.endpoint = endpoint; - } - - private String endpoint = ""; - private static final Logger LOGGER = LoggerFactory.getLogger(LogSwarmObjectExec.class); - - @Override - protected AbstractCallbackNotifier callbackNotifier(LogSwarmObjectCmd command, ResultCallback resultCallback) { - - WebTarget webTarget = getBaseResource().path("/" + endpoint + "/{id}/logs").resolveTemplate("id", command.getId()); - - if (command.getTail() != null) { - webTarget = webTarget.queryParam("tail", command.getTail()); - } else { - webTarget = webTarget.queryParam("tail", "all"); - } - - if (command.getSince() != null) { - webTarget = webTarget.queryParam("since", command.getSince()); - } - - webTarget = booleanQueryParam(webTarget, "timestamps", command.getTimestamps()); - webTarget = booleanQueryParam(webTarget, "stdout", command.getStdout()); - webTarget = booleanQueryParam(webTarget, "stderr", command.getStderr()); - webTarget = booleanQueryParam(webTarget, "follow", command.getFollow()); - webTarget = booleanQueryParam(webTarget, "details", command.getDetails()); - LOGGER.trace("GET: {}", webTarget); - - return new GETCallbackNotifier<>(new FrameStreamProcessor(), resultCallback, webTarget.request()); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PauseContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PauseContainerCmdExec.java deleted file mode 100644 index 5e6beb835..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PauseContainerCmdExec.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.PauseContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class PauseContainerCmdExec extends AbstrSyncDockerCmdExec implements - PauseContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(PauseContainerCmdExec.class); - - public PauseContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(PauseContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/pause").resolveTemplate("id", - command.getContainerId()); - - LOGGER.trace("POST: {}", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON).post(null).close(); - - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PingCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PingCmdExec.java deleted file mode 100644 index ef6215358..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PingCmdExec.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.PingCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class PingCmdExec extends AbstrSyncDockerCmdExec implements PingCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(PingCmdExec.class); - - public PingCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(PingCmd command) { - WebTarget webResource = getBaseResource().path("/_ping"); - - LOGGER.trace("GET: {}", webResource); - webResource.request().get().close(); - - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PruneCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PruneCmdExec.java deleted file mode 100644 index 324bc8201..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PruneCmdExec.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.PruneCmd; -import com.github.dockerjava.api.model.PruneResponse; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.util.FiltersEncoder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; - -import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; - -public class PruneCmdExec extends AbstrSyncDockerCmdExec implements PruneCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(PruneCmdExec.class); - - public PruneCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected PruneResponse execute(PruneCmd command) { - WebTarget webTarget = getBaseResource().path(command.getApiPath()); - - if (command.getFilters() != null && !command.getFilters().isEmpty()) { - webTarget = webTarget.queryParam("filters", urlPathSegmentEscaper().escape(FiltersEncoder.jsonEncode(command.getFilters()))); - } - - LOGGER.trace("POST: {}", webTarget); - - PruneResponse response = webTarget.request().accept(MediaType.APPLICATION_JSON) - .post(null, new GenericType() { }); - LOGGER.trace("Response: {}", response); - - return response; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PullImageCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PullImageCmdExec.java deleted file mode 100644 index c20691288..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PullImageCmdExec.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.PullImageCmd; -import com.github.dockerjava.api.model.PullResponseItem; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.async.JsonStreamProcessor; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; -import com.github.dockerjava.jaxrs.async.POSTCallbackNotifier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.Invocation.Builder; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class PullImageCmdExec extends AbstrAsyncDockerCmdExec implements - PullImageCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(PullImageCmdExec.class); - - public PullImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected AbstractCallbackNotifier callbackNotifier(PullImageCmd command, - ResultCallback resultCallback) { - - WebTarget webResource = getBaseResource().path("/images/create").queryParam("tag", command.getTag()) - .queryParam("fromImage", command.getRepository()).queryParam("registry", command.getRegistry()); - - if (command.getPlatform() != null) { - webResource = webResource.queryParam("platform", command.getPlatform()); - } - - LOGGER.trace("POST: {}", webResource); - Builder builder = resourceWithOptionalAuthConfig(command.getAuthConfig(), webResource.request()).accept( - MediaType.APPLICATION_OCTET_STREAM_TYPE); - - return new POSTCallbackNotifier<>( - new JsonStreamProcessor<>(objectMapper, PullResponseItem.class), - resultCallback, builder, entity(null, MediaType.APPLICATION_JSON)); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PushImageCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PushImageCmdExec.java deleted file mode 100644 index 3f6d5434c..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/PushImageCmdExec.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.PushImageCmd; -import com.github.dockerjava.api.model.AuthConfig; -import com.github.dockerjava.api.model.PushResponseItem; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.async.JsonStreamProcessor; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; -import com.github.dockerjava.jaxrs.async.POSTCallbackNotifier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.Invocation.Builder; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class PushImageCmdExec extends AbstrAsyncDockerCmdExec implements - PushImageCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(PushImageCmdExec.class); - - public PushImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - private String name(PushImageCmd command) { - String name = command.getName(); - AuthConfig authConfig = command.getAuthConfig(); - return (name.contains("/") || authConfig == null) ? name : authConfig.getUsername(); - } - - @Override - protected AbstractCallbackNotifier callbackNotifier(PushImageCmd command, - ResultCallback resultCallback) { - - WebTarget webResource = getBaseResource().path("/images/" + name(command) + "/push").queryParam("tag", - command.getTag()); - - LOGGER.trace("POST: {}", webResource); - - Builder builder = resourceWithAuthConfig(command.getAuthConfig(), webResource.request()) - .accept(MediaType.APPLICATION_JSON); - - return new POSTCallbackNotifier<>( - new JsonStreamProcessor<>(objectMapper, PushResponseItem.class), - resultCallback, builder, entity(null, MediaType.APPLICATION_JSON)); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveContainerCmdExec.java deleted file mode 100644 index d649b57a5..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveContainerCmdExec.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.RemoveContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class RemoveContainerCmdExec extends AbstrSyncDockerCmdExec implements - RemoveContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(RemoveContainerCmdExec.class); - - public RemoveContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(RemoveContainerCmd command) { - WebTarget webTarget = getBaseResource().path("/containers/" + command.getContainerId()); - - webTarget = booleanQueryParam(webTarget, "v", command.hasRemoveVolumesEnabled()); - webTarget = booleanQueryParam(webTarget, "force", command.hasForceEnabled()); - - LOGGER.trace("DELETE: {}", webTarget); - webTarget.request().accept(MediaType.APPLICATION_JSON).delete().close(); - - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveImageCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveImageCmdExec.java deleted file mode 100644 index 9b362df72..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveImageCmdExec.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.RemoveImageCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class RemoveImageCmdExec extends AbstrSyncDockerCmdExec implements RemoveImageCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(RemoveImageCmdExec.class); - - public RemoveImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(RemoveImageCmd command) { - WebTarget webTarget = getBaseResource().path("/images/" + command.getImageId()); - - webTarget = booleanQueryParam(webTarget, "force", command.hasForceEnabled()); - webTarget = booleanQueryParam(webTarget, "noprune", command.hasNoPruneEnabled()); - - LOGGER.trace("DELETE: {}", webTarget); - webTarget.request().delete().close(); - - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveNetworkCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveNetworkCmdExec.java deleted file mode 100644 index acc2bdd27..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveNetworkCmdExec.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.RemoveNetworkCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -public class RemoveNetworkCmdExec extends AbstrSyncDockerCmdExec - implements RemoveNetworkCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(RemoveNetworkCmdExec.class); - - public RemoveNetworkCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(RemoveNetworkCmd command) { - - WebTarget webTarget = getBaseResource().path("/networks/" + command.getNetworkId()); - - LOGGER.trace("DELETE: {}", webTarget); - webTarget.request().accept(MediaType.APPLICATION_JSON).delete().close(); - - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveSecretCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveSecretCmdExec.java deleted file mode 100644 index 7e2bf4812..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveSecretCmdExec.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.RemoveSecretCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -public class RemoveSecretCmdExec extends AbstrSyncDockerCmdExec implements - RemoveSecretCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(RemoveSecretCmdExec.class); - - public RemoveSecretCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(RemoveSecretCmd command) { - WebTarget webTarget = getBaseResource().path("/secrets/" + command.getSecretId()); - - LOGGER.trace("DELETE: {}", webTarget); - webTarget.request().accept(MediaType.APPLICATION_JSON).delete().close(); - - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveServiceCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveServiceCmdExec.java deleted file mode 100644 index f10f94a3c..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveServiceCmdExec.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.RemoveServiceCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -public class RemoveServiceCmdExec extends AbstrSyncDockerCmdExec implements - RemoveServiceCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(RemoveServiceCmdExec.class); - - public RemoveServiceCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(RemoveServiceCmd command) { - WebTarget webTarget = getBaseResource().path("/services/" + command.getServiceId()); - - LOGGER.trace("DELETE: {}", webTarget); - webTarget.request().accept(MediaType.APPLICATION_JSON).delete().close(); - - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveSwarmNodeCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveSwarmNodeCmdExec.java deleted file mode 100644 index 6f71a468b..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveSwarmNodeCmdExec.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.RemoveSwarmNodeCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -public class RemoveSwarmNodeCmdExec extends AbstrSyncDockerCmdExec implements - RemoveSwarmNodeCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(RemoveSwarmNodeCmdExec.class); - - public RemoveSwarmNodeCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(RemoveSwarmNodeCmd command) { - WebTarget webTarget = getBaseResource().path("/nodes/" + command.getSwarmNodeId()); - - webTarget = booleanQueryParam(webTarget, "force", command.hasForceEnabled()); - - LOGGER.trace("DELETE: {}", webTarget); - webTarget.request().accept(MediaType.APPLICATION_JSON).delete().close(); - - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveVolumeCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveVolumeCmdExec.java deleted file mode 100644 index 618a85ed8..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RemoveVolumeCmdExec.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.RemoveVolumeCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class RemoveVolumeCmdExec extends AbstrSyncDockerCmdExec implements - RemoveVolumeCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(RemoveVolumeCmdExec.class); - - public RemoveVolumeCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(RemoveVolumeCmd command) { - WebTarget webTarget = getBaseResource().path("/volumes/" + command.getName()); - - LOGGER.trace("DELETE: {}", webTarget); - webTarget.request().accept(MediaType.APPLICATION_JSON).delete().close(); - - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RenameContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RenameContainerCmdExec.java deleted file mode 100644 index c747ea9b0..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RenameContainerCmdExec.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import com.github.dockerjava.api.command.RenameContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class RenameContainerCmdExec extends AbstrSyncDockerCmdExec - implements RenameContainerCmd.Exec { - private static final Logger LOG = LoggerFactory.getLogger(RenameContainerCmdExec.class); - - public RenameContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(RenameContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/rename") - .resolveTemplate("id", command.getContainerId()) - .queryParam("name", command.getName()); - - LOG.trace("POST: {}", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON).post(null); - - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RestartContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RestartContainerCmdExec.java deleted file mode 100644 index 765537f44..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/RestartContainerCmdExec.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.RestartContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class RestartContainerCmdExec extends AbstrSyncDockerCmdExec implements - RestartContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(RestartContainerCmdExec.class); - - public RestartContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(RestartContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/restart").resolveTemplate("id", - command.getContainerId()); - - if (command.getTimeout() != null) { - webResource = webResource.queryParam("t", String.valueOf(command.getTimeout())); - } - - LOGGER.trace("POST: {}", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON).post(null).close(); - - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/SaveImageCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/SaveImageCmdExec.java deleted file mode 100644 index c386ea3a0..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/SaveImageCmdExec.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import java.io.InputStream; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.SaveImageCmd; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.jaxrs.util.WrappedResponseInputStream; -import com.google.common.base.Strings; - -public class SaveImageCmdExec extends AbstrSyncDockerCmdExec implements SaveImageCmd.Exec { - private static final Logger LOGGER = LoggerFactory.getLogger(SaveImageCmdExec.class); - - public SaveImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected InputStream execute(SaveImageCmd command) { - // If tag is present, only tar the specific image - // else tar all the images with the same name - String name = command.getName(); - if (!Strings.isNullOrEmpty(command.getTag())) { - name += ":" + command.getTag(); - } - WebTarget webResource = getBaseResource().path("/images/" + name + "/get"); - - LOGGER.trace("GET: {}", webResource); - Response response = webResource.request().accept(MediaType.APPLICATION_JSON).get(); - - return new WrappedResponseInputStream(response); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/SearchImagesCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/SearchImagesCmdExec.java deleted file mode 100644 index 90fdd80cd..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/SearchImagesCmdExec.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import java.util.List; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.SearchImagesCmd; -import com.github.dockerjava.api.model.SearchItem; -import com.github.dockerjava.core.DockerClientConfig; - -public class SearchImagesCmdExec extends AbstrSyncDockerCmdExec> implements - SearchImagesCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(SearchImagesCmdExec.class); - - public SearchImagesCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected List execute(SearchImagesCmd command) { - WebTarget webResource = getBaseResource().path("/images/search").queryParam("term", command.getTerm()); - - LOGGER.trace("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(new GenericType>() { - }); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StartContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StartContainerCmdExec.java deleted file mode 100644 index 2851a26c7..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StartContainerCmdExec.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.StartContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class StartContainerCmdExec extends AbstrSyncDockerCmdExec implements - StartContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(StartContainerCmdExec.class); - - public StartContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(StartContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/start") - .resolveTemplate("id", command.getContainerId()); - - LOGGER.trace("POST: {}", webResource); - webResource.request() - .accept(MediaType.APPLICATION_JSON) - .post(null) - .close(); - - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StatsCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StatsCmdExec.java deleted file mode 100644 index b1c69b656..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StatsCmdExec.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.StatsCmd; -import com.github.dockerjava.api.model.Statistics; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.async.JsonStreamProcessor; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; -import com.github.dockerjava.jaxrs.async.GETCallbackNotifier; - -public class StatsCmdExec extends AbstrAsyncDockerCmdExec implements StatsCmd.Exec { - private static final Logger LOGGER = LoggerFactory.getLogger(StatsCmdExec.class); - - public StatsCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected AbstractCallbackNotifier callbackNotifier(StatsCmd command, - ResultCallback resultCallback) { - - WebTarget webTarget = getBaseResource().path("/containers/{id}/stats").resolveTemplate("id", - command.getContainerId()); - - LOGGER.trace("GET: {}", webTarget); - - return new GETCallbackNotifier<>(new JsonStreamProcessor<>(objectMapper, Statistics.class), - resultCallback, webTarget.request()); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StopContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StopContainerCmdExec.java deleted file mode 100644 index 930ccbb7d..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/StopContainerCmdExec.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.StopContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class StopContainerCmdExec extends AbstrSyncDockerCmdExec implements - StopContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(StopContainerCmdExec.class); - - public StopContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(StopContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/stop").resolveTemplate("id", - command.getContainerId()); - - if (command.getTimeout() != null) { - webResource = webResource.queryParam("t", String.valueOf(command.getTimeout())); - } - - LOGGER.trace("POST: {}", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON).post(null).close(); - - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/TagImageCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/TagImageCmdExec.java deleted file mode 100644 index aac15f9dd..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/TagImageCmdExec.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.TagImageCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class TagImageCmdExec extends AbstrSyncDockerCmdExec implements TagImageCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(TagImageCmdExec.class); - - public TagImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(TagImageCmd command) { - WebTarget webTarget = getBaseResource().path("/images/" + command.getImageId() + "/tag") - .queryParam("repo", command.getRepository()).queryParam("tag", command.getTag()); - - webTarget = booleanQueryParam(webTarget, "force", command.hasForceEnabled()); - - LOGGER.trace("POST: {}", webTarget); - webTarget.request().post(null).close(); - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/TopContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/TopContainerCmdExec.java deleted file mode 100644 index 22841d8bf..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/TopContainerCmdExec.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.apache.commons.lang.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.TopContainerCmd; -import com.github.dockerjava.api.command.TopContainerResponse; -import com.github.dockerjava.core.DockerClientConfig; - -public class TopContainerCmdExec extends AbstrSyncDockerCmdExec implements - TopContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(TopContainerCmdExec.class); - - public TopContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected TopContainerResponse execute(TopContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/top").resolveTemplate("id", - command.getContainerId()); - - if (!StringUtils.isEmpty(command.getPsArgs())) { - webResource = webResource.queryParam("ps_args", command.getPsArgs()); - } - - LOGGER.trace("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(TopContainerResponse.class); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UnpauseContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UnpauseContainerCmdExec.java deleted file mode 100644 index 5c3828358..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UnpauseContainerCmdExec.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.UnpauseContainerCmd; -import com.github.dockerjava.core.DockerClientConfig; - -public class UnpauseContainerCmdExec extends AbstrSyncDockerCmdExec implements - UnpauseContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(UnpauseContainerCmdExec.class); - - public UnpauseContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(UnpauseContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/unpause").resolveTemplate("id", - command.getContainerId()); - - LOGGER.trace("POST: {}", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON).post(null).close(); - - return null; - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateContainerCmdExec.java deleted file mode 100644 index 474d7338e..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateContainerCmdExec.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.UpdateContainerCmd; -import com.github.dockerjava.api.model.UpdateContainerResponse; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -/** - * Update container settings. - * - * @author Kanstantsin Shautsou - */ -public class UpdateContainerCmdExec extends AbstrSyncDockerCmdExec - implements UpdateContainerCmd.Exec { - private static final Logger LOGGER = LoggerFactory.getLogger(UpdateContainerCmdExec.class); - - public UpdateContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected UpdateContainerResponse execute(UpdateContainerCmd command) { - WebTarget webResource = getBaseResource().path("/containers/{id}/update") - .resolveTemplate("id", command.getContainerId()); - - LOGGER.trace("POST: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command, MediaType.APPLICATION_JSON), UpdateContainerResponse.class); - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateServiceCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateServiceCmdExec.java deleted file mode 100644 index d6259192b..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateServiceCmdExec.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.UpdateServiceCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -/** - * Update service settings. - */ -public class UpdateServiceCmdExec extends AbstrSyncDockerCmdExec - implements UpdateServiceCmd.Exec { - private static final Logger LOGGER = LoggerFactory.getLogger(UpdateServiceCmdExec.class); - - public UpdateServiceCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(UpdateServiceCmd command) { - WebTarget webResource = getBaseResource().path("/services/{id}/update") - .resolveTemplate("id", command.getServiceId()) - .queryParam("version", command.getVersion()); - - LOGGER.trace("POST: {}", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command.getServiceSpec(), MediaType.APPLICATION_JSON)).close(); - - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateSwarmCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateSwarmCmdExec.java deleted file mode 100644 index 833dd79ae..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateSwarmCmdExec.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.UpdateSwarmCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -public class UpdateSwarmCmdExec extends AbstrSyncDockerCmdExec - implements UpdateSwarmCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(UpdateSwarmCmdExec.class); - - public UpdateSwarmCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(UpdateSwarmCmd command) { - WebTarget webResource = getBaseResource().path("/swarm/update") - .queryParam("version", command.getVersion()); - - webResource = booleanQueryParam(webResource, "rotateManagerToken", command.getRotateManagerToken()); - webResource = booleanQueryParam(webResource, "rotateWorkerToken", command.getRotateWorkerToken()); - - LOGGER.trace("POST: {} ", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command.getSwarmSpec(), MediaType.APPLICATION_JSON)); - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateSwarmNodeCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateSwarmNodeCmdExec.java deleted file mode 100644 index efb34f062..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UpdateSwarmNodeCmdExec.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import com.github.dockerjava.api.command.UpdateSwarmNodeCmd; -import com.github.dockerjava.core.DockerClientConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import static javax.ws.rs.client.Entity.entity; - -/** - * Update swarmNode spec - */ -public class UpdateSwarmNodeCmdExec extends AbstrSyncDockerCmdExec - implements UpdateSwarmNodeCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(UpdateSwarmNodeCmdExec.class); - - public UpdateSwarmNodeCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Void execute(UpdateSwarmNodeCmd command) { - WebTarget webResource = getBaseResource().path("/nodes/{id}/update") - .resolveTemplate("id", command.getSwarmNodeId()) - .queryParam("version", command.getVersion()); - - LOGGER.trace("POST: {}", webResource); - webResource.request().accept(MediaType.APPLICATION_JSON) - .post(entity(command.getSwarmNodeSpec(), MediaType.APPLICATION_JSON)).close(); - return null; - } -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/VersionCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/VersionCmdExec.java deleted file mode 100644 index 7fbc92784..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/VersionCmdExec.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.command.VersionCmd; -import com.github.dockerjava.api.model.Version; -import com.github.dockerjava.core.DockerClientConfig; - -public class VersionCmdExec extends AbstrSyncDockerCmdExec implements VersionCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(VersionCmdExec.class); - - public VersionCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected Version execute(VersionCmd command) { - WebTarget webResource = getBaseResource().path("/version"); - - LOGGER.trace("GET: {}", webResource); - return webResource.request().accept(MediaType.APPLICATION_JSON).get(Version.class); - } - -} diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/WaitContainerCmdExec.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/WaitContainerCmdExec.java deleted file mode 100644 index 644bb8f22..000000000 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/WaitContainerCmdExec.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.github.dockerjava.jaxrs; - -import static javax.ws.rs.client.Entity.entity; - -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.dockerjava.api.async.ResultCallback; -import com.github.dockerjava.api.command.WaitContainerCmd; -import com.github.dockerjava.api.model.WaitResponse; -import com.github.dockerjava.core.DockerClientConfig; -import com.github.dockerjava.core.async.JsonStreamProcessor; -import com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier; -import com.github.dockerjava.jaxrs.async.POSTCallbackNotifier; - -public class WaitContainerCmdExec extends AbstrAsyncDockerCmdExec implements - WaitContainerCmd.Exec { - - private static final Logger LOGGER = LoggerFactory.getLogger(WaitContainerCmdExec.class); - - public WaitContainerCmdExec(WebTarget baseResource, DockerClientConfig dockerClientConfig) { - super(baseResource, dockerClientConfig); - } - - @Override - protected AbstractCallbackNotifier callbackNotifier(WaitContainerCmd command, - ResultCallback resultCallback) { - - WebTarget webResource = getBaseResource().path("/containers/{id}/wait").resolveTemplate("id", - command.getContainerId()); - - LOGGER.trace("POST: {}", webResource); - - return new POSTCallbackNotifier<>(new JsonStreamProcessor<>(objectMapper, WaitResponse.class), - resultCallback, webResource.request().accept(MediaType.APPLICATION_JSON), entity(null, - MediaType.APPLICATION_JSON)); - } - -} diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CmdIT.java index e1784f0a9..8f3a453a4 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/CmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CmdIT.java @@ -60,7 +60,7 @@ public boolean supportsStdinAttach() { @Parameterized.Parameters(name = "{index}:{0}") public static Iterable data() { - return Arrays.asList(FactoryType.values()); + return Arrays.asList(FactoryType.JERSEY); } @Parameterized.Parameter From dfe028ebeec990ee02a2a200ce83a16acf304b66 Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Wed, 11 Dec 2019 09:30:10 +0100 Subject: [PATCH 2/5] Use Jackson directly --- .../core/async/JsonStreamProcessor.java | 12 ++++--- .../jaxrs/JerseyInvocationBuilder.java | 33 ++++++++++--------- .../core/async/JsonStreamProcessorTest.java | 3 +- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/docker-java-core/src/main/java/com/github/dockerjava/core/async/JsonStreamProcessor.java b/docker-java-core/src/main/java/com/github/dockerjava/core/async/JsonStreamProcessor.java index 0a849f4f3..8829decac 100644 --- a/docker-java-core/src/main/java/com/github/dockerjava/core/async/JsonStreamProcessor.java +++ b/docker-java-core/src/main/java/com/github/dockerjava/core/async/JsonStreamProcessor.java @@ -9,6 +9,7 @@ import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.github.dockerjava.api.async.ResultCallback; @@ -23,7 +24,7 @@ public class JsonStreamProcessor implements ResponseStreamProcessor { private static final JsonFactory JSON_FACTORY = new JsonFactory(); - private final Class clazz; + private final TypeReference typeReference; private final ObjectMapper objectMapper; @@ -31,12 +32,13 @@ public class JsonStreamProcessor implements ResponseStreamProcessor { public JsonStreamProcessor(Class clazz) { this( DefaultDockerClientConfig.createDefaultConfigBuilder().build().getObjectMapper(), - clazz + new TypeReference() { + } ); } - public JsonStreamProcessor(ObjectMapper objectMapper, Class clazz) { - this.clazz = clazz; + public JsonStreamProcessor(ObjectMapper objectMapper, TypeReference typeReference) { + this.typeReference = typeReference; this.objectMapper = objectMapper.copy().enable(JsonParser.Feature.AUTO_CLOSE_SOURCE); } @@ -54,7 +56,7 @@ public void processResponseStream(InputStream response, ResultCallback result ObjectNode objectNode = objectMapper.readTree(jp); // exclude empty item serialization into class #461 if (!objectNode.isEmpty(null)) { - T next = objectMapper.treeToValue(objectNode, clazz); + T next = objectMapper.convertValue(objectNode, typeReference); resultCallback.onNext(next); } } catch (Exception e) { diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java index 407b4bd77..c34c89117 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java @@ -16,6 +16,7 @@ import javax.ws.rs.client.Entity; import javax.ws.rs.client.Invocation; import javax.ws.rs.core.Response; +import java.io.IOException; import java.io.InputStream; class JerseyInvocationBuilder implements InvocationBuilder { @@ -62,9 +63,9 @@ public void get(ResultCallback resultCallback) { @Override public T get(TypeReference typeReference) { - try { - return (T) resource.get(Class.forName(typeReference.getType().getTypeName())); - } catch (ClassNotFoundException e) { + try (Response response = resource.get()) { + return objectMapper.readValue(response.readEntity(InputStream.class), typeReference); + } catch (IOException e) { throw new RuntimeException(e); } } @@ -73,7 +74,7 @@ public T get(TypeReference typeReference) { public void get(TypeReference typeReference, ResultCallback resultCallback) { try { GETCallbackNotifier getCallbackNotifier = new GETCallbackNotifier( - new JsonStreamProcessor(objectMapper, Class.forName(typeReference.getType().getTypeName())), + new JsonStreamProcessor(objectMapper, typeReference), resultCallback, resource ); @@ -120,9 +121,9 @@ public T post(Object entity, TypeReference typeReference) { throw new UnauthorizedException("Unauthorized"); } - try { - return (T) response.readEntity(Class.forName(typeReference.getType().getTypeName())); - } catch (ClassNotFoundException e) { + try (InputStream inputStream = response.readEntity(InputStream.class)) { + return objectMapper.readValue(inputStream, typeReference); + } catch (IOException e) { throw new RuntimeException(e); } } @@ -131,7 +132,7 @@ public T post(Object entity, TypeReference typeReference) { public void post(Object entity, TypeReference typeReference, ResultCallback resultCallback) { try { POSTCallbackNotifier postCallbackNotifier = new POSTCallbackNotifier<>( - new JsonStreamProcessor<>(objectMapper, Class.forName(typeReference.getType().getTypeName())), + new JsonStreamProcessor<>(objectMapper, typeReference), (ResultCallback) resultCallback, resource, toEntity(entity, javax.ws.rs.core.MediaType.APPLICATION_JSON) @@ -144,12 +145,14 @@ public void post(Object entity, TypeReference typeReference, ResultCallba @Override public T post(TypeReference typeReference, InputStream body) { - try { - return (T) resource.post( - toEntity(body, javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM), - Class.forName(typeReference.getType().getTypeName()) - ); - } catch (ClassNotFoundException e) { + try ( + Response response = resource.post( + toEntity(body, javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM) + ) + ) { + InputStream inputStream = response.readEntity(InputStream.class); + return objectMapper.readValue(inputStream, typeReference); + } catch (IOException e) { throw new RuntimeException(e); } } @@ -158,7 +161,7 @@ public T post(TypeReference typeReference, InputStream body) { public void post(TypeReference typeReference, ResultCallback resultCallback, InputStream body) { try { POSTCallbackNotifier postCallbackNotifier = new POSTCallbackNotifier( - new JsonStreamProcessor(objectMapper, Class.forName(typeReference.getType().getTypeName())), + new JsonStreamProcessor(objectMapper, typeReference), resultCallback, resource, toEntity(body, "application/tar") diff --git a/docker-java/src/test/java/com/github/dockerjava/core/async/JsonStreamProcessorTest.java b/docker-java/src/test/java/com/github/dockerjava/core/async/JsonStreamProcessorTest.java index f4d790e0e..f98d7d281 100644 --- a/docker-java/src/test/java/com/github/dockerjava/core/async/JsonStreamProcessorTest.java +++ b/docker-java/src/test/java/com/github/dockerjava/core/async/JsonStreamProcessorTest.java @@ -3,6 +3,7 @@ */ package com.github.dockerjava.core.async; +import com.fasterxml.jackson.core.type.TypeReference; import com.github.dockerjava.api.async.ResultCallback; import com.github.dockerjava.api.model.PullResponseItem; import com.github.dockerjava.test.serdes.JSONTestHelper; @@ -31,7 +32,7 @@ public void processEmptyJson() throws Exception { InputStream response = new ByteArrayInputStream("{}".getBytes()); JsonStreamProcessor jsonStreamProcessor = new JsonStreamProcessor<>( - JSONTestHelper.getMapper(), PullResponseItem.class); + JSONTestHelper.getMapper(), new TypeReference() {}); final List completed = new ArrayList<>(); From ff27d4cb76a65e8f0fe5d0f7c3cc667c7494a0b1 Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Wed, 11 Dec 2019 10:39:15 +0100 Subject: [PATCH 3/5] fix async commands --- .../dockerjava/jaxrs/ApacheUnixSocket.java | 1 + .../jaxrs/JerseyInvocationBuilder.java | 24 ++++++++----------- .../jaxrs/UnixConnectionSocketFactory.java | 1 + .../jaxrs/async/AbstractCallbackNotifier.java | 12 ++++++++-- .../jaxrs/async/GETCallbackNotifier.java | 3 ++- .../jaxrs/async/POSTCallbackNotifier.java | 1 + .../jaxrs/filter/FollowRedirectsFilter.java | 1 + .../jaxrs/filter/JsonClientFilter.java | 1 + .../jaxrs/filter/LoggingFilter.java | 1 + .../filter/ResponseStatusExceptionFilter.java | 1 + .../jaxrs/filter/SelectiveLoggingFilter.java | 1 + .../util/WrappedResponseInputStream.java | 1 + .../com/github/dockerjava/cmd/StatsCmdIT.java | 6 ++--- 13 files changed, 33 insertions(+), 21 deletions(-) diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ApacheUnixSocket.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ApacheUnixSocket.java index 50459de8c..e64e252f8 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ApacheUnixSocket.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/ApacheUnixSocket.java @@ -41,6 +41,7 @@ * * This class also noop's any calls to setReuseAddress, which is called by the Apache client but isn't supported by AFUnixSocket. */ +@Deprecated public class ApacheUnixSocket extends Socket { private final AFUNIXSocket inner; diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java index c34c89117..761129867 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyInvocationBuilder.java @@ -50,12 +50,12 @@ public void delete() { @Override public void get(ResultCallback resultCallback) { try { - GETCallbackNotifier getCallbackNotifier = new GETCallbackNotifier( + GETCallbackNotifier getCallbackNotifier = new GETCallbackNotifier<>( new FrameStreamProcessor(), resultCallback, resource ); - getCallbackNotifier.call(); + getCallbackNotifier.start(); } catch (Exception e) { throw new RuntimeException(e); } @@ -74,11 +74,11 @@ public T get(TypeReference typeReference) { public void get(TypeReference typeReference, ResultCallback resultCallback) { try { GETCallbackNotifier getCallbackNotifier = new GETCallbackNotifier( - new JsonStreamProcessor(objectMapper, typeReference), + new JsonStreamProcessor<>(objectMapper, typeReference), resultCallback, resource ); - getCallbackNotifier.call(); + getCallbackNotifier.start(); } catch (Exception e) { throw new RuntimeException(e); } @@ -104,11 +104,7 @@ public void post(Object entity, InputStream stdin, ResultCallback resultC toEntity(entity, javax.ws.rs.core.MediaType.APPLICATION_JSON) ); - try { - postCallbackNotifier.call(); - } catch (Exception e) { - throw new RuntimeException(e); - } + postCallbackNotifier.start(); } @Override @@ -131,13 +127,13 @@ public T post(Object entity, TypeReference typeReference) { @Override public void post(Object entity, TypeReference typeReference, ResultCallback resultCallback) { try { - POSTCallbackNotifier postCallbackNotifier = new POSTCallbackNotifier<>( + POSTCallbackNotifier postCallbackNotifier = new POSTCallbackNotifier<>( new JsonStreamProcessor<>(objectMapper, typeReference), - (ResultCallback) resultCallback, + resultCallback, resource, toEntity(entity, javax.ws.rs.core.MediaType.APPLICATION_JSON) ); - postCallbackNotifier.call(); + postCallbackNotifier.start(); } catch (Exception e) { throw new RuntimeException(e); } @@ -161,12 +157,12 @@ public T post(TypeReference typeReference, InputStream body) { public void post(TypeReference typeReference, ResultCallback resultCallback, InputStream body) { try { POSTCallbackNotifier postCallbackNotifier = new POSTCallbackNotifier( - new JsonStreamProcessor(objectMapper, typeReference), + new JsonStreamProcessor<>(objectMapper, typeReference), resultCallback, resource, toEntity(body, "application/tar") ); - postCallbackNotifier.call(); + postCallbackNotifier.start(); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UnixConnectionSocketFactory.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UnixConnectionSocketFactory.java index 0c5400ecd..a45561de9 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UnixConnectionSocketFactory.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/UnixConnectionSocketFactory.java @@ -40,6 +40,7 @@ * Provides a ConnectionSocketFactory for connecting Apache HTTP clients to Unix sockets. */ @Contract(threading = ThreadingBehavior.IMMUTABLE_CONDITIONAL) +@Deprecated public class UnixConnectionSocketFactory implements ConnectionSocketFactory { private File socketFile; diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/AbstractCallbackNotifier.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/AbstractCallbackNotifier.java index cd7a7f809..b8db73b04 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/AbstractCallbackNotifier.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/AbstractCallbackNotifier.java @@ -21,6 +21,7 @@ import com.github.dockerjava.jaxrs.util.WrappedResponseInputStream; import com.google.common.util.concurrent.ThreadFactoryBuilder; +@Deprecated public abstract class AbstractCallbackNotifier implements Callable { private final ResponseStreamProcessor responseStreamProcessor; @@ -42,9 +43,9 @@ protected AbstractCallbackNotifier(ResponseStreamProcessor responseStreamProc } @Override - public Void call() throws Exception { + public Void call() { - Response response = null; + Response response; try { response = response(); @@ -59,6 +60,9 @@ public Void call() throws Exception { } return null; } + if (resultCallback != null) { + resultCallback.onStart(response::close); + } try (InputStream inputStream = new WrappedResponseInputStream(response)) { @@ -85,4 +89,8 @@ public static Future startAsyncProcessing(AbstractCallbackNotifier executorService.shutdown(); return response; } + + public void start() { + FACTORY.newThread(this::call).start(); + } } diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/GETCallbackNotifier.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/GETCallbackNotifier.java index e6f4fd1d2..9297c2551 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/GETCallbackNotifier.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/GETCallbackNotifier.java @@ -14,6 +14,7 @@ * @author Marcus Linke * */ +@Deprecated public class GETCallbackNotifier extends AbstractCallbackNotifier { public GETCallbackNotifier(ResponseStreamProcessor responseStreamProcessor, ResultCallback resultCallback, @@ -22,7 +23,7 @@ public GETCallbackNotifier(ResponseStreamProcessor responseStreamProcessor, R } protected Response response() { - return requestBuilder.get(Response.class); + return requestBuilder.get(); } } diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/POSTCallbackNotifier.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/POSTCallbackNotifier.java index bd96e8250..76fd540fe 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/POSTCallbackNotifier.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/async/POSTCallbackNotifier.java @@ -15,6 +15,7 @@ * @author Marcus Linke * */ +@Deprecated public class POSTCallbackNotifier extends AbstractCallbackNotifier { Entity entity = null; diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/FollowRedirectsFilter.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/FollowRedirectsFilter.java index 4a7765d97..64f5e88f8 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/FollowRedirectsFilter.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/FollowRedirectsFilter.java @@ -17,6 +17,7 @@ * * This filter allows arbitrary redirection for other methods. */ +@Deprecated public class FollowRedirectsFilter implements ClientResponseFilter { @Override diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/JsonClientFilter.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/JsonClientFilter.java index 2abc20618..a62034d27 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/JsonClientFilter.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/JsonClientFilter.java @@ -12,6 +12,7 @@ * @author Konstantin Pelykh (kpelykh@gmail.com) * */ +@Deprecated public class JsonClientFilter implements ClientResponseFilter { @Override diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/LoggingFilter.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/LoggingFilter.java index 9a0297fdb..986b4c10a 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/LoggingFilter.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/LoggingFilter.java @@ -82,6 +82,7 @@ @PreMatching @Priority(Integer.MIN_VALUE) @SuppressWarnings("ClassWithMultipleLoggers") +@Deprecated public class LoggingFilter implements ContainerRequestFilter, ClientRequestFilter, ContainerResponseFilter, ClientResponseFilter, WriterInterceptor { diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java index d696bc800..0895dbfd9 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/ResponseStatusExceptionFilter.java @@ -32,6 +32,7 @@ * @author Marcus Linke * */ +@Deprecated public class ResponseStatusExceptionFilter implements ClientResponseFilter { private static final Logger LOG = LoggerFactory.getLogger(ResponseStatusExceptionFilter.class); diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/SelectiveLoggingFilter.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/SelectiveLoggingFilter.java index 9612011fa..862bdf0a9 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/SelectiveLoggingFilter.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/filter/SelectiveLoggingFilter.java @@ -16,6 +16,7 @@ * * @author sfitts */ +@Deprecated public class SelectiveLoggingFilter extends LoggingFilter { // Immutable'ish diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/util/WrappedResponseInputStream.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/util/WrappedResponseInputStream.java index 4ec74ddcc..11e9f8684 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/util/WrappedResponseInputStream.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/util/WrappedResponseInputStream.java @@ -11,6 +11,7 @@ * * @author Marcus Linke */ +@Deprecated public class WrappedResponseInputStream extends InputStream { private Response response; diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/StatsCmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/StatsCmdIT.java index 7c9fee550..f60a884b0 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/StatsCmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/StatsCmdIT.java @@ -20,12 +20,10 @@ public class StatsCmdIT extends CmdIT { public static final Logger LOG = LoggerFactory.getLogger(StatsCmdIT.class); - private static int NUM_STATS = 5; + private static int NUM_STATS = 3; @Test public void testStatsStreaming() throws InterruptedException, IOException { - TimeUnit.SECONDS.sleep(1); - CountDownLatch countDownLatch = new CountDownLatch(NUM_STATS); String containerName = "generated_" + new SecureRandom().nextInt(); @@ -40,7 +38,7 @@ public void testStatsStreaming() throws InterruptedException, IOException { StatsCallbackTest statsCallback = dockerRule.getClient().statsCmd(container.getId()).exec( new StatsCallbackTest(countDownLatch)); - countDownLatch.await(3, TimeUnit.SECONDS); + assertTrue(countDownLatch.await(10, TimeUnit.SECONDS)); Boolean gotStats = statsCallback.gotStats(); LOG.info("Stop stats collection"); From c6e52d1a10dc870226b3bde1a1e940ca3e8189e2 Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Wed, 11 Dec 2019 11:20:20 +0100 Subject: [PATCH 4/5] fix query param encoding --- .../java/com/github/dockerjava/jaxrs/JerseyWebTarget.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyWebTarget.java b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyWebTarget.java index a1162be4f..123d2f7ea 100644 --- a/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyWebTarget.java +++ b/docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyWebTarget.java @@ -8,6 +8,8 @@ import java.util.Map; import java.util.Set; +import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper; + class JerseyWebTarget implements WebTarget { private static final String PATH_SEPARATOR = "/"; @@ -44,6 +46,9 @@ public JerseyWebTarget resolveTemplate(String name, Object value) { @Override public JerseyWebTarget queryParam(String name, Object value) { + if (value instanceof String) { + value = urlPathSegmentEscaper().escape((String) value); + } return new JerseyWebTarget( objectMapper, webTarget.queryParam(name, value) From e042dfb9ab236b0839665d2b68be3b21abebd931 Mon Sep 17 00:00:00 2001 From: Sergei Egorov Date: Wed, 11 Dec 2019 11:52:40 +0100 Subject: [PATCH 5/5] restore `FactoryType.values()` --- docker-java/src/test/java/com/github/dockerjava/cmd/CmdIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-java/src/test/java/com/github/dockerjava/cmd/CmdIT.java b/docker-java/src/test/java/com/github/dockerjava/cmd/CmdIT.java index 8f3a453a4..e1784f0a9 100644 --- a/docker-java/src/test/java/com/github/dockerjava/cmd/CmdIT.java +++ b/docker-java/src/test/java/com/github/dockerjava/cmd/CmdIT.java @@ -60,7 +60,7 @@ public boolean supportsStdinAttach() { @Parameterized.Parameters(name = "{index}:{0}") public static Iterable data() { - return Arrays.asList(FactoryType.JERSEY); + return Arrays.asList(FactoryType.values()); } @Parameterized.Parameter