From 6044145569bdc0e86d2c1831fa50051227822864 Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Wed, 19 Jun 2019 13:19:21 +0200 Subject: Refactor DeliveryPipeline - Resolve nested try-catch blocks - Log error if error occurs - MoaSPSSSignatureVerifier: Replace string concatenation with format strings --- .../moazs/pipeline/SameThreadDeliveryPipeline.java | 54 ++++++++++++++-------- .../moazs/verify/MoaSPSSSignatureVerifier.java | 20 ++++---- 2 files changed, 44 insertions(+), 30 deletions(-) (limited to 'src/main') 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 920e90d..f264e52 100644 --- a/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java +++ b/src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java @@ -14,6 +14,7 @@ import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; import at.gv.zustellung.msg.xsd.DeliveryAnswerType; import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType; import at.gv.zustellung.tnvz.xsd.PersonResultType; +import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @@ -23,11 +24,14 @@ import static at.gv.egiz.moazs.util.NullCoalesce.coalesce; import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.Error.errorBuilder; import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.deliveryRequestStatusTypeBuilder; import static at.gv.zustellung.msg.xsd.ErrorInfoType.errorInfoTypeBuilder; +import static java.lang.String.format; @Component @Profile("!cluster") 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; @@ -57,46 +61,56 @@ public class SameThreadDeliveryPipeline implements DeliveryPipeline { @Override public void processRequest(String appDeliveryId) { - DeliveryRequestType mzsRequest; - PersonResultType tnvzResult = null; - at.gv.zustellung.msg.xsd.DeliveryRequestType msgRequest; - DeliveryRequestStatusType status; + var exceptionBuilder = moaZSExceptionBuilder(""); try { - mzsRequest = repository.getDeliveryRequest(appDeliveryId).orElseThrow(); + var mzsRequest = repository.getDeliveryRequest(appDeliveryId).orElseThrow(); + exceptionBuilder.withMzsRequest(mzsRequest); + + at.gv.zustellung.msg.xsd.DeliveryRequestType msgRequest; if (mzsRequest.getConfig().isPerformQueryPersonRequest()) { - tnvzResult = performTnvzQuery(mzsRequest); + var tnvzResult = performTnvzQuery(mzsRequest); + exceptionBuilder.withTnvzResult(tnvzResult); + msgRequest = converter.convert(mzsRequest, tnvzResult.getSuccess().getIdentification()); } else { msgRequest = converter.convert(mzsRequest); } - status = msgClientFactory.create(msgRequest, mzsRequest.getConfig(), interceptor).send(); + exceptionBuilder.withMsgRequest(msgRequest); - var signedStatus = repository.getSignedDeliveryRequestStatus(appDeliveryId).get(); + var status = msgClientFactory.create(msgRequest, mzsRequest.getConfig(), interceptor).send(); + exceptionBuilder.withMsgResult(status); - try { - verifier.verify(signedStatus); - } catch (Exception ex) { - throw moaZSExceptionBuilder("Signature of DeliveryRequestStatus with AppDeliveryId={} " + - " is not valid.", appDeliveryId) - .withErrorCode(MoaZSException.ERROR_MOASP_SIGNATURE_INVALID) - .withMzsRequest(mzsRequest) - .withTnvzResult(tnvzResult) - .withMsgRequest(msgRequest) - .withMsgResult(status) - .build(); - } + verifyStatus(appDeliveryId, exceptionBuilder); repository.add(status); } catch (MoaZSException exception) { + + log.error(format("An error occured while processing the DeliveryRequest with AppDeliveryID = %s. ", + appDeliveryId), exception); + var errorStatus = generateErrorStatus(exception, appDeliveryId); repository.add(errorStatus); } } + private void verifyStatus(String appDeliveryId, MoaZSException.Builder exceptionBuilder) throws MoaZSException { + + try { + var signedStatus = repository.getSignedDeliveryRequestStatus(appDeliveryId).get(); + verifier.verify(signedStatus); + } catch (Exception ex) { + throw exceptionBuilder.withMessage(format("Signature of DeliveryRequestStatus with AppDeliveryId={} " + + " is not valid.", appDeliveryId)) + .withErrorCode(MoaZSException.ERROR_MOASP_SIGNATURE_INVALID) + .withCause(ex) + .build(); + } + } + private PersonResultType performTnvzQuery(DeliveryRequestType request) { var result = tnvzClient.query(request.getSender(), request.getReceiver()); tnvzVerifier.verify(request, result); diff --git a/src/main/java/at/gv/egiz/moazs/verify/MoaSPSSSignatureVerifier.java b/src/main/java/at/gv/egiz/moazs/verify/MoaSPSSSignatureVerifier.java index 0757c5d..5220c3b 100644 --- a/src/main/java/at/gv/egiz/moazs/verify/MoaSPSSSignatureVerifier.java +++ b/src/main/java/at/gv/egiz/moazs/verify/MoaSPSSSignatureVerifier.java @@ -97,15 +97,15 @@ public class MoaSPSSSignatureVerifier implements SignatureVerifier { return; } - log.debug(" XmlDsigSubjectName: " + response.getXmlDsigSubjectName()); - log.debug(" SignatureManifestCheckCode: " + response.getSignatureManifestCheckCode()); - log.debug(" XmlDSIGManifestCheckCode: " + response.getXmlDSIGManifestCheckCode()); - log.debug(" CertificateCheckCode: " + response.getCertificateCheckCode()); - log.debug(" SignatureCheckCode: " + response.getSignatureCheckCode()); - log.debug(" SigningDateTime: " + response.getSigningDateTime()); - log.debug(" isXmlDSIGManigest: " + response.isXmlDSIGManigest()); - log.debug(" isPublicAuthority: " + response.isPublicAuthority()); - log.debug(" isQualifiedCertificate: " + response.isQualifiedCertificate()); - log.debug(" getPublicAuthorityCode: " + response.getPublicAuthorityCode()); + log.debug(" XmlDsigSubjectName: {}", response.getXmlDsigSubjectName()); + log.debug(" SignatureManifestCheckCode: {}", response.getSignatureManifestCheckCode()); + log.debug(" XmlDSIGManifestCheckCode: {}", response.getXmlDSIGManifestCheckCode()); + log.debug(" CertificateCheckCode: {}", response.getCertificateCheckCode()); + log.debug(" SignatureCheckCode: {}", response.getSignatureCheckCode()); + log.debug(" SigningDateTime: {}", response.getSigningDateTime()); + log.debug(" isXmlDSIGManigest: {}", response.isXmlDSIGManigest()); + log.debug(" isPublicAuthority: {}", response.isPublicAuthority()); + log.debug(" isQualifiedCertificate: {}", response.isQualifiedCertificate()); + log.debug(" getPublicAuthorityCode: {}", response.getPublicAuthorityCode()); } } -- cgit v1.2.3