From e1f365955aa22cdf8e44429af2b744388ce0c05b Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Tue, 28 May 2019 10:48:20 +0200 Subject: Integrate Sign.Verification and Improve Error Handling of Pipeline - Ensure proper communication of errors between pipeline and mzs service by converting MoaZSExceptions into DeliveryRequestStatus messages. - Revise MoaZSException: Add optional fields; those fields are a) helpful to construct meaningful error messages and b) optional because, depending on where an exception appears, either existent or non-existent and thus optional. Add inner-class Builder. - Integrate Signature Verification into pipeline and add Stub for SignatureVerification. - Move TNVZResponse's Mimetype check into dedicated class (Reason: separate abstration layers). - Update api changes in testcases. --- src/main/java/at/gv/egiz/moazs/msg/MsgClient.java | 6 +----- src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java | 9 +-------- src/main/java/at/gv/egiz/moazs/msg/SignatureVerifier.java | 13 +++++++++++++ .../msg/StoreSOAPBodyBinaryInRepositoryInterceptor.java | 7 +++++-- 4 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 src/main/java/at/gv/egiz/moazs/msg/SignatureVerifier.java (limited to 'src/main/java/at/gv/egiz/moazs/msg') 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 fd36a92..82f172d 100644 --- a/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java +++ b/src/main/java/at/gv/egiz/moazs/msg/MsgClient.java @@ -8,18 +8,14 @@ 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) { + public MsgClient(DeliveryRequestType msgRequest, ConfigType config, PhaseInterceptor interceptor) { this.msgRequest = msgRequest; this.config = config; this.interceptor = interceptor; 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 82468bc..228ebec 100644 --- a/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java +++ b/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java @@ -8,14 +8,7 @@ import org.springframework.stereotype.Component; @Component public class MsgClientFactory { - private final StoreSOAPBodyBinaryInRepositoryInterceptor storeResponseInterceptor; - - @Autowired - public MsgClientFactory(StoreSOAPBodyBinaryInRepositoryInterceptor storeResponseInterceptor) { - this.storeResponseInterceptor = storeResponseInterceptor; - } - - public MsgClient create(DeliveryRequestType msgRequest, ConfigType config) { + public MsgClient create(DeliveryRequestType msgRequest, ConfigType config, StoreSOAPBodyBinaryInRepositoryInterceptor storeResponseInterceptor) { return new MsgClient(msgRequest, config, storeResponseInterceptor); } diff --git a/src/main/java/at/gv/egiz/moazs/msg/SignatureVerifier.java b/src/main/java/at/gv/egiz/moazs/msg/SignatureVerifier.java new file mode 100644 index 0000000..12b1ccb --- /dev/null +++ b/src/main/java/at/gv/egiz/moazs/msg/SignatureVerifier.java @@ -0,0 +1,13 @@ +package at.gv.egiz.moazs.msg; + +import org.springframework.stereotype.Component; + +@Component +public class SignatureVerifier { + + public boolean verify(byte[] signedXMLdocument) { + return true; + + } + +} diff --git a/src/main/java/at/gv/egiz/moazs/msg/StoreSOAPBodyBinaryInRepositoryInterceptor.java b/src/main/java/at/gv/egiz/moazs/msg/StoreSOAPBodyBinaryInRepositoryInterceptor.java index 4e023ac..c78c44b 100644 --- a/src/main/java/at/gv/egiz/moazs/msg/StoreSOAPBodyBinaryInRepositoryInterceptor.java +++ b/src/main/java/at/gv/egiz/moazs/msg/StoreSOAPBodyBinaryInRepositoryInterceptor.java @@ -1,6 +1,5 @@ package at.gv.egiz.moazs.msg; -import at.gv.egiz.moazs.MoaZSException; import at.gv.egiz.moazs.repository.DeliveryRepository; import at.gv.egiz.moazs.scheme.SOAPUtils; import at.gv.egiz.moazs.util.CXFMessageUtils; @@ -17,6 +16,8 @@ import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; +import static at.gv.egiz.moazs.MoaZSException.moaZSExceptionBuilder; + @Component public class StoreSOAPBodyBinaryInRepositoryInterceptor extends AbstractPhaseInterceptor { @@ -48,7 +49,9 @@ public class StoreSOAPBodyBinaryInRepositoryInterceptor extends AbstractPhaseInt log.info("Store binary DeliveryRequestStatus with AppDeliveryId={}", appDeliveryId); } } catch (ParserConfigurationException | SAXException | IOException | NullPointerException e) { - throw new MoaZSException("Could not extract signed data from message.", e); + throw moaZSExceptionBuilder("Could not extract signed data from message.") + .withCause(e) + .build(); } } -- cgit v1.2.3