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/mzs/MzsValidator.java | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java (limited to 'src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java') diff --git a/src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java b/src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java new file mode 100644 index 0000000..c5b73bb --- /dev/null +++ b/src/main/java/at/gv/egiz/moazs/mzs/MzsValidator.java @@ -0,0 +1,70 @@ +package at.gv.egiz.moazs.mzs; + +import at.gv.zustellung.app2mzs.xsd.ClientType; +import at.gv.zustellung.app2mzs.xsd.ConfigType; +import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType; +import at.gv.zustellung.app2mzs.xsd.KeyStoreType; +import org.springframework.lang.Nullable; +import org.springframework.stereotype.Component; + +@Component +public class MzsValidator { + + /** + * Checks if the mandatory fields that are needed to send a tnvz:QueryPersonRequest are present. + * @param request + * @return true if mandatory fields are present. + */ + public boolean isTnvzComplete(DeliveryRequestType request) { + return (!request.getConfig().isPerformQueryPersonRequest()) || request.getTnvzMetaData() != null; + } + + /** + * Check if all mandatory fields of configuration are present. + * + * @param profile + * @return true if all mandatory fields are present. + */ + public boolean isConfigProfileComplete(@Nullable ConfigType profile) { + return profile != null + && profile.isPerformQueryPersonRequest() != null + && isTVNZClientConfigured(profile.getTNVZClient(), profile.isPerformQueryPersonRequest()) + && isMSGClientConfigured(profile.getMSGClient()); + } + + private boolean isTVNZClientConfigured(ClientType tnvzClient, Boolean isPerformQueryPersonRequest) { + return !isPerformQueryPersonRequest || (tnvzClient != null + && tnvzClient.getURL() != null + && tnvzClient.getReceiveTimeout() != null + && tnvzClient.getConnectionTimeout() != null + && isSSLConfigured(tnvzClient)); + } + + private boolean isMSGClientConfigured(ClientType msgClientParams) { + return msgClientParams != null + && msgClientParams.getURL() != null + && isSSLConfigured(msgClientParams) + && msgClientParams.getReceiveTimeout() != null + && msgClientParams.getConnectionTimeout() != null; + } + + private boolean isSSLConfigured(ClientType clientParams) { + return !clientParams.getURL().startsWith("https") || (clientParams.getSSL() != null + && clientParams.getSSL().isTrustAll() != null + && clientParams.getSSL().isLaxHostNameVerification() != null + && isKeyStoreConfigured(clientParams.getSSL().getKeyStore()) + && isTrustStoreConfigured(clientParams.getSSL().getTrustStore())); + } + + private boolean isKeyStoreConfigured(KeyStoreType keyStore) { + return keyStore == null || (keyStore.getPassword() != null + && keyStore.getFileType() != null + && keyStore.getFileName() != null); + } + + private boolean isTrustStoreConfigured(KeyStoreType trustStore) { + return trustStore == null || (trustStore.getPassword() != null + && "JKS".equals(trustStore.getFileType()) + && trustStore.getFileName() != null); + } +} -- cgit v1.2.3