From 810174a438d506c4dc601acf302bfcd08e367bfc Mon Sep 17 00:00:00 2001 From: Matthieu Baechler Date: Thu, 11 Feb 2016 16:58:41 +0100 Subject: [PATCH] Issue-456 input configuration should not be altered as it breaks unix socket support --- .../dockerjava/core/DockerClientConfig.java | 8 ++------ .../jaxrs/DockerCmdExecFactoryImpl.java | 15 +++++++++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/github/dockerjava/core/DockerClientConfig.java b/src/main/java/com/github/dockerjava/core/DockerClientConfig.java index d3897199c..fbd285867 100644 --- a/src/main/java/com/github/dockerjava/core/DockerClientConfig.java +++ b/src/main/java/com/github/dockerjava/core/DockerClientConfig.java @@ -69,11 +69,11 @@ public class DockerClientConfig implements Serializable { CONFIG_KEYS.add(REGISTRY_URL); } - private URI dockerHost; + private final URI dockerHost; private final String registryUsername, registryPassword, registryEmail, registryUrl, dockerConfig, dockerCertPath; - private boolean dockerTlsVerify; + private final boolean dockerTlsVerify; private final RemoteApiVersion apiVersion; @@ -238,10 +238,6 @@ public URI getDockerHost() { return dockerHost; } - public void setDockerHost(URI dockerHost) { - this.dockerHost = dockerHost; - } - public RemoteApiVersion getApiVersion() { return apiVersion; } diff --git a/src/main/java/com/github/dockerjava/jaxrs/DockerCmdExecFactoryImpl.java b/src/main/java/com/github/dockerjava/jaxrs/DockerCmdExecFactoryImpl.java index ec0a3b0a3..2c5b2b077 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/DockerCmdExecFactoryImpl.java +++ b/src/main/java/com/github/dockerjava/jaxrs/DockerCmdExecFactoryImpl.java @@ -174,14 +174,14 @@ public void init(DockerClientConfig dockerClientConfig) { protocol = "http"; } - if (originalUri.getScheme().equals("unix")) { - dockerClientConfig.setDockerHost(UnixConnectionSocketFactory.sanitizeUri(originalUri)); - } else { + if (!originalUri.getScheme().equals("unix")) { + try { originalUri = new URI(originalUri.toString().replaceFirst("tcp", protocol)); } catch (URISyntaxException e) { throw new RuntimeException(e); } + configureProxy(clientConfig, protocol); } @@ -209,7 +209,14 @@ public void init(DockerClientConfig dockerClientConfig) { client = clientBuilder.build(); - baseResource = client.target(originalUri.toString()).path(dockerClientConfig.getApiVersion().asWebPathPart()); + baseResource = client.target(sanitizeUrl(originalUri).toString()).path(dockerClientConfig.getApiVersion().asWebPathPart()); + } + + private URI sanitizeUrl(URI originalUri) { + if (originalUri.getScheme().equals("unix")) { + return UnixConnectionSocketFactory.sanitizeUri(originalUri); + } + return originalUri; } private void configureProxy(ClientConfig clientConfig, String protocol) {