aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/gv/egiz/moazs/pipeline/SameThreadDeliveryPipeline.java54
-rw-r--r--src/main/java/at/gv/egiz/moazs/verify/MoaSPSSSignatureVerifier.java20
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());
}
}