diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java | 54 | ||||
| -rw-r--r-- | src/main/java/at/gv/egiz/moazs/verify/MoaSPSSSignatureVerifier.java | 20 | 
2 files changed, 44 insertions, 30 deletions
| 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());      }  } | 
