From 695ab1f836160d40c4352a2c3127f4f687912817 Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Mon, 27 May 2019 09:46:36 +0200 Subject: Intercept Incoming DeliveryRequestStatus and Store as byte[] - Add egovutils dependency (Reason: Need DomUtils to serialize / unserialize Soap Message via DOMParser) - Add Incerceptor to MsgClient / -Factory that stores the message content byte-by-byte in the DeliveryRepository. The format is required for successfully validating a DeliveryRequestStatus. - Add SoapUtils, which interacts with byte[] Soap message. - Add CXFMessageUtils, which interacts with CXF Messages from interceptor chains. - Refactor xsd namespaces: Move them out from the PrefixMapper and into a dedicated class. --- src/main/java/at/gv/egiz/moazs/msg/MsgClient.java | 43 +++++++---------------- 1 file changed, 13 insertions(+), 30 deletions(-) (limited to 'src/main/java/at/gv/egiz/moazs/msg/MsgClient.java') diff --git a/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java b/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java index 6f0b1d9..fd36a92 100644 --- a/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java +++ b/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java @@ -6,6 +6,8 @@ import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType; import at.gv.zustellung.msg.xsd.DeliveryRequestType; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,53 +17,34 @@ public class MsgClient { private final DeliveryRequestType msgRequest; private final ConfigType config; + private final PhaseInterceptor interceptor; - MsgClient(DeliveryRequestType msgRequest, ConfigType config) { + MsgClient(DeliveryRequestType msgRequest, ConfigType config, PhaseInterceptor interceptor) { this.msgRequest = msgRequest; this.config = config; + this.interceptor = interceptor; } + /** + * Send {@code msgRequest} to {@code Config/Server/ZUSEUrlID} and run {@code interceptor} on response. + * @return + */ public DeliveryRequestStatusType send() { - var proxy = connect(config); - return proxy.delivery(msgRequest); - } private App2ZusePort connect(ConfigType config) { - new JaxWsClientFactoryBean(); - var address = config.getServer().getZUSEUrlID(); - var factory = new JaxWsProxyFactoryBean(); + + var factory = new JaxWsClientFactoryBean(); factory.setServiceClass(App2ZusePort.class); factory.setAddress(address); + factory.getInInterceptors().add(interceptor); - var proxy = factory.create(); - -// var client = ClientProxy.getClient(proxy); -// var conduit = (HTTPConduit) client.getConduit(); -// -// if (addressIsHttps(address)) { -// var tlsParams = new TLSClientParameters(); -// tlsParams.setSSLSocketFactory(createSSLContext().getSocketFactory()); -// conduit.setTlsClientParameters(tlsParams); -// } + var proxy = new JaxWsProxyFactoryBean(factory).create(); return (App2ZusePort) proxy; } - -// private SSLContext createSSLContext() { -// java.util.Properties props = new Properties(); -// props.entrySet(); -// -// // return SSLUtils.getPropertiesSSLContext(this.props, this.configDir, this.propsPrefix, forceTrustAllManager); -// return null; -// } - - private boolean addressIsHttps(String address) { - return address.startsWith("https://"); - } - } -- cgit v1.2.3