From b2272e181c10b7155ec89ba67f4a521e2217693e Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Mon, 2 May 2022 17:17:54 -0400 Subject: [PATCH 1/4] split cxf/jersey builds --- pom.xml | 132 +++++++++++++----- .../inteligr8/rs/ClientCxfConfiguration.java | 0 .../com/inteligr8/rs/ClientCxfImpl.java | 0 .../com/inteligr8/rs/CxfLoggingFilter.java | 0 .../inteligr8/rs/CxfMultipartProvider.java | 0 .../rs/ClientJerseyConfiguration.java | 0 .../com/inteligr8/rs/ClientJerseyImpl.java | 0 7 files changed, 96 insertions(+), 36 deletions(-) rename src/main/{java => cxf}/com/inteligr8/rs/ClientCxfConfiguration.java (100%) rename src/main/{java => cxf}/com/inteligr8/rs/ClientCxfImpl.java (100%) rename src/main/{java => cxf}/com/inteligr8/rs/CxfLoggingFilter.java (100%) rename src/main/{java => cxf}/com/inteligr8/rs/CxfMultipartProvider.java (100%) rename src/main/{java => jersey}/com/inteligr8/rs/ClientJerseyConfiguration.java (100%) rename src/main/{java => jersey}/com/inteligr8/rs/ClientJerseyImpl.java (100%) diff --git a/pom.xml b/pom.xml index 6395b00..0d7605c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.inteligr8 common-rest-api - 1.1-SNAPSHOT + 2.0-SNAPSHOT ReST API Client for Java @@ -39,11 +39,6 @@ jackson-datatype-jsr310 2.12.2 - - org.glassfish.jersey.media - jersey-media-multipart - ${jersey.version} - org.slf4j slf4j-api @@ -54,36 +49,6 @@ jakarta.ws.rs-api 2.1.6 - - org.glassfish.jersey.ext - jersey-proxy-client - ${jersey.version} - provided - - - org.glassfish.jersey.core - jersey-client - ${jersey.version} - provided - - - org.apache.cxf - cxf-rt-rs-client - ${cxf.version} - provided - - - org.glassfish.jersey.inject - jersey-hk2 - ${jersey.version} - test - - - org.glassfish.jersey.media - jersey-media-json-jackson - ${jersey.version} - test - org.junit.jupiter junit-jupiter-api @@ -106,6 +71,37 @@ + + org.codehaus.mojo + build-helper-maven-plugin + 3.2.0 + + + add-jaxrs-src + add-source + + + src/main/${jaxrs.impl} + + + + + add-test-src + add-test-source + + + src/test/${jaxrs.impl} + + + + + + + maven-jar-plugin + + ${jaxrs.impl} + + maven-surefire-plugin 3.0.0-M5 @@ -144,6 +140,70 @@ + + + jaxrs-jersey + + true + + jaxrs.impl + jersey + + + + jersey + + + + org.glassfish.jersey.ext + jersey-proxy-client + ${jersey.version} + + + org.glassfish.jersey.core + jersey-client + ${jersey.version} + + + org.glassfish.jersey.media + jersey-media-multipart + ${jersey.version} + + + org.glassfish.jersey.inject + jersey-hk2 + ${jersey.version} + test + + + org.glassfish.jersey.media + jersey-media-json-jackson + ${jersey.version} + test + + + + + jaxrs-cxf + + + jaxrs.impl + cxf + + + + cxf + + + + org.apache.cxf + cxf-rt-rs-client + ${cxf.version} + + + + + inteligr8-public diff --git a/src/main/java/com/inteligr8/rs/ClientCxfConfiguration.java b/src/main/cxf/com/inteligr8/rs/ClientCxfConfiguration.java similarity index 100% rename from src/main/java/com/inteligr8/rs/ClientCxfConfiguration.java rename to src/main/cxf/com/inteligr8/rs/ClientCxfConfiguration.java diff --git a/src/main/java/com/inteligr8/rs/ClientCxfImpl.java b/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java similarity index 100% rename from src/main/java/com/inteligr8/rs/ClientCxfImpl.java rename to src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java diff --git a/src/main/java/com/inteligr8/rs/CxfLoggingFilter.java b/src/main/cxf/com/inteligr8/rs/CxfLoggingFilter.java similarity index 100% rename from src/main/java/com/inteligr8/rs/CxfLoggingFilter.java rename to src/main/cxf/com/inteligr8/rs/CxfLoggingFilter.java diff --git a/src/main/java/com/inteligr8/rs/CxfMultipartProvider.java b/src/main/cxf/com/inteligr8/rs/CxfMultipartProvider.java similarity index 100% rename from src/main/java/com/inteligr8/rs/CxfMultipartProvider.java rename to src/main/cxf/com/inteligr8/rs/CxfMultipartProvider.java diff --git a/src/main/java/com/inteligr8/rs/ClientJerseyConfiguration.java b/src/main/jersey/com/inteligr8/rs/ClientJerseyConfiguration.java similarity index 100% rename from src/main/java/com/inteligr8/rs/ClientJerseyConfiguration.java rename to src/main/jersey/com/inteligr8/rs/ClientJerseyConfiguration.java diff --git a/src/main/java/com/inteligr8/rs/ClientJerseyImpl.java b/src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java similarity index 100% rename from src/main/java/com/inteligr8/rs/ClientJerseyImpl.java rename to src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java From 3a003eff29fdc0a213af6696bd981cf92b1fc3e6 Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Mon, 2 May 2022 17:20:01 -0400 Subject: [PATCH 2/4] renamed to common-rest-client --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0d7605c..3d0ceec 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.inteligr8 - common-rest-api + common-rest-client 2.0-SNAPSHOT ReST API Client for Java From 53d9c7381da68b9b8d499f879f5149baf2d3c4dd Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Mon, 2 May 2022 17:41:16 -0400 Subject: [PATCH 3/4] allow singleton classes (might be bad) --- .../cxf/com/inteligr8/rs/ClientCxfImpl.java | 28 ++++++++++++----- .../com/inteligr8/rs/ClientJerseyImpl.java | 30 ++++++++++++++----- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java b/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java index c28bbd7..304508e 100644 --- a/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java +++ b/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java @@ -3,6 +3,7 @@ package com.inteligr8.rs; import java.util.LinkedList; import java.util.List; +import javax.annotation.PostConstruct; import javax.ws.rs.ext.RuntimeDelegate; import org.apache.cxf.BusFactory; @@ -11,7 +12,7 @@ import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Component; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; @@ -21,22 +22,31 @@ import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; * * @author brian@inteligr8.com */ -public abstract class ClientCxfImpl extends Client implements InitializingBean { +@Component("client.cxf") +public class ClientCxfImpl extends Client { private final Logger logger = LoggerFactory.getLogger(ClientCxfImpl.class); - @Override - protected abstract ClientCxfConfiguration getConfig(); + private ClientCxfConfiguration config; - @Override - public void afterPropertiesSet() { - this.register(); + /** + * This constructor is for Spring use and inheriting APIs + */ + protected ClientCxfImpl() { + } + + /** + * This constructor is for POJO use + */ + public ClientCxfImpl(ClientCxfConfiguration config) { + this.config = config; } /** * This method registers the Apache CXF library as the default provider for * the JAX-RS specification. */ + @PostConstruct public void register() { if (RuntimeDelegate.getInstance() == null) { this.logger.info("Setting JAX-RS runtime delegate to the CXF library"); @@ -94,6 +104,10 @@ public abstract class ClientCxfImpl extends Client implements InitializingBean { public void addProvidersAndFilters(List providersAndFilters) { // for extension purposes } + + protected ClientCxfConfiguration getConfig() { + return this.config; + } /** * This method retrieves a JAX-RS implementation of the specified API with diff --git a/src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java b/src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java index d3735cf..e2653c8 100644 --- a/src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java +++ b/src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java @@ -1,5 +1,6 @@ package com.inteligr8.rs; +import javax.annotation.PostConstruct; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.ext.RuntimeDelegate; @@ -9,7 +10,8 @@ import org.glassfish.jersey.internal.RuntimeDelegateImpl; import org.glassfish.jersey.media.multipart.MultiPartFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * A class that provides pre-configured JAX-RS Client & WebTarget objects @@ -17,22 +19,32 @@ import org.springframework.beans.factory.InitializingBean; * * @author brian@inteligr8.com */ -public abstract class ClientJerseyImpl extends Client implements InitializingBean { +@Component("client.jersey") +public class ClientJerseyImpl extends Client { private final Logger logger = LoggerFactory.getLogger(ClientJerseyImpl.class); - @Override - protected abstract ClientJerseyConfiguration getConfig(); + @Autowired + private ClientJerseyConfiguration config; - @Override - public void afterPropertiesSet() { - this.register(); + /** + * This constructor is for Spring use and inheriting APIs + */ + protected ClientJerseyImpl() { + } + + /** + * This constructor is for POJO use + */ + public ClientJerseyImpl(ClientJerseyConfiguration config) { + this.config = config; } /** * This method registers the Jersey library as the default provider for the * JAX-RS specification. */ + @PostConstruct public void register() { if (RuntimeDelegate.getInstance() == null) { this.logger.info("Setting JAX-RS runtime delegate to the Jersey library"); @@ -57,6 +69,10 @@ public abstract class ClientJerseyImpl extends Client implements InitializingBea clientBuilder.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); } } + + protected ClientJerseyConfiguration getConfig() { + return this.config; + } /** * This method retrieves a JAX-RS implementation of the specified API with From 78ccdb5713b84a88995abe24ee4129aad917bb90 Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Mon, 2 May 2022 18:08:10 -0400 Subject: [PATCH 4/4] config exposure --- src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java | 12 ++++-------- src/main/java/com/inteligr8/rs/Client.java | 2 +- .../jersey/com/inteligr8/rs/ClientJerseyImpl.java | 12 +++--------- 3 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java b/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java index 304508e..35829cd 100644 --- a/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java +++ b/src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java @@ -12,6 +12,7 @@ import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.jaxrs.impl.RuntimeDelegateImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; @@ -30,14 +31,9 @@ public class ClientCxfImpl extends Client { private ClientCxfConfiguration config; /** - * This constructor is for Spring use and inheriting APIs - */ - protected ClientCxfImpl() { - } - - /** - * This constructor is for POJO use + * This constructor is for Spring or POJO use */ + @Autowired public ClientCxfImpl(ClientCxfConfiguration config) { this.config = config; } @@ -105,7 +101,7 @@ public class ClientCxfImpl extends Client { // for extension purposes } - protected ClientCxfConfiguration getConfig() { + public ClientCxfConfiguration getConfig() { return this.config; } diff --git a/src/main/java/com/inteligr8/rs/Client.java b/src/main/java/com/inteligr8/rs/Client.java index 06a6128..74fe201 100644 --- a/src/main/java/com/inteligr8/rs/Client.java +++ b/src/main/java/com/inteligr8/rs/Client.java @@ -18,7 +18,7 @@ public abstract class Client { private final Object sync = new Object(); private javax.ws.rs.client.Client client; - protected abstract ClientConfiguration getConfig(); + public abstract ClientConfiguration getConfig(); /** * @return A pre-configured JAX-RS client (no URL) with configured authorization. diff --git a/src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java b/src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java index e2653c8..d693f90 100644 --- a/src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java +++ b/src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java @@ -24,18 +24,12 @@ public class ClientJerseyImpl extends Client { private final Logger logger = LoggerFactory.getLogger(ClientJerseyImpl.class); - @Autowired private ClientJerseyConfiguration config; /** - * This constructor is for Spring use and inheriting APIs - */ - protected ClientJerseyImpl() { - } - - /** - * This constructor is for POJO use + * This constructor is for Spring or POJO use */ + @Autowired public ClientJerseyImpl(ClientJerseyConfiguration config) { this.config = config; } @@ -70,7 +64,7 @@ public class ClientJerseyImpl extends Client { } } - protected ClientJerseyConfiguration getConfig() { + public ClientJerseyConfiguration getConfig() { return this.config; }