Skip to content

Add Apache HttpClient 5 transport - #1358

Merged
bsideup merged 39 commits into
masterfrom
httpclient5_transport
Apr 7, 2020
Merged

Add Apache HttpClient 5 transport#1358
bsideup merged 39 commits into
masterfrom
httpclient5_transport

Conversation

@bsideup

@bsideup bsideup commented Apr 4, 2020

Copy link
Copy Markdown
Member

Adds a new, Apache HttpClient 5 based transport (without Jersey) that implements DockerHttpClient and supports input hijacking 🎉

bsideup added 15 commits March 19, 2020 20:39
# Conflicts:
#	docker-java-transport-common/src/main/java/com/github/dockerjava/transport/common/NamedPipeSocketFactory.java
#	docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/OkDockerHttpClient.java
#	docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/UnixSocketFactory.java
# Conflicts:
#	docker-java-transport-common/src/main/java/com/github/dockerjava/transport/common/NamedPipeSocketFactory.java
#	docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/OkDockerHttpClient.java
#	docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/UnixSocketFactory.java
@bsideup bsideup added this to the next milestone Apr 4, 2020
Comment on lines +49 to +69
class FakeFactory extends DelegatingDockerCmdExecFactory implements DockerClientConfigAware {

private DefaultDockerCmdExecFactory dockerCmdExecFactory;

@Override
public final DockerCmdExecFactory getDockerCmdExecFactory() {
return dockerCmdExecFactory;
}

@Override
public void init(DockerClientConfig dockerClientConfig) {
dockerCmdExecFactory = new DefaultDockerCmdExecFactory(
new ApacheDockerHttpClient.Factory()
.dockerClientConfig(dockerClientConfig)
.build(),
dockerClientConfig.getObjectMapper()
);
dockerCmdExecFactory.init(dockerClientConfig);
}
}
return new FakeFactory();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not a big deal but... why is there no standard factory class for this transport? I'm a bit unclear as to why there would be NettyDockerCmdExecFactory, JerseyDockerCmdExecFactory and OkHttpDockerCmdExecFactory but no corresponding one for this client.

@bsideup bsideup Apr 4, 2020

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okhttp's and jersey's DockerCmdExecFactory are deprecated (see #1351) in favour of their DockerHttpClient versions. I have not migrated Netty yet, but plan to.

Eventually, DockerCmdExecFactory will become an internal class of core, and all commands will share their execs

Since this PR adds a new module, there is no point in adding a deprecated type.

Also note that one can do withHttpClient(...) now instead of withDockerCmdExecFactory (deprecated)

@bsideup
bsideup merged commit e4eb048 into master Apr 7, 2020
@bsideup
bsideup deleted the httpclient5_transport branch April 7, 2020 12:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants