Skip to content

Commit 01d0822

Browse files
authored
Rework DockerHttpClient API (docker-java#1403)
* Rework DockerHttpClient API * Add `DockerClientImpl#getInstance(DockerClientConfig,DockerHttpClient)` * fix the test resource tracker * fix the comment
1 parent 4de9f79 commit 01d0822

File tree

30 files changed

+339
-706
lines changed

30 files changed

+339
-706
lines changed

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

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -167,38 +167,50 @@ public class DockerClientImpl implements Closeable, DockerClient {
167167

168168
private final DockerClientConfig dockerClientConfig;
169169

170-
private DockerCmdExecFactory dockerCmdExecFactory;
170+
DockerCmdExecFactory dockerCmdExecFactory;
171171

172-
private DockerClientImpl() {
173-
this(DefaultDockerClientConfig.createDefaultConfigBuilder().build());
174-
}
175-
176-
private DockerClientImpl(String serverUrl) {
177-
this(configWithServerUrl(serverUrl));
178-
}
179-
180-
private DockerClientImpl(DockerClientConfig dockerClientConfig) {
172+
DockerClientImpl(DockerClientConfig dockerClientConfig) {
181173
checkNotNull(dockerClientConfig, "config was not specified");
182174
this.dockerClientConfig = dockerClientConfig;
183175
}
184176

185-
private static DockerClientConfig configWithServerUrl(String serverUrl) {
186-
return DefaultDockerClientConfig.createDefaultConfigBuilder().withDockerHost(serverUrl).build();
187-
}
188-
177+
/**
178+
*
179+
* @deprecated use {@link #getInstance(DockerClientConfig, DockerHttpClient)}
180+
*/
181+
@Deprecated
189182
public static DockerClientImpl getInstance() {
190-
return new DockerClientImpl();
183+
return new DockerClientImpl(DefaultDockerClientConfig.createDefaultConfigBuilder().build());
191184
}
192185

186+
/**
187+
*
188+
* @deprecated use {@link #getInstance(DockerClientConfig, DockerHttpClient)}
189+
*/
190+
@Deprecated
193191
public static DockerClientImpl getInstance(DockerClientConfig dockerClientConfig) {
194192
return new DockerClientImpl(dockerClientConfig);
195193
}
196194

195+
public static DockerClient getInstance(DockerClientConfig dockerClientConfig, DockerHttpClient dockerHttpClient) {
196+
return new DockerClientImpl(dockerClientConfig)
197+
.withHttpClient(dockerHttpClient);
198+
}
199+
200+
/**
201+
*
202+
* @deprecated use {@link #getInstance(DockerClientConfig, DockerHttpClient)}
203+
*/
204+
@Deprecated
197205
public static DockerClientImpl getInstance(String serverUrl) {
198-
return new DockerClientImpl(serverUrl);
206+
return new DockerClientImpl(
207+
DefaultDockerClientConfig.createDefaultConfigBuilder()
208+
.withDockerHost(serverUrl)
209+
.build()
210+
);
199211
}
200212

201-
public DockerClientImpl withHttpClient(DockerHttpClient httpClient) {
213+
DockerClientImpl withHttpClient(DockerHttpClient httpClient) {
202214
return withDockerCmdExecFactory(new DefaultDockerCmdExecFactory(httpClient, dockerClientConfig.getObjectMapper()));
203215
}
204216

@@ -216,7 +228,7 @@ public DockerHttpClient getHttpClient() {
216228
}
217229

218230
/**
219-
* @deprecated use {@link #withHttpClient(DockerHttpClient)}
231+
* @deprecated use {@link #getInstance(DockerClientConfig, DockerHttpClient)}
220232
*/
221233
@Deprecated
222234
public DockerClientImpl withDockerCmdExecFactory(DockerCmdExecFactory dockerCmdExecFactory) {

docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/ApacheDockerHttpClient.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,18 @@
4141

4242
public final class ApacheDockerHttpClient implements DockerHttpClient {
4343

44-
public static final class Factory {
44+
public static final class Builder {
4545

4646
private URI dockerHost = null;
4747

4848
private SSLConfig sslConfig = null;
4949

50-
public Factory dockerHost(URI value) {
50+
public Builder dockerHost(URI value) {
5151
this.dockerHost = Objects.requireNonNull(value, "dockerHost");
5252
return this;
5353
}
5454

55-
public Factory sslConfig(SSLConfig value) {
55+
public Builder sslConfig(SSLConfig value) {
5656
this.sslConfig = value;
5757
return this;
5858
}

docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
//import org.glassfish.jersey.apache.connector.ApacheConnectorProvider;
1616
// see https://github.com/docker-java/docker-java/issues/196
1717
/**
18-
* @deprecated use {@link JerseyDockerHttpClient} with {@link DockerClientImpl#withHttpClient(DockerHttpClient)}
18+
* @deprecated use {@link JerseyDockerHttpClient} with {@link DockerClientImpl#getInstance(DockerClientConfig, DockerHttpClient)}
1919
*/
2020
@Deprecated
2121
public class JerseyDockerCmdExecFactory extends DelegatingDockerCmdExecFactory implements DockerClientConfigAware {
2222

23-
private JerseyDockerHttpClient.Factory clientFactory = new JerseyDockerHttpClient.Factory();
23+
private JerseyDockerHttpClient.Builder clientBuilder = new JerseyDockerHttpClient.Builder();
2424

2525
@Deprecated
2626
protected Integer connectTimeout;
@@ -37,11 +37,11 @@ public final DockerCmdExecFactory getDockerCmdExecFactory() {
3737

3838
@Override
3939
public void init(DockerClientConfig dockerClientConfig) {
40-
clientFactory = clientFactory
40+
clientBuilder = clientBuilder
4141
.dockerHost(dockerClientConfig.getDockerHost())
4242
.sslConfig(dockerClientConfig.getSSLConfig());
4343
dockerCmdExecFactory = new DefaultDockerCmdExecFactory(
44-
clientFactory.build(),
44+
clientBuilder.build(),
4545
dockerClientConfig.getObjectMapper()
4646
);
4747
dockerCmdExecFactory.init(dockerClientConfig);
@@ -51,7 +51,7 @@ public void init(DockerClientConfig dockerClientConfig) {
5151
* Configure connection timeout in milliseconds
5252
*/
5353
public JerseyDockerCmdExecFactory withConnectTimeout(Integer connectTimeout) {
54-
clientFactory = clientFactory.connectTimeout(connectTimeout);
54+
clientBuilder = clientBuilder.connectTimeout(connectTimeout);
5555
this.connectTimeout = connectTimeout;
5656
return this;
5757
}
@@ -60,38 +60,38 @@ public JerseyDockerCmdExecFactory withConnectTimeout(Integer connectTimeout) {
6060
* Configure read timeout in milliseconds
6161
*/
6262
public JerseyDockerCmdExecFactory withReadTimeout(Integer readTimeout) {
63-
clientFactory = clientFactory.readTimeout(readTimeout);
63+
clientBuilder = clientBuilder.readTimeout(readTimeout);
6464
this.readTimeout = readTimeout;
6565
return this;
6666
}
6767

6868
public JerseyDockerCmdExecFactory withMaxTotalConnections(Integer maxTotalConnections) {
69-
clientFactory = clientFactory.maxTotalConnections(maxTotalConnections);
69+
clientBuilder = clientBuilder.maxTotalConnections(maxTotalConnections);
7070
return this;
7171
}
7272

7373
public JerseyDockerCmdExecFactory withMaxPerRouteConnections(Integer maxPerRouteConnections) {
74-
clientFactory = clientFactory.maxPerRouteConnections(maxPerRouteConnections);
74+
clientBuilder = clientBuilder.maxPerRouteConnections(maxPerRouteConnections);
7575
return this;
7676
}
7777

7878
public JerseyDockerCmdExecFactory withConnectionRequestTimeout(Integer connectionRequestTimeout) {
79-
clientFactory = clientFactory.connectionRequestTimeout(connectionRequestTimeout);
79+
clientBuilder = clientBuilder.connectionRequestTimeout(connectionRequestTimeout);
8080
return this;
8181
}
8282

8383
public JerseyDockerCmdExecFactory withClientResponseFilters(ClientResponseFilter... clientResponseFilter) {
84-
clientFactory = clientFactory.clientResponseFilters(clientResponseFilter);
84+
clientBuilder = clientBuilder.clientResponseFilters(clientResponseFilter);
8585
return this;
8686
}
8787

8888
public JerseyDockerCmdExecFactory withClientRequestFilters(ClientRequestFilter... clientRequestFilters) {
89-
clientFactory = clientFactory.clientRequestFilters(clientRequestFilters);
89+
clientBuilder = clientBuilder.clientRequestFilters(clientRequestFilters);
9090
return this;
9191
}
9292

9393
public JerseyDockerCmdExecFactory withRequestEntityProcessing(RequestEntityProcessing requestEntityProcessing) {
94-
clientFactory = clientFactory.requestEntityProcessing(requestEntityProcessing);
94+
clientBuilder = clientBuilder.requestEntityProcessing(requestEntityProcessing);
9595
return this;
9696
}
9797
}

docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerHttpClient.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
public final class JerseyDockerHttpClient implements DockerHttpClient {
4646

47-
public static final class Factory {
47+
public static final class Builder {
4848

4949
private URI dockerHost = null;
5050

@@ -66,52 +66,52 @@ public static final class Factory {
6666

6767
private RequestEntityProcessing requestEntityProcessing;
6868

69-
public Factory dockerHost(URI value) {
69+
public Builder dockerHost(URI value) {
7070
this.dockerHost = Objects.requireNonNull(value, "dockerHost");
7171
return this;
7272
}
7373

74-
public Factory sslConfig(SSLConfig value) {
74+
public Builder sslConfig(SSLConfig value) {
7575
this.sslConfig = value;
7676
return this;
7777
}
7878

79-
public Factory readTimeout(Integer value) {
79+
public Builder readTimeout(Integer value) {
8080
this.readTimeout = value;
8181
return this;
8282
}
8383

84-
public Factory connectTimeout(Integer value) {
84+
public Builder connectTimeout(Integer value) {
8585
this.connectTimeout = value;
8686
return this;
8787
}
8888

89-
public Factory maxTotalConnections(Integer value) {
89+
public Builder maxTotalConnections(Integer value) {
9090
this.maxTotalConnections = value;
9191
return this;
9292
}
9393

94-
public Factory maxPerRouteConnections(Integer value) {
94+
public Builder maxPerRouteConnections(Integer value) {
9595
this.maxPerRouteConnections = value;
9696
return this;
9797
}
9898

99-
public Factory connectionRequestTimeout(Integer value) {
99+
public Builder connectionRequestTimeout(Integer value) {
100100
this.connectionRequestTimeout = value;
101101
return this;
102102
}
103103

104-
public Factory clientResponseFilters(ClientResponseFilter[] value) {
104+
public Builder clientResponseFilters(ClientResponseFilter[] value) {
105105
this.clientResponseFilters = value;
106106
return this;
107107
}
108108

109-
public Factory clientRequestFilters(ClientRequestFilter[] value) {
109+
public Builder clientRequestFilters(ClientRequestFilter[] value) {
110110
this.clientRequestFilters = value;
111111
return this;
112112
}
113113

114-
public Factory requestEntityProcessing(RequestEntityProcessing value) {
114+
public Builder requestEntityProcessing(RequestEntityProcessing value) {
115115
this.requestEntityProcessing = value;
116116
return this;
117117
}

docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/OkDockerHttpClient.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
public final class OkDockerHttpClient implements DockerHttpClient {
3030

31-
public static final class Factory {
31+
public static final class Builder {
3232

3333
private URI dockerHost = null;
3434

@@ -40,27 +40,27 @@ public static final class Factory {
4040

4141
private Boolean retryOnConnectionFailure = null;
4242

43-
public Factory dockerHost(URI value) {
43+
public Builder dockerHost(URI value) {
4444
this.dockerHost = Objects.requireNonNull(value, "dockerHost");
4545
return this;
4646
}
4747

48-
public Factory sslConfig(SSLConfig value) {
48+
public Builder sslConfig(SSLConfig value) {
4949
this.sslConfig = value;
5050
return this;
5151
}
5252

53-
public Factory readTimeout(Integer value) {
53+
public Builder readTimeout(Integer value) {
5454
this.readTimeout = value;
5555
return this;
5656
}
5757

58-
public Factory connectTimeout(Integer value) {
58+
public Builder connectTimeout(Integer value) {
5959
this.connectTimeout = value;
6060
return this;
6161
}
6262

63-
Factory retryOnConnectionFailure(Boolean value) {
63+
Builder retryOnConnectionFailure(Boolean value) {
6464
this.retryOnConnectionFailure = value;
6565
return this;
6666
}

docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/OkHttpDockerCmdExecFactory.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
import com.github.dockerjava.transport.DockerHttpClient;
1010

1111
/**
12-
* @deprecated use {@link OkDockerHttpClient} with {@link DockerClientImpl#withHttpClient(DockerHttpClient)}
12+
* @deprecated use {@link OkDockerHttpClient} with {@link DockerClientImpl#getInstance(DockerClientConfig, DockerHttpClient)}
1313
*/
1414
@Deprecated
1515
public class OkHttpDockerCmdExecFactory extends DelegatingDockerCmdExecFactory implements DockerClientConfigAware {
1616

17-
private OkDockerHttpClient.Factory clientFactory = new OkDockerHttpClient.Factory();
17+
private OkDockerHttpClient.Builder clientBuilder = new OkDockerHttpClient.Builder();
1818

1919
@Deprecated
2020
protected Integer connectTimeout;
@@ -28,7 +28,7 @@ public class OkHttpDockerCmdExecFactory extends DelegatingDockerCmdExecFactory i
2828
* Configure connection timeout in milliseconds
2929
*/
3030
public OkHttpDockerCmdExecFactory withConnectTimeout(Integer connectTimeout) {
31-
clientFactory = clientFactory.connectTimeout(connectTimeout);
31+
clientBuilder = clientBuilder.connectTimeout(connectTimeout);
3232
this.connectTimeout = connectTimeout;
3333
return this;
3434
}
@@ -37,13 +37,13 @@ public OkHttpDockerCmdExecFactory withConnectTimeout(Integer connectTimeout) {
3737
* Configure read timeout in milliseconds
3838
*/
3939
public OkHttpDockerCmdExecFactory withReadTimeout(Integer readTimeout) {
40-
clientFactory = clientFactory.readTimeout(readTimeout);
40+
clientBuilder = clientBuilder.readTimeout(readTimeout);
4141
this.readTimeout = readTimeout;
4242
return this;
4343
}
4444

4545
public OkHttpDockerCmdExecFactory setRetryOnConnectionFailure(Boolean retryOnConnectionFailure) {
46-
this.clientFactory = clientFactory.retryOnConnectionFailure(retryOnConnectionFailure);
46+
this.clientBuilder = clientBuilder.retryOnConnectionFailure(retryOnConnectionFailure);
4747
return this;
4848
}
4949

@@ -54,11 +54,11 @@ public final DockerCmdExecFactory getDockerCmdExecFactory() {
5454

5555
@Override
5656
public void init(DockerClientConfig dockerClientConfig) {
57-
clientFactory = clientFactory
57+
clientBuilder = clientBuilder
5858
.dockerHost(dockerClientConfig.getDockerHost())
5959
.sslConfig(dockerClientConfig.getSSLConfig());
6060
dockerCmdExecFactory = new DefaultDockerCmdExecFactory(
61-
clientFactory.build(),
61+
clientBuilder.build(),
6262
dockerClientConfig.getObjectMapper()
6363
);
6464
dockerCmdExecFactory.init(dockerClientConfig);

docker-java/pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,13 @@
116116
<artifactId>awaitility</artifactId>
117117
<version>4.0.1</version>
118118
</dependency>
119+
120+
<dependency>
121+
<groupId>org.projectlombok</groupId>
122+
<artifactId>lombok</artifactId>
123+
<version>1.18.12</version>
124+
<scope>provided</scope>
125+
</dependency>
119126
</dependencies>
120127

121128

0 commit comments

Comments
 (0)