aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/msg
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-03 15:27:14 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-03 15:27:14 +0200
commit78f0715d86a055aed11138df5f66b0794e72326a (patch)
tree4f5e16fea5740e25ee22e98e8940fa28365a2a93 /src/main/java/at/gv/egiz/moazs/msg
parent8bcd9c265198e8d46e2ec862ca6e0cb47838bd7f (diff)
downloadmoa-zs-78f0715d86a055aed11138df5f66b0794e72326a.tar.gz
moa-zs-78f0715d86a055aed11138df5f66b0794e72326a.tar.bz2
moa-zs-78f0715d86a055aed11138df5f66b0794e72326a.zip
Refactor: Restructure Project
- Move components that depend on the service contracts into scheme package. - Move cxf related components into util package. - Rename SameThread to SingleThreaded.
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/msg')
-rw-r--r--src/main/java/at/gv/egiz/moazs/msg/ClientFactory.java113
-rw-r--r--src/main/java/at/gv/egiz/moazs/msg/StoreSOAPBodyBinaryInRepositoryInterceptor.java65
2 files changed, 0 insertions, 178 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/msg/ClientFactory.java b/src/main/java/at/gv/egiz/moazs/msg/ClientFactory.java
deleted file mode 100644
index c2ad4a7..0000000
--- a/src/main/java/at/gv/egiz/moazs/msg/ClientFactory.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package at.gv.egiz.moazs.msg;
-
-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.app2mzs.xsd.SSLType;
-import javax.xml.ws.soap.SOAPBinding;
-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;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Nullable;
-import javax.net.ssl.SSLContext;
-import javax.xml.ws.BindingProvider;
-
-import static at.gv.zustellung.app2mzs.xsd.KeyStoreType.keyStoreTypeBuilder;
-
-@Component
-public class ClientFactory {
-
- private static final Logger log = LoggerFactory.getLogger(ClientFactory.class);
-
- private final StoreSOAPBodyBinaryInRepositoryInterceptor storeResponseInterceptor;
- private final SSLContextCreator sslContextCreator;
- private final FileUtils fileUtils;
-
- @Autowired
- public ClientFactory(StoreSOAPBodyBinaryInRepositoryInterceptor storeResponseInterceptor,
- SSLContextCreator creator,
- FileUtils fileUtils) {
- this.storeResponseInterceptor = storeResponseInterceptor;
- this.sslContextCreator = creator;
- this.fileUtils = fileUtils;
- }
-
- /**
- * Creates a client that communicates with a soap service.
- *
- * @param params for the client, such as service url and ssl parameters.
- * @return the client
- */
- public <T> T create(ClientType params, Class<T> clazz) {
-
- var factory = new JaxWsClientFactoryBean();
- factory.setServiceClass(clazz);
- factory.setAddress(params.getURL());
- factory.getInInterceptors().add(storeResponseInterceptor);
-
- var proxy = new JaxWsProxyFactoryBean(factory).create();
- Client client = ClientProxy.getClient(proxy);
- HTTPConduit http = (HTTPConduit) client.getConduit();
-
- var bindingProvider = (BindingProvider) proxy;
- SOAPBinding binding = (SOAPBinding) bindingProvider.getBinding();
- binding.setMTOMEnabled(true);
-
- var httpClientPolicy = new HTTPClientPolicy();
- httpClientPolicy.setConnectionTimeout(params.getConnectionTimeout().longValueExact());
- httpClientPolicy.setReceiveTimeout(params.getReceiveTimeout().longValueExact());
- http.setClient(httpClientPolicy);
-
- if (params.getURL().startsWith("https")) {
- TLSClientParameters tlsParams = setupTLSParams(params.getSSL());
- http.setTlsClientParameters(tlsParams);
- log.info("SSLContext initialized. ");
- }
-
- return ((T)proxy);
- }
-
- private TLSClientParameters setupTLSParams(SSLType ssl) {
-
- var tlsParams = new TLSClientParameters();
- var keystore = resolveKeyStorePath(ssl.getKeyStore());
-
- SSLContext sslContext;
- if (ssl.isTrustAll()) {
- sslContext = sslContextCreator.createUnsafeSSLContext(keystore);
- } else {
- var truststore = resolveKeyStorePath(ssl.getTrustStore());
- sslContext = sslContextCreator.createSSLContext(keystore, truststore);
- }
- tlsParams.setSSLSocketFactory(sslContext.getSocketFactory());
-
- if (ssl.isLaxHostNameVerification()) {
- tlsParams.setDisableCNCheck(true);
- }
-
- return tlsParams;
- }
-
- private KeyStoreType resolveKeyStorePath(@Nullable KeyStoreType store) {
-
- 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)
- .withFileName(resolvedURI)
- .build();
- }
-
-}
diff --git a/src/main/java/at/gv/egiz/moazs/msg/StoreSOAPBodyBinaryInRepositoryInterceptor.java b/src/main/java/at/gv/egiz/moazs/msg/StoreSOAPBodyBinaryInRepositoryInterceptor.java
deleted file mode 100644
index ac3acc6..0000000
--- a/src/main/java/at/gv/egiz/moazs/msg/StoreSOAPBodyBinaryInRepositoryInterceptor.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package at.gv.egiz.moazs.msg;
-
-import at.gv.egiz.moazs.repository.DeliveryRepository;
-import at.gv.egiz.moazs.scheme.SOAPUtils;
-import at.gv.egiz.moazs.util.CXFMessageUtils;
-import org.apache.cxf.message.Message;
-import org.apache.cxf.phase.AbstractPhaseInterceptor;
-import org.apache.cxf.phase.Phase;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-
-import static at.gv.egiz.moazs.MoaZSException.moaZSException;
-
-@Component
-public class StoreSOAPBodyBinaryInRepositoryInterceptor extends AbstractPhaseInterceptor<Message> {
-
- private static final Logger log = LoggerFactory.getLogger(StoreSOAPBodyBinaryInRepositoryInterceptor.class);
-
- private final CXFMessageUtils messageUtils;
- private final SOAPUtils soapUtils;
- private final DeliveryRepository repository;
-
- @Autowired
- public StoreSOAPBodyBinaryInRepositoryInterceptor(CXFMessageUtils extractor, SOAPUtils soapUtils,
- DeliveryRepository repository) {
- super(Phase.RECEIVE);
- this.messageUtils = extractor;
- this.soapUtils = soapUtils;
- this.repository = repository;
- }
-
- public void handleMessage(Message message) {
-
- try {
- byte[] content = messageUtils.copyContent(message);
-
- if(log.isTraceEnabled()) {
- log.trace("Interceptor received this SOAP message: {}. ", new String(content, StandardCharsets.UTF_8));
- }
-
- if(content.length > 0) {
- Element document = soapUtils.toDOM(content);
- byte[] status = soapUtils.unwrapSoapEnvelope(document);
- String appDeliveryID = soapUtils.getAppDeliveryIDFrom(document);
- repository.addSignedDeliveryRequestStatus(status, appDeliveryID);
-
- if(log.isTraceEnabled()) {
- log.trace("DeliveryRequestStatus with AppDeliveryID={} unwrapped and stored: {}. ",
- appDeliveryID, new String(status, StandardCharsets.UTF_8));
- }
- }
- } catch (ParserConfigurationException | SAXException | IOException | NullPointerException e) {
- throw moaZSException("Could not extract signed data from message.", e);
- }
- }
-
-}