From 167d9814eb08e582355e83a5071c9c5b8c14d928 Mon Sep 17 00:00:00 2001 From: Stefan Bischof Date: Tue, 22 Feb 2022 19:18:50 +0100 Subject: [PATCH 1/2] Generate OSGi compliant manifest with bnd Signed-off-by: Stefan Bischof --- docker-java-api/pom.xml | 12 +++---- docker-java-core/pom.xml | 12 +++---- docker-java-transport-httpclient5/pom.xml | 13 ++++--- docker-java-transport-jersey/pom.xml | 12 +++---- docker-java-transport-netty/pom.xml | 12 +++---- docker-java-transport-okhttp/pom.xml | 12 +++---- docker-java-transport-zerodep/pom.xml | 12 +++---- docker-java-transport/pom.xml | 12 +++---- docker-java/pom.xml | 25 +++++++++---- pom.xml | 44 ++++++++++++++++++----- 10 files changed, 101 insertions(+), 65 deletions(-) diff --git a/docker-java-api/pom.xml b/docker-java-api/pom.xml index 1016da4ec4..9592323abc 100644 --- a/docker-java-api/pom.xml +++ b/docker-java-api/pom.xml @@ -68,13 +68,13 @@ - org.apache.felix - maven-bundle-plugin - true + biz.aQute.bnd + bnd-maven-plugin - - com.github.dockerjava.api.* - + diff --git a/docker-java-core/pom.xml b/docker-java-core/pom.xml index fed62f1a6c..a492e16893 100644 --- a/docker-java-core/pom.xml +++ b/docker-java-core/pom.xml @@ -80,13 +80,13 @@ - org.apache.felix - maven-bundle-plugin - true + biz.aQute.bnd + bnd-maven-plugin - - com.github.dockerjava.core.* - + diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml index 057739a39d..8fd72f8ac5 100644 --- a/docker-java-transport-httpclient5/pom.xml +++ b/docker-java-transport-httpclient5/pom.xml @@ -58,15 +58,14 @@ true - - org.apache.felix - maven-bundle-plugin - true + biz.aQute.bnd + bnd-maven-plugin - - com.github.dockerjava.httpclient5.* - + diff --git a/docker-java-transport-jersey/pom.xml b/docker-java-transport-jersey/pom.xml index c6e778c89e..ffacbf2c3e 100644 --- a/docker-java-transport-jersey/pom.xml +++ b/docker-java-transport-jersey/pom.xml @@ -114,13 +114,13 @@ - org.apache.felix - maven-bundle-plugin - true + biz.aQute.bnd + bnd-maven-plugin - - com.github.dockerjava.jaxrs.* - + diff --git a/docker-java-transport-netty/pom.xml b/docker-java-transport-netty/pom.xml index f9bc3bed98..cd94726c13 100644 --- a/docker-java-transport-netty/pom.xml +++ b/docker-java-transport-netty/pom.xml @@ -54,13 +54,13 @@ - org.apache.felix - maven-bundle-plugin - true + biz.aQute.bnd + bnd-maven-plugin - - com.github.dockerjava.netty.* - + diff --git a/docker-java-transport-okhttp/pom.xml b/docker-java-transport-okhttp/pom.xml index 41598807a9..2b07c498d1 100644 --- a/docker-java-transport-okhttp/pom.xml +++ b/docker-java-transport-okhttp/pom.xml @@ -64,13 +64,13 @@ - org.apache.felix - maven-bundle-plugin - true + biz.aQute.bnd + bnd-maven-plugin - - com.github.dockerjava.okhttp.* - + diff --git a/docker-java-transport-zerodep/pom.xml b/docker-java-transport-zerodep/pom.xml index 7d3fb40341..0b1c62715d 100644 --- a/docker-java-transport-zerodep/pom.xml +++ b/docker-java-transport-zerodep/pom.xml @@ -35,13 +35,13 @@ - org.apache.felix - maven-bundle-plugin - true + biz.aQute.bnd + bnd-maven-plugin - - com.github.dockerjava.zerodep.* - + diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml index a7e76095d4..504452d912 100644 --- a/docker-java-transport/pom.xml +++ b/docker-java-transport/pom.xml @@ -41,13 +41,13 @@ - org.apache.felix - maven-bundle-plugin - true + biz.aQute.bnd + bnd-maven-plugin - - com.github.dockerjava.transport.* - + diff --git a/docker-java/pom.xml b/docker-java/pom.xml index 453851ce13..61a9c6fed1 100644 --- a/docker-java/pom.xml +++ b/docker-java/pom.xml @@ -175,16 +175,27 @@ - org.apache.felix - maven-bundle-plugin - true + biz.aQute.bnd + bnd-maven-plugin - - !com.github.dockerjava.jaxrs.*,!com.github.dockerjava.netty.*,com.github.dockerjava.* - org.newsclub.net.unix;resolution:="optional",* - + false + + diff --git a/pom.xml b/pom.xml index 7da7062b3e..b920a25e18 100644 --- a/pom.xml +++ b/pom.xml @@ -80,7 +80,6 @@ 3.3.0 - 3.0.2 3.8.1 3.0.0-M1 3.0.0-M4 @@ -105,6 +104,20 @@ docker-java + + + bnd_snapshot_remove_after_release + https://bndtools.jfrog.io/bndtools/libs-snapshot/ + + true + + default + + false + + + + @@ -153,11 +166,19 @@ - org.apache.maven.plugins - maven-jar-plugin - ${maven-jar-plugin.version} + biz.aQute.bnd + bnd-maven-plugin + 6.3.0-SNAPSHOT + true + bnd-jar + + jar + + + + bnd-test-jar test-jar @@ -226,11 +247,6 @@ - - org.apache.felix - maven-bundle-plugin - 4.2.1 - @@ -282,6 +298,16 @@ + + biz.aQute.bnd + bnd-maven-plugin + + + + org.apache.maven.plugins maven-source-plugin From 16cb0f17a1f362ca1cf4e38b4e3893ec4900d2ab Mon Sep 17 00:00:00 2001 From: Stefan Bischof Date: Thu, 24 Feb 2022 13:29:30 +0100 Subject: [PATCH 2/2] Add OSGiService Support --- docker-java-transport-httpclient5/pom.xml | 14 +++++ .../OSGiApacheDockerHttpClientService.java | 56 +++++++++++++++++++ docker-java-transport/pom.xml | 7 +++ .../transport/DockerHttpClientType.java | 17 ++++++ 4 files changed, 94 insertions(+) create mode 100644 docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/OSGiApacheDockerHttpClientService.java create mode 100644 docker-java-transport/src/main/java/com/github/dockerjava/transport/DockerHttpClientType.java diff --git a/docker-java-transport-httpclient5/pom.xml b/docker-java-transport-httpclient5/pom.xml index 8fd72f8ac5..970bcd18cf 100644 --- a/docker-java-transport-httpclient5/pom.xml +++ b/docker-java-transport-httpclient5/pom.xml @@ -34,6 +34,20 @@ + + org.osgi + org.osgi.service.component.annotations + 1.5.0 + provided + + + + org.osgi + org.osgi.service.metatype.annotations + 1.4.1 + provided + + net.java.dev.jna jna diff --git a/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/OSGiApacheDockerHttpClientService.java b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/OSGiApacheDockerHttpClientService.java new file mode 100644 index 0000000000..931c80f918 --- /dev/null +++ b/docker-java-transport-httpclient5/src/main/java/com/github/dockerjava/httpclient5/OSGiApacheDockerHttpClientService.java @@ -0,0 +1,56 @@ +package com.github.dockerjava.httpclient5; + +import java.io.IOException; +import java.net.URI; +import java.time.Duration; + +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.metatype.annotations.ObjectClassDefinition; + +import com.github.dockerjava.transport.DockerHttpClient; +import com.github.dockerjava.transport.DockerHttpClientType; + +@DockerHttpClientType(value = OSGiApacheDockerHttpClientService.APACHE_HTTPCLIENT_5, transports = { DockerHttpClientType.TRANSPORT_STDIN_ATTACHMENT, + DockerHttpClientType.TRANSPORT_WINDOWS_NPIPE, DockerHttpClientType.TRANSPORT_UNIX_SOCKETS }) +@Component(service = DockerHttpClient.class, immediate = true, name = OSGiApacheDockerHttpClientService.PID) +public class OSGiApacheDockerHttpClientService extends ApacheDockerHttpClientImpl { + + static final String APACHE_HTTPCLIENT_5 = "apache.httpclient.5"; + public static final String PID = "com.github.dockerjava.httpclient5.basic"; + + @ObjectClassDefinition(pid = PID) + @interface Config { + String dockerHost() default "localhost"; + + int maxConnections() default Integer.MAX_VALUE;; + + long connectionTimeoutNanos() default -1; + + long responseTimeoutNanos() default -1; + } + + @Activate + protected OSGiApacheDockerHttpClientService(Config config) { + super(toDockerHost(config.dockerHost()), null, config.maxConnections(), + toDurationNanos(config.connectionTimeoutNanos()), toDurationNanos(config.responseTimeoutNanos())); + } + + private static Duration toDurationNanos(long value) { + if (value < 0) { + return null; + } + return Duration.ofNanos(value); + } + + private static URI toDockerHost(String config) { + return URI.create(config); + } + + @Deactivate + public void deactivate() throws IOException { + close(); + } + +} diff --git a/docker-java-transport/pom.xml b/docker-java-transport/pom.xml index 504452d912..24aba9e2ba 100644 --- a/docker-java-transport/pom.xml +++ b/docker-java-transport/pom.xml @@ -36,6 +36,13 @@ 5.8.0 provided + + + org.osgi + org.osgi.service.component.annotations + 1.5.0 + provided + diff --git a/docker-java-transport/src/main/java/com/github/dockerjava/transport/DockerHttpClientType.java b/docker-java-transport/src/main/java/com/github/dockerjava/transport/DockerHttpClientType.java new file mode 100644 index 0000000000..aeadfd8e13 --- /dev/null +++ b/docker-java-transport/src/main/java/com/github/dockerjava/transport/DockerHttpClientType.java @@ -0,0 +1,17 @@ +package com.github.dockerjava.transport; + +import org.osgi.service.component.annotations.ComponentPropertyType; + +@ComponentPropertyType +public @interface DockerHttpClientType { + + public static final String TRANSPORT_UNIX_SOCKETS = "unix.sockets"; + + public static final String TRANSPORT_WINDOWS_NPIPE = "windows.npipe"; + + public static final String TRANSPORT_STDIN_ATTACHMENT = "stdin.attacgment"; + + String value(); + + String[] transports(); +}