allow singleton classes (might be bad)

This commit is contained in:
Brian Long 2022-05-02 17:41:16 -04:00
parent 3a003eff29
commit 53d9c7381d
2 changed files with 44 additions and 14 deletions

View File

@ -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");
@ -95,6 +105,10 @@ public abstract class ClientCxfImpl extends Client implements InitializingBean {
// for extension purposes
}
protected ClientCxfConfiguration getConfig() {
return this.config;
}
/**
* This method retrieves a JAX-RS implementation of the specified API with
* the specified authorization.

View File

@ -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");
@ -58,6 +70,10 @@ public abstract class ClientJerseyImpl extends Client implements InitializingBea
}
}
protected ClientJerseyConfiguration getConfig() {
return this.config;
}
/**
* This method retrieves a JAX-RS implementation of the specified API with
* the specified authorization.