diff --git a/pom.xml b/pom.xml index 97848dc..59551ee 100644 --- a/pom.xml +++ b/pom.xml @@ -3,8 +3,8 @@ 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 - 1.1.6 + common-rest-client + 2.0.0 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 87% rename from src/main/java/com/inteligr8/rs/ClientCxfImpl.java rename to src/main/cxf/com/inteligr8/rs/ClientCxfImpl.java index c28bbd7..35829cd 100644 --- a/src/main/java/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,8 @@ 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.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; @@ -21,22 +23,26 @@ 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 or POJO use + */ + @Autowired + 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 +100,10 @@ public abstract class ClientCxfImpl extends Client implements InitializingBean { public void addProvidersAndFilters(List providersAndFilters) { // for extension purposes } + + public ClientCxfConfiguration getConfig() { + return this.config; + } /** * This method retrieves a JAX-RS implementation of the specified API with 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/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/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 80% rename from src/main/java/com/inteligr8/rs/ClientJerseyImpl.java rename to src/main/jersey/com/inteligr8/rs/ClientJerseyImpl.java index d3735cf..d693f90 100644 --- a/src/main/java/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,26 @@ 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(); + private ClientJerseyConfiguration config; - @Override - public void afterPropertiesSet() { - this.register(); + /** + * This constructor is for Spring or POJO use + */ + @Autowired + 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 +63,10 @@ public abstract class ClientJerseyImpl extends Client implements InitializingBea clientBuilder.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); } } + + public ClientJerseyConfiguration getConfig() { + return this.config; + } /** * This method retrieves a JAX-RS implementation of the specified API with