Skip to content

Commit b725d3a

Browse files
author
Marcus Linke
committed
Create DockerClient via DockerClientFactory now
1 parent 11d8840 commit b725d3a

File tree

4 files changed

+53
-12
lines changed

4 files changed

+53
-12
lines changed

src/main/java/com/github/dockerjava/core/DockerClientImpl.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,56 @@
1616

1717
/**
1818
* @author Konstantin Pelykh (kpelykh@gmail.com)
19+
*
20+
* @see https://github.com/docker/docker/blob/master/api/client/commands.go
1921
*/
2022
public class DockerClientImpl implements Closeable, DockerClient {
2123

2224
private final DockerClientConfig dockerClientConfig;
2325

2426
private DockerCmdExecFactory dockerCmdExecFactory;
2527

26-
public DockerClientImpl() {
28+
private DockerClientImpl() {
2729
this(DockerClientConfig.createDefaultConfigBuilder().build());
2830
}
2931

30-
public DockerClientImpl(String serverUrl) {
32+
private DockerClientImpl(String serverUrl) {
3133
this(configWithServerUrl(serverUrl));
3234
}
3335

34-
private static DockerClientConfig configWithServerUrl(String serverUrl) {
36+
private DockerClientImpl(DockerClientConfig dockerClientConfig) {
37+
Preconditions.checkNotNull(dockerClientConfig, "config was not specified");
38+
this.dockerClientConfig = dockerClientConfig;
39+
}
40+
41+
private static DockerClientConfig configWithServerUrl(String serverUrl) {
3542
return DockerClientConfig.createDefaultConfigBuilder()
3643
.withUri(serverUrl)
3744
.build();
3845
}
39-
40-
public DockerClientImpl(DockerClientConfig dockerClientConfig) {
41-
Preconditions.checkNotNull(dockerClientConfig, "config was not specified");
42-
this.dockerClientConfig = dockerClientConfig;
43-
setDockerCmdExecFactory(new DockerCmdExecFactoryImpl());
46+
47+
public static DockerClientImpl getInstance() {
48+
return new DockerClientImpl();
49+
}
50+
51+
public static DockerClientImpl getInstance(DockerClientConfig dockerClientConfig) {
52+
return new DockerClientImpl(dockerClientConfig);
53+
}
54+
55+
public static DockerClientImpl getInstance(String serverUrl) {
56+
return new DockerClientImpl(serverUrl);
4457
}
4558

46-
public void setDockerCmdExecFactory(
59+
public DockerClient withDockerCmdExecFactory(
4760
DockerCmdExecFactory dockerCmdExecFactory) {
4861
Preconditions.checkNotNull(dockerCmdExecFactory, "dockerCmdExecFactory was not specified");
4962
this.dockerCmdExecFactory = dockerCmdExecFactory;
5063
this.dockerCmdExecFactory.init(dockerClientConfig);
64+
return this;
5165
}
5266

53-
public DockerCmdExecFactory getDockerCmdExecFactory() {
67+
private DockerCmdExecFactory getDockerCmdExecFactory() {
68+
Preconditions.checkNotNull(dockerCmdExecFactory, "dockerCmdExecFactory was not specified");
5469
return dockerCmdExecFactory;
5570
}
5671

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.github.dockerjava.jaxrs;
2+
3+
import com.github.dockerjava.api.DockerClient;
4+
import com.github.dockerjava.core.DockerClientConfig;
5+
import com.github.dockerjava.core.DockerClientImpl;
6+
7+
public class DockerClientFactory {
8+
9+
public static DockerClient getInstance() {
10+
return withDockerCmdExecFactory(DockerClientImpl.getInstance());
11+
}
12+
13+
public static DockerClient getInstance(DockerClientConfig dockerClientConfig) {
14+
return withDockerCmdExecFactory(DockerClientImpl.getInstance(dockerClientConfig));
15+
}
16+
17+
public static DockerClient getInstance(String serverUrl) {
18+
return withDockerCmdExecFactory(DockerClientImpl.getInstance(serverUrl));
19+
}
20+
21+
private static DockerClient withDockerCmdExecFactory(DockerClientImpl dockerClient) {
22+
return dockerClient.withDockerCmdExecFactory(new DockerCmdExecFactoryImpl());
23+
}
24+
}

src/test/java/com/github/dockerjava/client/AbstractDockerClientTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.github.dockerjava.api.DockerClient;
44
import com.github.dockerjava.api.DockerException;
55
import com.github.dockerjava.core.DockerClientImpl;
6+
import com.github.dockerjava.jaxrs.DockerClientFactory;
67

78
import org.apache.commons.io.IOUtils;
89
import org.apache.commons.io.LineIterator;
@@ -34,7 +35,7 @@ public abstract class AbstractDockerClientTest extends Assert {
3435
public void beforeTest() {
3536
LOG.info("======================= BEFORETEST =======================");
3637
LOG.info("Connecting to Docker server");
37-
dockerClient = new DockerClientImpl();
38+
dockerClient = DockerClientFactory.getInstance();
3839

3940
LOG.info("Pulling image 'busybox'");
4041
// need to block until image is pulled completely

src/test/java/com/github/dockerjava/core/command/AuthCmdImplTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import com.github.dockerjava.client.AbstractDockerClientTest;
1616
import com.github.dockerjava.core.DockerClientConfig;
1717
import com.github.dockerjava.core.DockerClientImpl;
18+
import com.github.dockerjava.jaxrs.DockerClientFactory;
1819

1920
public class AuthCmdImplTest extends AbstractDockerClientTest {
2021

@@ -46,7 +47,7 @@ public void testAuth() throws Exception {
4647
@Test
4748
public void testAuthInvalid() throws Exception {
4849
DockerClientConfig config = DockerClientConfig.createDefaultConfigBuilder().withPassword("garbage").build();
49-
DockerClient client = new DockerClientImpl(config);
50+
DockerClient client = DockerClientFactory.getInstance(config);
5051

5152
try {
5253
client.authCmd().exec();

0 commit comments

Comments
 (0)