diff options
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/msg')
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/msg/MsgClient.java | 80 | ||||
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java | 35 |
2 files changed, 28 insertions, 87 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java b/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java deleted file mode 100644 index d834eff..0000000 --- a/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java +++ /dev/null @@ -1,80 +0,0 @@ -package at.gv.egiz.moazs.msg; - -import at.gv.zustellung.msg.xsd.App2ZusePort; -import at.gv.zustellung.msg.xsd.App2ZusePortService; -import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType; -import at.gv.zustellung.msg.xsd.DeliveryRequestType; -import org.apache.cxf.configuration.jsse.TLSClientParameters; -import org.apache.cxf.endpoint.Client; -import org.apache.cxf.frontend.ClientProxy; -import org.apache.cxf.jaxws.JaxWsClientFactoryBean; -import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; -import org.apache.cxf.message.Message; -import org.apache.cxf.phase.PhaseInterceptor; -import org.apache.cxf.transport.http.HTTPConduit; -import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.lang.Nullable; - -import javax.net.ssl.SSLContext; - -//TODO: Rethink design. could this entire class be replaced? -// Because everything the send() method does could be initialized in -// the MsgClientFactory as well. -public class MsgClient { - - private static final Logger log = LoggerFactory.getLogger(MsgClient.class); - - private final PhaseInterceptor<? extends Message> interceptor; - - private final String address; - - //TODO: make configurable - private final int connectionTimeout = 0; - private final int receiveTimeout = 0; - - @Nullable - private final SSLContext sslContext; - - public MsgClient(PhaseInterceptor<? extends Message> interceptor, - String address, - @Nullable SSLContext sslContext) { - this.interceptor = interceptor; - this.address = address; - this.sslContext = sslContext; - } - - /** - * Send {@code msgRequest} to {@code Config/Server/ZUSEUrlID} and run {@code interceptor} on response. - * @return - */ - public DeliveryRequestStatusType send(DeliveryRequestType msgRequest) { - - var factory = new JaxWsClientFactoryBean(); - - factory.setServiceClass(App2ZusePort.class); - factory.setAddress(address); - factory.getInInterceptors().add(interceptor); - - var proxy = new JaxWsProxyFactoryBean(factory).create(); - - Client client = ClientProxy.getClient(proxy); - HTTPConduit http = (HTTPConduit) client.getConduit(); - - var httpClientPolicy = new HTTPClientPolicy(); - httpClientPolicy.setConnectionTimeout(connectionTimeout); - httpClientPolicy.setReceiveTimeout(receiveTimeout); - http.setClient(httpClientPolicy); - - if (sslContext != null) { - var tlsParams = new TLSClientParameters(); - tlsParams.setSSLSocketFactory(sslContext.getSocketFactory()); - http.setTlsClientParameters(tlsParams); - log.info("SSLContext initialized. "); - } - - return ((App2ZusePort)proxy).delivery(msgRequest); - } - -} diff --git a/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java b/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java index 071a243..c40aec1 100644 --- a/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java +++ b/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java @@ -4,7 +4,15 @@ import at.gv.egiz.moazs.util.FileUtils; import at.gv.egiz.moazs.util.SSLContextCreator; import at.gv.zustellung.app2mzs.xsd.ClientType; import at.gv.zustellung.app2mzs.xsd.KeyStoreType; +import at.gv.zustellung.msg.xsd.App2ZusePort; import com.sun.istack.Nullable; +import org.apache.cxf.configuration.jsse.TLSClientParameters; +import org.apache.cxf.endpoint.Client; +import org.apache.cxf.frontend.ClientProxy; +import org.apache.cxf.jaxws.JaxWsClientFactoryBean; +import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; +import org.apache.cxf.transport.http.HTTPConduit; +import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -23,7 +31,6 @@ public class MsgClientFactory { private final SSLContextCreator sslContextCreator; private final FileUtils fileUtils; - @Autowired public MsgClientFactory(StoreSOAPBodyBinaryInRepositoryInterceptor storeResponseInterceptor, SSLContextCreator creator, FileUtils fileUtils) { this.storeResponseInterceptor = storeResponseInterceptor; @@ -31,7 +38,6 @@ public class MsgClientFactory { this.fileUtils = fileUtils; } - /** * Creates a client that communicates with a msg service. * @@ -39,17 +45,33 @@ public class MsgClientFactory { * @return the msg client */ //TODO evaluate and honor laxhostnameverification and trustall parameter! - public MsgClient create(ClientType params) { + public App2ZusePort create(ClientType params) { + + var factory = new JaxWsClientFactoryBean(); + factory.setServiceClass(App2ZusePort.class); + factory.setAddress(params.getURL()); + factory.getInInterceptors().add(storeResponseInterceptor); - SSLContext sslContext = null; + var proxy = new JaxWsProxyFactoryBean(factory).create(); + Client client = ClientProxy.getClient(proxy); + HTTPConduit http = (HTTPConduit) client.getConduit(); + + var httpClientPolicy = new HTTPClientPolicy(); + httpClientPolicy.setConnectionTimeout(params.getConnectionTimeout().longValueExact()); + httpClientPolicy.setReceiveTimeout(params.getReceiveTimeout().longValueExact()); + http.setClient(httpClientPolicy); if (params.getURL().startsWith("https")) { var keystore = resolveKeyStorePath(params.getSSL().getKeyStore()); var truststore = resolveKeyStorePath(params.getSSL().getTrustStore()); - sslContext = sslContextCreator.createSSLContext(keystore, truststore); + SSLContext sslContext = sslContextCreator.createSSLContext(keystore, truststore); + var tlsParams = new TLSClientParameters(); + tlsParams.setSSLSocketFactory(sslContext.getSocketFactory()); + http.setTlsClientParameters(tlsParams); + log.info("SSLContext initialized. "); } - return new MsgClient(storeResponseInterceptor, params.getURL(), sslContext); + return ((App2ZusePort)proxy); } private KeyStoreType resolveKeyStorePath(@Nullable KeyStoreType store) { @@ -57,7 +79,6 @@ public class MsgClientFactory { if (store == null) return null; var resolvedURI = "file:" + fileUtils.determinePath(store.getFileName()); - log.trace("Resolved key store path from {} to {}.", store.getFileName(), resolvedURI); return keyStoreTypeBuilder(store) |