package at.gv.egiz.moazs.msg; import at.gv.zustellung.app2mzs.xsd.ConfigType; import at.gv.zustellung.msg.xsd.App2ZusePort; 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; public class MsgClient { private static final Logger log = LoggerFactory.getLogger(MsgClient.class); private final DeliveryRequestType msgRequest; private final ConfigType config; private final PhaseInterceptor interceptor; 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) { var address = config.getServer().getZUSEUrlID(); var factory = new JaxWsClientFactoryBean(); factory.setServiceClass(App2ZusePort.class); factory.setAddress(address); factory.getInInterceptors().add(interceptor); var proxy = new JaxWsProxyFactoryBean(factory).create(); return (App2ZusePort) proxy; } }