From 030488bb7ff9572f35032d80d4101c06cfc98bf5 Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Tue, 2 Jul 2019 14:19:41 +0200 Subject: Implement And Integrate tnvz:QueryPersonRequest. - Merge TnvzClient and TnvzResultVerifier to TnvzHelper; TnvzHelper now builds the QueryPersonRequest, sends it to the tnvz port and evaluates the result. - Publish some interfaces in Mzs2MsgConverter because they are needed by TnvzHelper. - Generalize MsgClientFactory to ClientFactory such that it can be used to generate arbitrary SOAP clients (e.g. also for tnvz!). Schema Changes to accomodate Tnvz's QueryPersonRequest: - Add optional tnvz:AustrianAddressesOnly and optional TnvzMetaData to mzs:mzs:DeliveryRequest. Removed Unit Tests: - Remove subset of SameThreadDeliveryPipeline testcases (mimetype related) because its logic moved to TnvzHelper. --- .../moazs/pipeline/SameThreadDeliveryPipeline.java | 61 ++++++++++------------ 1 file changed, 28 insertions(+), 33 deletions(-) (limited to 'src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java') diff --git a/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java b/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java index 2e0433f..ecf580d 100644 --- a/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java +++ b/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java @@ -2,17 +2,17 @@ package at.gv.egiz.moazs.pipeline; import at.gv.egiz.moazs.MoaZSException; -import at.gv.egiz.moazs.msg.MsgClientFactory; -import at.gv.egiz.moazs.verify.SignatureVerifier; +import at.gv.egiz.moazs.msg.ClientFactory; import at.gv.egiz.moazs.repository.DeliveryRepository; import at.gv.egiz.moazs.scheme.Mzs2MsgConverter; import at.gv.egiz.moazs.scheme.NameSpace; -import at.gv.egiz.moazs.tnvz.TnvzClient; -import at.gv.egiz.moazs.tnvz.TnvzResultVerifier; +import at.gv.egiz.moazs.tnvz.TnvzHelper; +import at.gv.egiz.moazs.verify.SignatureVerifier; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; +import at.gv.zustellung.msg.xsd.App2ZusePort; import at.gv.zustellung.msg.xsd.DeliveryAnswerType; import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType; -import at.gv.zustellung.tnvz.xsd.PersonResultType; +import at.gv.zustellung.tnvz.xsd.TNVZServicePort; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; @@ -32,54 +32,43 @@ public class SameThreadDeliveryPipeline implements DeliveryPipeline { private static final Logger log = Logger.getLogger(SameThreadDeliveryPipeline.class); private final DeliveryRepository repository; - private final TnvzClient tnvzClient; - private final TnvzResultVerifier tnvzVerifier; + private final TnvzHelper tnvzHelper; private final Mzs2MsgConverter converter; - private final MsgClientFactory msgClientFactory; + private final ClientFactory clientFactory; private final SignatureVerifier verifier; @Autowired public SameThreadDeliveryPipeline(DeliveryRepository repository, - TnvzClient tnvzClient, - TnvzResultVerifier tnvzVerifier, + TnvzHelper tnvzHelper, Mzs2MsgConverter converter, - MsgClientFactory msgClientFactory, + ClientFactory clientFactory, SignatureVerifier verifier ) { this.repository = repository; - this.tnvzClient = tnvzClient; - this.tnvzVerifier = tnvzVerifier; + this.tnvzHelper = tnvzHelper; this.converter = converter; - this.msgClientFactory = msgClientFactory; + this.clientFactory = clientFactory; this.verifier = verifier; } @Override public void processRequest(String appDeliveryId) { - var exceptionBuilder = moaZSExceptionBuilder(""); + var exceptionBuilder = moaZSExceptionBuilder(); try { var mzsRequest = repository.getDeliveryRequest(appDeliveryId).orElseThrow(); exceptionBuilder.withMzsRequest(mzsRequest); - at.gv.zustellung.msg.xsd.DeliveryRequestType msgRequest; - - if (mzsRequest.getConfig().isPerformQueryPersonRequest()) { - var tnvzResult = performTnvzQuery(mzsRequest); - exceptionBuilder.withTnvzResult(tnvzResult); - - msgRequest = converter.convert(mzsRequest, tnvzResult.getSuccess().getIdentification()); - } else { - msgRequest = converter.convert(mzsRequest); - } + at.gv.zustellung.msg.xsd.DeliveryRequestType msgRequest = buildMsgRequest(mzsRequest, exceptionBuilder); exceptionBuilder.withMsgRequest(msgRequest); - var status = msgClientFactory.create(mzsRequest.getConfig().getMSGClient()).delivery(msgRequest); + var msgClientParams = mzsRequest.getConfig().getMSGClient(); + App2ZusePort client = clientFactory.create(msgClientParams, App2ZusePort.class); + var status = client.delivery(msgRequest); exceptionBuilder.withMsgResult(status); verifySignedStatus(appDeliveryId, exceptionBuilder); - repository.add(status); } catch (MoaZSException exception) { @@ -92,6 +81,18 @@ public class SameThreadDeliveryPipeline implements DeliveryPipeline { } } + private at.gv.zustellung.msg.xsd.DeliveryRequestType buildMsgRequest(DeliveryRequestType mzsRequest, + MoaZSException.Builder exceptionBuilder) { + if (mzsRequest.getConfig().isPerformQueryPersonRequest()) { + var tnvzClientParams = mzsRequest.getConfig().getTNVZClient(); + TNVZServicePort tvnzPort = clientFactory.create(tnvzClientParams, TNVZServicePort.class); + var identification = tnvzHelper.performQueryPersonRequest(mzsRequest, tvnzPort, exceptionBuilder); + return converter.convert(mzsRequest, identification); + } else { + return converter.convert(mzsRequest); + } + } + private void verifySignedStatus(String appDeliveryId, MoaZSException.Builder exceptionBuilder) throws MoaZSException { try { @@ -106,12 +107,6 @@ public class SameThreadDeliveryPipeline implements DeliveryPipeline { } } - private PersonResultType performTnvzQuery(DeliveryRequestType request) { - var result = tnvzClient.query(request.getSender(), request.getReceiver()); - tnvzVerifier.verify(request, result); - return result; - } - private DeliveryRequestStatusType generateErrorStatus(MoaZSException exception, String appDeliveryId) { var infoBuilder = errorInfoTypeBuilder() -- cgit v1.2.3