aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-22 13:02:19 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-07-22 13:02:19 +0200
commitcb9a76eaafd37f921006822bcfe043655288bc63 (patch)
tree76c2463e181ac293134f4c5bfc7e342607f3f399 /src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java
parentd873625c0ced62e712dc1b1a7570b63482fd0a0a (diff)
downloadmoa-zs-cb9a76eaafd37f921006822bcfe043655288bc63.tar.gz
moa-zs-cb9a76eaafd37f921006822bcfe043655288bc63.tar.bz2
moa-zs-cb9a76eaafd37f921006822bcfe043655288bc63.zip
Test Flow of DeliveryRequest from "End-To-End" & Fix Bugs
Schema Changes: - Remove mzs:DeliveryRequest/TnvzMetaData because all metadata fields can be collected from DeliveryRequest and redundancy is not needed. Fixes and Refactoring in preprocess: - MzsDeliveryRequestValidator: Instead of returning false, throw an exception when a condition is not met, and explain which condition is not met / why it is not met in the exception's message. - Integrate interface change in ConfigProfileGenerator and DeliveryRequestAugmenter. - Rewrite and simplify DeliveryRequestAugmenter's augmentation. - ConfigUtil Fixes: Ensure that we do not override the wrong parameters while merging. This error appeared in tnvz / msg client, connection / receive timeout, key / trust store, and lax hostname verification / trust all. Fix Bugs in Interceptor / SoapUtils: - Problem: DOM access and information extraction was implemented somewhat sloppy. - SolutioN: Change DOM access interface to access DOM more efficiently. Add boundary checks and handle edge cases while extracting information from SOAP Messages. - Test those changes properly. Testing: - Implement Delivery Request Flow in ITEndToEndTest. - Start application on random port instead of fixed port when running integration tests. - Add assertions to tests in ITMzsServiceTest suite. Others Bug Fixes: - ServicesConfig: Ensure that mzs service and msg service run on different endpoint addresses (/msg and /mzs). - DeliveryRequestBackend: Throw exception when binary message is missing. Don't wrap the exception. - SaveResponseToFileSink: Wrap Response in JAXB Element (otherwise, marshaller does not recognize it)
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java70
1 files changed, 35 insertions, 35 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java b/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java
index e7ee357..240a677 100644
--- a/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java
+++ b/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java
@@ -1,36 +1,41 @@
package at.gv.egiz.moazs.preprocess;
+import at.gv.egiz.moazs.scheme.Marshaller;
import at.gv.zustellung.app2mzs.xsd.ConfigType;
import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType;
+import at.gv.zustellung.app2mzs.xsd.ObjectFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import java.util.Map;
import static at.gv.egiz.moazs.MoaZSException.moaZSException;
+import static at.gv.egiz.moazs.util.NullCoalesce.coalesce;
import static at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.deliveryRequestTypeBuilder;
-import static java.lang.String.format;
@Component
public class DeliveryRequestAugmenter {
+ private static final Logger log = LoggerFactory.getLogger(DeliveryRequestAugmenter.class);
+ private static final ObjectFactory FACTORY = new ObjectFactory();
+
private final ConfigUtil util;
private final Map<String, ConfigType> configs;
private final MzsDeliveryRequestValidator validator;
+ private final Marshaller mzsMarshaller;
- private static final String INCOMPLETE_TNVZ_ERROR_MESSAGE = "mzs:DeliveryRequest is incomplete because mandatory " +
- "fields for sending a tnvz:QueryPersonRequest are missing.";
- private static final String INCOMPLETE_CONFIG_ERROR_MESSAGE = "Could not find a profile for " +
- "the delivery request configuration, and the configuration attached to mzs:DeliveryRequest is incomplete.";
- private static final String INCOMPLETE_MERGED_CONFIG_ERROR_MESSAGE = "I merged parameters from " +
- "mzs:DeliveryRequest/Config with parameters from config profile with ProfileId='%s', but the " +
- "configuration is incomplete.";
+ private static final String CONFIG_MISSING_ERROR_MSG = "Delivery request configuration is missing.";
@Autowired
- public DeliveryRequestAugmenter(Map<String, ConfigType> deliveryRequestConfigs, ConfigUtil util, MzsDeliveryRequestValidator validator) {
+ public DeliveryRequestAugmenter(Map<String, ConfigType> deliveryRequestConfigs, ConfigUtil util,
+ MzsDeliveryRequestValidator validator, Marshaller mzsMarshaller) {
this.configs = deliveryRequestConfigs;
this.util = util;
this.validator = validator;
+ this.mzsMarshaller = mzsMarshaller;
}
/**
@@ -46,41 +51,29 @@ public class DeliveryRequestAugmenter {
var fallbackProfileId = determineProfileIdFrom(requestConfig);
var fallbackConfig = configs.get(fallbackProfileId);
- if (fallbackConfig == null) {
-
- if (!validator.isConfigProfileComplete(request.getConfig())) {
- throw moaZSException(INCOMPLETE_CONFIG_ERROR_MESSAGE);
- } else if (!validator.isTnvzComplete(request)) {
- throw moaZSException(INCOMPLETE_TNVZ_ERROR_MESSAGE);
- } else {
- return request;
- }
+ trace("request config", requestConfig);
+ trace("fallback config", fallbackConfig);
- } else {
+ var augmentedConfig = (requestConfig != null && fallbackConfig != null)
+ ? util.merge(requestConfig, fallbackConfig)
+ : coalesce(requestConfig, fallbackConfig)
+ .orElseThrow(()-> moaZSException(CONFIG_MISSING_ERROR_MSG));
- var mergedConfig = (requestConfig == null)
- ? fallbackConfig
- : util.merge(requestConfig, fallbackConfig);
+ trace("augmented config", augmentedConfig);
- if (!validator.isConfigProfileComplete(mergedConfig)) {
- var message = format(INCOMPLETE_MERGED_CONFIG_ERROR_MESSAGE, fallbackProfileId);
- throw moaZSException(message);
- }
+ validator.isConfigProfileComplete(augmentedConfig);
- var mergedRequest = deliveryRequestTypeBuilder(request)
- .withConfig(mergedConfig)
- .build();
+ var augmentedRequest = deliveryRequestTypeBuilder(request)
+ .withConfig(augmentedConfig)
+ .build();
- if (!validator.isTnvzComplete(mergedRequest)) {
- throw moaZSException(INCOMPLETE_TNVZ_ERROR_MESSAGE);
- }
+ validator.isTnvzComplete(augmentedRequest);
- return mergedRequest;
+ return augmentedRequest;
- }
}
- private String determineProfileIdFrom(ConfigType requestConfig) {
+ private String determineProfileIdFrom(@Nullable ConfigType requestConfig) {
return (requestConfig == null
|| requestConfig.getProfileID() == null
|| isProfileMissing(requestConfig.getProfileID()))
@@ -92,4 +85,11 @@ public class DeliveryRequestAugmenter {
return !configs.containsKey(id);
}
+ private void trace(String description, ConfigType config) {
+ if (log.isTraceEnabled()) {
+ log.trace("{} : {}", description, mzsMarshaller.marshallXml(FACTORY.createConfig(config)));
+ }
+ }
+
+
}