aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileMerger.java
diff options
context:
space:
mode:
authorChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-05-15 09:16:04 +0200
committerChristof Rabensteiner <christof.rabensteiner@iaik.tugraz.at>2019-05-15 09:16:04 +0200
commit87f4be0b8834e6090137f2db2154bf50bcfcf646 (patch)
tree31a8e0183f94f231adba381a655b54a3b48039f2 /src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileMerger.java
parente70ec39488c0688d8144fa529d58d60ae9564fbd (diff)
downloadmoa-zs-87f4be0b8834e6090137f2db2154bf50bcfcf646.tar.gz
moa-zs-87f4be0b8834e6090137f2db2154bf50bcfcf646.tar.bz2
moa-zs-87f4be0b8834e6090137f2db2154bf50bcfcf646.zip
Integrate Config Profiles + Refactoring
Config Profile Integration: - Merge generated Configs from ConfigProfileGenerator with the default Config; Reason: Merging profile Configs with default Config asap ensures that profile Configs are "as complete as possible" while allowing profile Configs to "on-demand"-override values from the default Config. - Adapt Augmenter to work with Config profiles: Select a Config on the basis of on msg:DeliveryRequest/Config/ProfileId, fall back to 'default' Config. - Schema change: Make ProfileID optional. Refactoring: - Move Config-merging code from Augmenter into dedicated 'ConfigProfileMerger' class. - ConfigProfileGenerator: Clarify stream pipeline and comply with coding standard w.r.t. constant members. - Add Augmenter test cases for profile selection.
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileMerger.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileMerger.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileMerger.java b/src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileMerger.java
new file mode 100644
index 0000000..f25ec12
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileMerger.java
@@ -0,0 +1,42 @@
+package at.gv.egiz.moazs.preprocess;
+
+import at.gv.zustellung.app2mzs.xsd.ConfigType;
+import at.gv.zustellung.app2mzs.xsd.ServerType;
+import org.springframework.stereotype.Component;
+
+import static at.gv.zustellung.app2mzs.xsd.ConfigType.configTypeBuilder;
+import static at.gv.zustellung.app2mzs.xsd.ServerType.serverTypeBuilder;
+
+@Component
+public class ConfigProfileMerger {
+
+ public 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();
+ }
+}