From 4b6ce58f339d69c70ef746ceecae78bf7ed0f0ba Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Tue, 2 Jul 2019 16:42:43 +0200 Subject: Handle tnvz Query Edge Cases by Improving Validation TnvzHelper Fixes - Handle additional edge cases. - Mzs:Schema Change: Eliminate PreAdviceNote redundancy by removing it from mzs:DeliveryRequest/TnvzMetaData; PreadviceNote is already in the Receiver element. Update TnvzHelper accordingly. - Implement and integrate tnvz completeness check into DeliveryRequestAugmenter to ensure that, after augmentation, tnvz can be performed. Refactor mzs:DeliveryRequest Validation: - Before: Validating, merging and generatig ConfigType in ConfigUtil. - Change: Need to add validation of DeliveryRequest (Reason: For performing Tnvz Requests, the DeliveryRequest needs to be in a consistent state). - Problem: DeliveryRequest validation does not fit into ConfigUtil. - Solution: Put validation of DeliveryRequest and Config into new Component "MzsValidation". --- .../java/at/gv/egiz/moazs/tnvz/TnvzHelper.java | 46 ++++++++++++---------- 1 file changed, 26 insertions(+), 20 deletions(-) (limited to 'src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java') diff --git a/src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java b/src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java index a14df9d..3599362 100644 --- a/src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java +++ b/src/main/java/at/gv/egiz/moazs/tnvz/TnvzHelper.java @@ -3,7 +3,6 @@ package at.gv.egiz.moazs.tnvz; import at.gv.egiz.moazs.MoaZSException; import at.gv.egiz.moazs.scheme.Mzs2MsgConverter; import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; -import at.gv.zustellung.app2mzs.xsd.TnvzMetaDataType; import at.gv.zustellung.app2mzs.xsd.persondata.AbstractAddressType; import at.gv.zustellung.msg.xsd.persondata.IdentificationType; import at.gv.zustellung.msg.xsd.persondata.ObjectFactory; @@ -39,7 +38,7 @@ public class TnvzHelper { private static final String RECEIVER_NOT_ADRESSABLE_ERROR_MSG = "Receiver is not addressable. Reason: %s"; private static final String MIMETYPE_MISSMATCH_ERROR_MSG = "Request contains attachment of type(s) %s, but " + "receiver only accepts attachments of type(s) %s."; - private static final String MZS_NO_TNVZ_PERSON_QUERY_RESULTS_ERROR_MSG = "tnvz:PersonQueryResult's list was empty."; + private static final String MZS_NO_TNVZ_PERSON_QUERY_RESULTS_ERROR_MSG = "tnvz:QueryResultList was empty."; @Autowired @@ -74,9 +73,9 @@ public class TnvzHelper { private QueryPersonRequest buildQuery(DeliveryRequestType mzsRequest) { - Sender sender = extractSender(mzsRequest.getSender().getCorporateBody()); + Sender sender = extractSender(mzsRequest.getSender()); Receiver receiver = extractReceiver(mzsRequest.getReceiver()); - var metadata = extractMetaData(mzsRequest.getTnvzMetaData()); + var metadata = extractMetaData(mzsRequest); PersonQueryType personQuery = personQueryTypeBuilder() .withEntryID(ENTRY_ID) @@ -94,27 +93,32 @@ public class TnvzHelper { .build(); } - private PersonQueryType.MetaData extractMetaData(@Nullable TnvzMetaDataType meta) { - if (meta == null) { - return null; - } else { - var builder = metaDataBuilder(); + private PersonQueryType.MetaData extractMetaData(DeliveryRequestType request) { - if (meta.getDeliveryQuality() != null) { - builder.withDeliveryQuality(meta.getDeliveryQuality()); - } else { - builder.withPrivateMessageQuality(meta.getPrivateMessageQuality()); - } + var builder = metaDataBuilder(); - return builder - .withOrigin(meta.getOrigin()) - .withPreAdviceNote(meta.getPreAdviceNote()) - .withIgnorePostRedirectionOrder(meta.getIgnorePostRedirectionOrder()) - .build(); + var meta = request.getTnvzMetaData(); + + if (meta.getDeliveryQuality() != null) { + builder.withDeliveryQuality(meta.getDeliveryQuality()); + } else { + builder.withPrivateMessageQuality(meta.getPrivateMessageQuality()); } + + return builder + .withOrigin(meta.getOrigin()) + .withPreAdviceNote(request.getReceiver().getPreAdviceNote()) + .withIgnorePostRedirectionOrder(meta.getIgnorePostRedirectionOrder()) + .build(); } - private Sender extractSender(at.gv.zustellung.app2mzs.xsd.persondata.CorporateBodyType corporateBody) { + private Sender extractSender(DeliveryRequestType.Sender sender) { + + var corporateBody = sender.getCorporateBody(); + if (corporateBody == null) { + //todo! implement this case + throw MoaZSException.moaZSException("Not Implemented."); + } var mzsIdentification = corporateBody.getIdentification().get(0); var msgIdentification = converter.convert(mzsIdentification); @@ -152,6 +156,8 @@ public class TnvzHelper { private @Nullable PostalAddressType findPostalAddress(List> addresses) { + if (addresses == null) return null; + for (JAXBElement address : addresses) { if(address.getValue() instanceof at.gv.zustellung.app2mzs.xsd.persondata.PostalAddressType) { var mzsPostalAddress = (at.gv.zustellung.app2mzs.xsd.persondata.PostalAddressType) address.getValue(); -- cgit v1.2.3