Remove JAXRS/ApacheConnector implementation specific properties from DockerClientConfig by marcuslinke · Pull Request #282 · docker-java/docker-java · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 5 additions & 107 deletions src/main/java/com/github/dockerjava/core/DockerClientConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import javax.net.ssl.SSLContext;
import javax.ws.rs.client.Client;
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 org.apache.http.config.RegistryBuilder;
Expand Down Expand Up @@ -62,13 +64,13 @@
import com.github.dockerjava.api.command.VersionCmd;
import com.github.dockerjava.api.command.WaitContainerCmd;
import com.github.dockerjava.core.DockerClientConfig;
import com.github.dockerjava.core.util.FollowRedirectsFilter;
import com.github.dockerjava.core.util.JsonClientFilter;
import com.github.dockerjava.core.util.ResponseStatusExceptionFilter;
import com.github.dockerjava.core.util.SelectiveLoggingFilter;
//import org.glassfish.jersey.apache.connector.ApacheConnectorProvider;
// see https://github.com/docker-java/docker-java/issues/196
import com.github.dockerjava.jaxrs.connector.ApacheConnectorProvider;
import com.github.dockerjava.jaxrs.filter.FollowRedirectsFilter;
import com.github.dockerjava.jaxrs.filter.JsonClientFilter;
import com.github.dockerjava.jaxrs.filter.ResponseStatusExceptionFilter;
import com.github.dockerjava.jaxrs.filter.SelectiveLoggingFilter;

public class DockerCmdExecFactoryImpl implements DockerCmdExecFactory {

Expand All @@ -78,6 +80,18 @@ public class DockerCmdExecFactoryImpl implements DockerCmdExecFactory {

private WebTarget baseResource;

private Integer readTimeout = null;

private Integer connectTimeout = null;

private Integer maxTotalConnections = null;

private Integer maxPerRouteConnections = null;

private ClientRequestFilter[] clientRequestFilters = null;

private ClientResponseFilter[] clientResponseFilters = null;

@Override
public void init(DockerClientConfig dockerClientConfig) {
checkNotNull(dockerClientConfig, "config was not specified");
Expand All @@ -90,20 +104,30 @@ public void init(DockerClientConfig dockerClientConfig) {
clientConfig.register(JsonClientFilter.class);
clientConfig.register(JacksonJsonProvider.class);

if (dockerClientConfig.followRedirectsFilterEnabled()) {
clientConfig.register(FollowRedirectsFilter.class);
// logging may disabled via log level
clientConfig.register(new SelectiveLoggingFilter(LOGGER, true));

if (readTimeout != null) {
clientConfig.property(ClientProperties.READ_TIMEOUT, readTimeout);
}

if (dockerClientConfig.isLoggingFilterEnabled()) {
clientConfig.register(new SelectiveLoggingFilter(LOGGER, true));
if (connectTimeout != null) {
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, connectTimeout);
}

if (dockerClientConfig.getReadTimeout() != null) {
int readTimeout = dockerClientConfig.getReadTimeout();
clientConfig.property(ClientProperties.READ_TIMEOUT, readTimeout);
if (clientResponseFilters != null) {
for (ClientResponseFilter clientResponseFilter : clientResponseFilters) {
if (clientResponseFilter != null)
clientConfig.register(clientResponseFilter);
}
}

// clientConfig.property(ClientProperties.CONNECT_TIMEOUT, 10000);
if (clientRequestFilters != null) {
for (ClientRequestFilter clientRequestFilter : clientRequestFilters) {
if(clientRequestFilter != null)
clientConfig.register(clientRequestFilter);
}
}

URI originalUri = dockerClientConfig.getUri();

Expand All @@ -120,10 +144,10 @@ public void init(DockerClientConfig dockerClientConfig) {
PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(getSchemeRegistry(
originalUri, sslContext));

if (dockerClientConfig.getMaxTotalConnections() != null)
connManager.setMaxTotal(dockerClientConfig.getMaxTotalConnections());
if (dockerClientConfig.getMaxPerRoutConnections() != null)
connManager.setDefaultMaxPerRoute(dockerClientConfig.getMaxPerRoutConnections());
if (maxTotalConnections != null)
connManager.setMaxTotal(maxTotalConnections);
if (maxPerRouteConnections != null)
connManager.setDefaultMaxPerRoute(maxPerRouteConnections);

clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, connManager);

Expand Down Expand Up @@ -353,4 +377,34 @@ public void close() throws IOException {
client.close();
}

public DockerCmdExecFactoryImpl withReadTimeout(Integer readTimeout) {
this.readTimeout = readTimeout;
return this;
}

public DockerCmdExecFactoryImpl withConnectTimeout(Integer connectTimeout) {
this.connectTimeout = connectTimeout;
return this;
}

public DockerCmdExecFactoryImpl withMaxTotalConnections(Integer maxTotalConnections) {
this.maxTotalConnections = maxTotalConnections;
return this;
}

public DockerCmdExecFactoryImpl withMaxPerRouteConnections(Integer maxPerRouteConnections) {
this.maxPerRouteConnections = maxPerRouteConnections;
return this;
}

public DockerCmdExecFactoryImpl withClientResponseFilters(ClientResponseFilter... clientResponseFilter) {
this.clientResponseFilters = clientResponseFilter;
return this;
}

public DockerCmdExecFactoryImpl withClientRequestFilters(ClientRequestFilter... clientRequestFilters) {
this.clientRequestFilters = clientRequestFilters;
return this;
}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.github.dockerjava.core.util;
package com.github.dockerjava.jaxrs.filter;

import java.io.IOException;
import java.io.InputStream;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.github.dockerjava.core.util;
package com.github.dockerjava.jaxrs.filter;

import java.io.IOException;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.github.dockerjava.core.util;
package com.github.dockerjava.jaxrs.filter;

/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.github.dockerjava.core.util;
package com.github.dockerjava.jaxrs.filter;

import java.io.EOFException;
import java.io.IOException;
Expand Down
Loading