From aff7c021e37e64162ce4e3fe5abd419072fb464f Mon Sep 17 00:00:00 2001 From: Christof Rabensteiner Date: Thu, 16 May 2019 14:26:03 +0200 Subject: Refactor + Document in preprocess - Refactor: Move ConfigType.merge's null check to caller. - Revise documentation of preprocess' public methods. --- .../moazs/preprocess/ConfigProfileGenerator.java | 23 +++++++++------- .../at/gv/egiz/moazs/preprocess/ConfigUtil.java | 31 +++++++++------------- .../moazs/preprocess/DeliveryRequestAugmenter.java | 4 ++- 3 files changed, 30 insertions(+), 28 deletions(-) (limited to 'src/main') diff --git a/src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileGenerator.java b/src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileGenerator.java index 6337ff2..be14852 100644 --- a/src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileGenerator.java +++ b/src/main/java/at/gv/egiz/moazs/preprocess/ConfigProfileGenerator.java @@ -16,7 +16,6 @@ public class ConfigProfileGenerator { private static final Logger LOGGER = LoggerFactory.getLogger(ConfigProfileGenerator.class); - private static final String PROFILE_NOT_COMPLETE_WARNING_MESSAGE = "The default values for a incoming " + "mzs:DeliveryRequest/Config element could not be extracted from configuration because some values were " + "missing."; @@ -50,7 +49,11 @@ public class ConfigProfileGenerator { this.defaultConfigKey = defaultConfigKey; } - + /** + * Generate a map of Config profiles on the basis of supplied properties. + * + * @return map with profiles, indexed by ProfileId + */ public Map generate() { var groupedKeys = properties.getPropertyNames() @@ -60,7 +63,7 @@ public class ConfigProfileGenerator { .collect(groupingBy(this::keepPrefix, mapping(this::removePrefix, toSet()))); var profiles = groupedKeys.entrySet().stream() - .collect(toMap(Entry::getKey, this::createConfigFromEnv)); + .collect(toUnmodifiableMap(Entry::getKey, this::createConfigFromEnv)); var defaultProfile = profiles.get(defaultConfigKey); @@ -118,7 +121,7 @@ public class ConfigProfileGenerator { public static class ConfigProfileGeneratorBuilder { private SpringPropertiesFacade properties; private ConfigUtil util; - private boolean verifyCompletenessOfDefaultConfiguration = true; + private boolean verify = true; private String profilePrefix = "delivery-request-configuration-profiles"; private String defaultConfigKey = "default"; @@ -132,8 +135,9 @@ public class ConfigProfileGenerator { return this; } - public ConfigProfileGeneratorBuilder withVerifyCompletenessOfDefaultConfiguration(boolean verifyCompletenessOfDefaultConfiguration) { - this.verifyCompletenessOfDefaultConfiguration = verifyCompletenessOfDefaultConfiguration; + public ConfigProfileGeneratorBuilder withVerifyCompletenessOfDefaultConfiguration( + boolean verify) { + this.verify = verify; return this; } @@ -148,9 +152,10 @@ public class ConfigProfileGenerator { } public ConfigProfileGenerator build() { - if(properties == null || util == null || profilePrefix == null || defaultConfigKey == null) - throw new IllegalArgumentException("Cannot build ConfigProfileGenerator: One or more arguments are null."); - return new ConfigProfileGenerator(properties, util, verifyCompletenessOfDefaultConfiguration, profilePrefix, defaultConfigKey); + if (properties == null || util == null || profilePrefix == null || defaultConfigKey == null) + throw new IllegalArgumentException("Cannot build ConfigProfileGenerator: " + + "One or more arguments are null."); + return new ConfigProfileGenerator(properties, util, verify, profilePrefix, defaultConfigKey); } } } diff --git a/src/main/java/at/gv/egiz/moazs/preprocess/ConfigUtil.java b/src/main/java/at/gv/egiz/moazs/preprocess/ConfigUtil.java index 79666a4..3fef4bd 100644 --- a/src/main/java/at/gv/egiz/moazs/preprocess/ConfigUtil.java +++ b/src/main/java/at/gv/egiz/moazs/preprocess/ConfigUtil.java @@ -5,7 +5,6 @@ import at.gv.zustellung.app2mzs.xsd.ServerType; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; -import javax.validation.constraints.Null; import java.util.Map; import static at.gv.zustellung.app2mzs.xsd.ConfigType.configTypeBuilder; @@ -18,10 +17,10 @@ public class ConfigUtil { private static final String MSG_URL_KEY = "msg.url"; /** - * Builds a ConvertType Object out of a Map on the Basis of it's Keys and Values. + * Convert a map into a Config object. * - * @param Map with keys and values. - * @return ConvertType Object + * @param map with well-defined indexes and values + * @return Config */ public ConfigType convert(Map values) { var server = serverTypeBuilder() @@ -38,26 +37,22 @@ public class ConfigUtil { } /** - * Combines Properties of Two ConfigType Objects; {@code primary} overrides {@code fallback}. + * Combine properties of two Configs; {@code primary} overrides {@code fallback}. * * @param primary * @param fallback - * @return Combined ConfigType + * @return Merged Config */ - public ConfigType merge(@Nullable ConfigType primary, ConfigType fallback) { + 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()); - } + if(primary.getServer() != null) { + builder.withServer(merge(primary.getServer(), fallback.getServer())); + } + if(primary.isPerformQueryPersonRequest() != null) { + builder.withPerformQueryPersonRequest(primary.isPerformQueryPersonRequest()); } return builder.build(); @@ -79,10 +74,10 @@ public class ConfigUtil { } /** - * Checks if all mandatory fields are set. + * Check if all mandatory fields are set. * * @param profile - * @return + * @return true if all mandatory fields are set */ public boolean isComplete(@Nullable ConfigType profile) { //TODO: add check fo x509 certificate 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 f3a05d1..057c3d4 100644 --- a/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java +++ b/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java @@ -49,7 +49,9 @@ public class DeliveryRequestAugmenter { } else { - var mergedConfig = util.merge(requestConfig, fallbackConfig); + var mergedConfig = (requestConfig == null) + ? fallbackConfig + : util.merge(requestConfig, fallbackConfig); if (util.isComplete(mergedConfig)) { return deliveryRequestTypeBuilder(request) -- cgit v1.2.3