diff options
author | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-05-15 09:16:04 +0200 |
---|---|---|
committer | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-05-15 09:16:04 +0200 |
commit | 87f4be0b8834e6090137f2db2154bf50bcfcf646 (patch) | |
tree | 31a8e0183f94f231adba381a655b54a3b48039f2 /src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java | |
parent | e70ec39488c0688d8144fa529d58d60ae9564fbd (diff) | |
download | moa-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/DeliveryRequestAugmenter.java')
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java | 46 |
1 files changed, 16 insertions, 30 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 623af38..7211f6d 100644 --- a/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java +++ b/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java @@ -3,23 +3,23 @@ package at.gv.egiz.moazs.preprocess; 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 java.util.Map; -import static at.gv.zustellung.app2mzs.xsd.ConfigType.configTypeBuilder; -import static at.gv.zustellung.app2mzs.xsd.ServerType.serverTypeBuilder; +import static at.gv.egiz.moazs.util.NullCoalesce.coalesce; @Component public class DeliveryRequestAugmenter { - private final ConfigType defaultMzsConfig; + private final ConfigProfileMerger merger; + private final Map<String, ConfigType> configs; @Autowired - public DeliveryRequestAugmenter(Map<String, ConfigType> deliveryRequestConfigs) { - this.defaultMzsConfig = deliveryRequestConfigs.get("default"); + public DeliveryRequestAugmenter(Map<String, ConfigType> deliveryRequestConfigs, ConfigProfileMerger merger) { + this.configs = deliveryRequestConfigs; + this.merger = merger; } /** @@ -30,40 +30,26 @@ public class DeliveryRequestAugmenter { */ public DeliveryRequestType augment(DeliveryRequestType request) { - var config = merge(request.getConfig(), defaultMzsConfig); + var requestConfig = request.getConfig(); + + var fallbackConfig = determineProfileFromProfileId(requestConfig); + + var config = merger.merge(requestConfig, fallbackConfig); return new DeliveryRequestTypeBuilder(request) .withConfig(config) .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()); - } + private ConfigType determineProfileFromProfileId(ConfigType requestConfig) { + if (requestConfig == null || requestConfig.getProfileID() == null) { + return configs.get("default"); } - return builder.build(); + var id = requestConfig.getProfileID(); + return coalesce(configs.get(id), configs.get("default")).get(); } - 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(); - } } |