Skip to content

Commit 4de9f79

Browse files
authored
Introduce docker-java-transport module (#1402)
* Introduce `docker-java-transport` module * cleanups
1 parent 0d67452 commit 4de9f79

File tree

20 files changed

+169
-91
lines changed

20 files changed

+169
-91
lines changed

docker-java-core/pom.xml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@
2121
<artifactId>docker-java-api</artifactId>
2222
<version>${project.version}</version>
2323
</dependency>
24+
<dependency>
25+
<groupId>${project.groupId}</groupId>
26+
<artifactId>docker-java-transport</artifactId>
27+
<version>${project.version}</version>
28+
</dependency>
2429

2530
<dependency>
2631
<groupId>org.slf4j</groupId>
@@ -70,13 +75,6 @@
7075
<version>3.0.1u2</version>
7176
<scope>provided</scope>
7277
</dependency>
73-
74-
<dependency>
75-
<groupId>org.immutables</groupId>
76-
<artifactId>value</artifactId>
77-
<version>2.8.2</version>
78-
<scope>provided</scope>
79-
</dependency>
8078
</dependencies>
8179

8280
<build>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.github.dockerjava.transport.DockerHttpClient;
56
import com.google.common.collect.HashMultimap;
67
import com.google.common.collect.ImmutableList;
78
import com.google.common.collect.MultimapBuilder;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.github.dockerjava.api.exception.NotModifiedException;
1515
import com.github.dockerjava.api.exception.UnauthorizedException;
1616
import com.github.dockerjava.api.model.Frame;
17+
import com.github.dockerjava.transport.DockerHttpClient;
1718
import org.apache.commons.io.IOUtils;
1819

1920
import java.io.ByteArrayInputStream;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@
148148
import com.github.dockerjava.core.command.UpdateSwarmNodeCmdImpl;
149149
import com.github.dockerjava.core.command.VersionCmdImpl;
150150
import com.github.dockerjava.core.command.WaitContainerCmdImpl;
151+
import com.github.dockerjava.transport.DockerHttpClient;
151152

152153
import javax.annotation.Nonnull;
153154
import javax.annotation.Nullable;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.github.dockerjava.api.async.ResultCallback;
44
import com.github.dockerjava.api.model.Frame;
55
import com.github.dockerjava.api.model.StreamType;
6+
import com.github.dockerjava.transport.DockerHttpClient;
67

78
import java.io.InputStream;
89
import java.util.Arrays;
Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,10 @@
11
package com.github.dockerjava.core;
22

3-
import java.security.KeyManagementException;
4-
import java.security.KeyStoreException;
5-
import java.security.NoSuchAlgorithmException;
6-
import java.security.UnrecoverableKeyException;
7-
8-
import javax.net.ssl.SSLContext;
9-
103
/**
11-
* Get an SSL Config. Allows for various different implementations.
4+
*
5+
* @deprecated use {@link com.github.dockerjava.transport.SSLConfig}
126
*/
13-
public interface SSLConfig {
7+
@Deprecated
8+
public interface SSLConfig extends com.github.dockerjava.transport.SSLConfig {
149

15-
/**
16-
* Get the SSL Context, from wherever it comes (file, keystore).
17-
*
18-
* @return an SSL context.
19-
*/
20-
SSLContext getSSLContext() throws KeyManagementException, UnrecoverableKeyException, NoSuchAlgorithmException,
21-
KeyStoreException;
2210
}

docker-java-transport-httpclient5/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<dependencies>
1919
<dependency>
2020
<groupId>${project.groupId}</groupId>
21-
<artifactId>docker-java-core</artifactId>
21+
<artifactId>docker-java-transport</artifactId>
2222
<version>${project.version}</version>
2323
</dependency>
2424

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

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package com.github.dockerjava.httpclient5;
22

3-
import com.github.dockerjava.core.DockerClientConfig;
4-
import com.github.dockerjava.core.DockerHttpClient;
5-
import com.github.dockerjava.core.SSLConfig;
3+
import com.github.dockerjava.transport.SSLConfig;
4+
import com.github.dockerjava.transport.DockerHttpClient;
65
import org.apache.hc.client5.http.classic.methods.HttpUriRequestBase;
76
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
87
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
@@ -44,27 +43,35 @@ public final class ApacheDockerHttpClient implements DockerHttpClient {
4443

4544
public static final class Factory {
4645

47-
private DockerClientConfig dockerClientConfig = null;
46+
private URI dockerHost = null;
4847

49-
public Factory dockerClientConfig(DockerClientConfig value) {
50-
this.dockerClientConfig = value;
48+
private SSLConfig sslConfig = null;
49+
50+
public Factory dockerHost(URI value) {
51+
this.dockerHost = Objects.requireNonNull(value, "dockerHost");
52+
return this;
53+
}
54+
55+
public Factory sslConfig(SSLConfig value) {
56+
this.sslConfig = value;
5157
return this;
5258
}
5359

5460
public ApacheDockerHttpClient build() {
55-
Objects.requireNonNull(dockerClientConfig, "dockerClientConfig");
56-
return new ApacheDockerHttpClient(dockerClientConfig);
61+
Objects.requireNonNull(dockerHost, "dockerHost");
62+
return new ApacheDockerHttpClient(dockerHost, sslConfig);
5763
}
5864
}
5965

6066
private final CloseableHttpClient httpClient;
6167

6268
private final HttpHost host;
6369

64-
private ApacheDockerHttpClient(DockerClientConfig dockerClientConfig) {
65-
Registry<ConnectionSocketFactory> socketFactoryRegistry = createConnectionSocketFactoryRegistry(dockerClientConfig);
66-
67-
URI dockerHost = dockerClientConfig.getDockerHost();
70+
private ApacheDockerHttpClient(
71+
URI dockerHost,
72+
SSLConfig sslConfig
73+
) {
74+
Registry<ConnectionSocketFactory> socketFactoryRegistry = createConnectionSocketFactoryRegistry(sslConfig, dockerHost);
6875

6976
switch (dockerHost.getScheme()) {
7077
case "unix":
@@ -106,10 +113,12 @@ private ApacheDockerHttpClient(DockerClientConfig dockerClientConfig) {
106113
.build();
107114
}
108115

109-
private Registry<ConnectionSocketFactory> createConnectionSocketFactoryRegistry(DockerClientConfig dockerClientConfig) {
116+
private Registry<ConnectionSocketFactory> createConnectionSocketFactoryRegistry(
117+
SSLConfig sslConfig,
118+
URI dockerHost
119+
) {
110120
RegistryBuilder<ConnectionSocketFactory> socketFactoryRegistryBuilder = RegistryBuilder.create();
111121

112-
SSLConfig sslConfig = dockerClientConfig.getSSLConfig();
113122
if (sslConfig != null) {
114123
try {
115124
SSLContext sslContext = sslConfig.getSSLContext();
@@ -127,16 +136,12 @@ private Registry<ConnectionSocketFactory> createConnectionSocketFactoryRegistry(
127136
.register("unix", new PlainConnectionSocketFactory() {
128137
@Override
129138
public Socket createSocket(HttpContext context) throws IOException {
130-
URI dockerHost = dockerClientConfig.getDockerHost();
131-
132139
return new UnixDomainSocket(dockerHost.getPath());
133140
}
134141
})
135142
.register("npipe", new PlainConnectionSocketFactory() {
136143
@Override
137144
public Socket createSocket(HttpContext context) {
138-
URI dockerHost = dockerClientConfig.getDockerHost();
139-
140145
return new NamedPipeSocket(dockerHost.getPath());
141146
}
142147
})

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.github.dockerjava.core.DockerClientConfig;
77
import com.github.dockerjava.core.DockerClientConfigAware;
88
import com.github.dockerjava.core.DockerClientImpl;
9-
import com.github.dockerjava.core.DockerHttpClient;
9+
import com.github.dockerjava.transport.DockerHttpClient;
1010
import org.glassfish.jersey.client.RequestEntityProcessing;
1111

1212
import javax.ws.rs.client.ClientRequestFilter;
@@ -37,7 +37,9 @@ public final DockerCmdExecFactory getDockerCmdExecFactory() {
3737

3838
@Override
3939
public void init(DockerClientConfig dockerClientConfig) {
40-
clientFactory = clientFactory.dockerClientConfig(dockerClientConfig);
40+
clientFactory = clientFactory
41+
.dockerHost(dockerClientConfig.getDockerHost())
42+
.sslConfig(dockerClientConfig.getSSLConfig());
4143
dockerCmdExecFactory = new DefaultDockerCmdExecFactory(
4244
clientFactory.build(),
4345
dockerClientConfig.getObjectMapper()

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

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package com.github.dockerjava.jaxrs;
22

3-
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
43
import com.github.dockerjava.api.exception.DockerClientException;
54
import com.github.dockerjava.api.exception.DockerException;
6-
import com.github.dockerjava.core.DockerClientConfig;
7-
import com.github.dockerjava.core.DockerHttpClient;
8-
import com.github.dockerjava.core.SSLConfig;
5+
import com.github.dockerjava.transport.DockerHttpClient;
6+
import com.github.dockerjava.transport.SSLConfig;
97
import com.github.dockerjava.jaxrs.filter.ResponseStatusExceptionFilter;
108
import com.github.dockerjava.jaxrs.filter.SelectiveLoggingFilter;
119
import org.apache.http.client.config.RequestConfig;
@@ -42,12 +40,15 @@
4240
import java.net.URISyntaxException;
4341
import java.util.List;
4442
import java.util.Map;
43+
import java.util.Objects;
4544

4645
public final class JerseyDockerHttpClient implements DockerHttpClient {
4746

4847
public static final class Factory {
4948

50-
private DockerClientConfig dockerClientConfig = null;
49+
private URI dockerHost = null;
50+
51+
private SSLConfig sslConfig = null;
5152

5253
private Integer readTimeout = null;
5354

@@ -65,8 +66,13 @@ public static final class Factory {
6566

6667
private RequestEntityProcessing requestEntityProcessing;
6768

68-
public Factory dockerClientConfig(DockerClientConfig value) {
69-
this.dockerClientConfig = value;
69+
public Factory dockerHost(URI value) {
70+
this.dockerHost = Objects.requireNonNull(value, "dockerHost");
71+
return this;
72+
}
73+
74+
public Factory sslConfig(SSLConfig value) {
75+
this.sslConfig = value;
7076
return this;
7177
}
7278

@@ -112,7 +118,8 @@ public Factory requestEntityProcessing(RequestEntityProcessing value) {
112118

113119
public JerseyDockerHttpClient build() {
114120
return new JerseyDockerHttpClient(
115-
dockerClientConfig,
121+
dockerHost,
122+
sslConfig,
116123
maxTotalConnections,
117124
maxPerRouteConnections,
118125
connectionRequestTimeout,
@@ -134,7 +141,8 @@ public JerseyDockerHttpClient build() {
134141
private final URI originalUri;
135142

136143
private JerseyDockerHttpClient(
137-
DockerClientConfig dockerClientConfig,
144+
URI dockerHost,
145+
SSLConfig sslConfig,
138146
Integer maxTotalConnections,
139147
Integer maxPerRouteConnections,
140148
Integer connectionRequestTimeout,
@@ -152,12 +160,10 @@ private JerseyDockerHttpClient(
152160
clientConfig.property(ClientProperties.REQUEST_ENTITY_PROCESSING, requestEntityProcessing);
153161
}
154162

155-
clientConfig.register(new ResponseStatusExceptionFilter(dockerClientConfig.getObjectMapper()));
163+
clientConfig.register(new ResponseStatusExceptionFilter());
156164
// clientConfig.register(JsonClientFilter.class);
157165
RequestConfig.Builder requestConfigBuilder = RequestConfig.custom();
158166

159-
clientConfig.register(new JacksonJsonProvider(dockerClientConfig.getObjectMapper()));
160-
161167
// logging may disabled via log level
162168
clientConfig.register(new SelectiveLoggingFilter(LOGGER, true));
163169

@@ -187,12 +193,9 @@ private JerseyDockerHttpClient(
187193
}
188194
}
189195

190-
URI dockerHost = dockerClientConfig.getDockerHost();
191-
192196
SSLContext sslContext = null;
193197

194198
try {
195-
final SSLConfig sslConfig = dockerClientConfig.getSSLConfig();
196199
if (sslConfig != null) {
197200
sslContext = sslConfig.getSSLContext();
198201
}

0 commit comments

Comments
 (0)