aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-05-14 13:18:55 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-05-14 13:18:55 +0200
commit870439300e7596d6833644ec9e6d1f38a1e0b6b5 (patch)
tree86ee96f87f3b691f1cbbbfba02b29d329c50b843 /src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java
parentf4af4f437ff79cb6e2a35fdfe87e8d952a70b685 (diff)
downloadmoa-zs-870439300e7596d6833644ec9e6d1f38a1e0b6b5.tar.gz
moa-zs-870439300e7596d6833644ec9e6d1f38a1e0b6b5.tar.bz2
moa-zs-870439300e7596d6833644ec9e6d1f38a1e0b6b5.zip
Implement Per-Field-Overriding of Configuration in Augmenter
- Rewrite DeliveryRequestAugmenter to allow per-field-overriding of configuration parameters and add test suite. - Mzs schema change: Move DeliveryRequest/Server into DeliveryRequest/Config; Reason: DeliveryRequest/Config contains all parameters exclusively needed by moazs to execute the delivery request. The msg's server url belongs to this set of parameters. - WIP: Add prototype implementation of MsgClient and move MsgClient to dedicated package. - Refactor: move TnvzClient to dedicated package.
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java46
1 files changed, 41 insertions, 5 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java b/src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java
index 35c1e77..96197d0 100644
--- a/src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java
+++ b/src/main/java/at/gv/egiz/moazs/DeliveryRequestAugmenter.java
@@ -3,14 +3,24 @@ package at.gv.egiz.moazs;
import at.gv.zustellung.app2mzs.xsd.ConfigType;
import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType;
import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.DeliveryRequestTypeBuilder;
+import at.gv.zustellung.app2mzs.xsd.ServerType;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import static at.gv.egiz.moazs.util.NullCoalesce.coalesce;
import static at.gv.zustellung.app2mzs.xsd.ConfigType.configTypeBuilder;
+import static at.gv.zustellung.app2mzs.xsd.ServerType.*;
@Component
public class DeliveryRequestAugmenter {
+ private final ConfigType defaultMzsConfig;
+
+ @Autowired
+ public DeliveryRequestAugmenter(ConfigType defaultMzsConfig) {
+ this.defaultMzsConfig = defaultMzsConfig;
+ }
+
/**
* Augments an incoming {@code request} by filling gaps with config- or default parameters.
*
@@ -18,15 +28,41 @@ public class DeliveryRequestAugmenter {
* @return augmented request
*/
public DeliveryRequestType augment(DeliveryRequestType request) {
+
+ var config = merge(request.getConfig(), defaultMzsConfig);
+
return new DeliveryRequestTypeBuilder(request)
- .withConfig(coalesce(request.getConfig(), initDefaultConfig()).get())
+ .withConfig(config)
.build();
}
- private ConfigType initDefaultConfig() {
- return configTypeBuilder()
- .withPerformQueryPersonRequest(false)
- .build();
+ private ConfigType merge(ConfigType primary, ConfigType fallback) {
+
+ var builder = configTypeBuilder(fallback);
+
+ if(primary != null) {
+
+ if(primary.getServer() != null) {
+ builder.withServer(merge(primary.getServer(), fallback.getServer()));
+ }
+
+ if(primary.isPerformQueryPersonRequest() != null) {
+ builder.withPerformQueryPersonRequest(primary.isPerformQueryPersonRequest());
+ }
+
+ }
+
+ return builder.build();
+
}
+ private ServerType merge(ServerType primary, ServerType fallback) {
+
+ var builder = serverTypeBuilder(fallback);
+
+ if (primary.getX509() != null) builder.withX509 (primary.getX509() );
+ if (primary.getZUSEUrlID() != null) builder.withZUSEUrlID(primary.getZUSEUrlID());
+
+ return builder.build();
+ }
}