aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-04-30 11:00:46 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-04-30 11:00:46 +0200
commit296d842878e530ee819fa2f58012665b76e2e670 (patch)
tree45e0078c39b5cdf4f3e8e412f4813e3bca8bd2d6 /src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java
parent9a038cf18d6ebd4c68218c20ebc174b779afa7fa (diff)
downloadmoa-zs-296d842878e530ee819fa2f58012665b76e2e670.tar.gz
moa-zs-296d842878e530ee819fa2f58012665b76e2e670.tar.bz2
moa-zs-296d842878e530ee819fa2f58012665b76e2e670.zip
Add Optional mzs:DeliveryRequest/Config & Validate / Augment It
Add Optional "Config" to MZS Schema: - Add mzs:DeliveryRequest/Config Element with a "PerformQueryPersonRequest" node - The config element contains parameters that are interpreted by moa-zs and not forwarded to the ZD - The boolean PerformQueryPersonRequest tells moa-zs if moa-zs should perform a QueryPersonRequest towards the TNVZ. - If config is missing, moa-zs augments the delivery request with parameters from the app's configuartion or the default configuartion Other Changes: - Validate and augment incoming requests with the DeliveryPreprocessor. - Add stub for TlnvzClient. - Remove some leftover ObjectFactory imports (because of the builder they are not needed anymore) Fixes - Fixed incorrect API usage of Messageformat.format: format string needs an index. pom.xml - Add Hamcrest Dependency (for writing more expressive tests) - Add copy constructor to JAXB Builder Testing - Test validation of incoming request - Refactor testcases to improve readability
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java b/src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java
new file mode 100644
index 0000000..2bb621d
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/DeliveryPreprocessor.java
@@ -0,0 +1,45 @@
+package at.gv.egiz.moazs;
+
+import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.ConfigType;
+import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.ConfigType.ConfigTypeBuilder;
+import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.DeliveryRequestType;
+import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.DeliveryRequestType.DeliveryRequestTypeBuilder;
+import org.springframework.stereotype.Component;
+
+import static at.gv.egiz.moazs.util.NullCoalesce.coalesce;
+
+@Component
+public class DeliveryPreprocessor {
+
+ /**
+ * Validates and augments an incoming {@code request}
+ *
+ * Validates a {@code request} to ensure the availability of all mandatory fields. Where possible, the method
+ * augments the request with values taken from the app's configuration.
+ * @param request
+ * @return validated and augmented request
+ */
+ public DeliveryRequestType preProcess(DeliveryRequestType request) {
+
+ validateRequest(request);
+
+ return new DeliveryRequestTypeBuilder(request)
+ .withConfig(coalesce(request.getConfig(), initDefaultConfig()).get())
+ .build();
+ }
+
+ private void validateRequest(DeliveryRequestType request) {
+ if (request.getMetaData() == null)
+ throw new IllegalArgumentException("Metadata is missing.");
+
+ if (request.getMetaData().getAppDeliveryID() == null)
+ throw new IllegalArgumentException("AppDeliveryID is missing.");
+ }
+
+ private ConfigType initDefaultConfig() {
+ return new ConfigTypeBuilder()
+ .withPerformQueryPersonRequest(false)
+ .build();
+ }
+
+}