diff --git a/para-core/src/main/java/com/erudika/para/core/utils/Config.java b/para-core/src/main/java/com/erudika/para/core/utils/Config.java index 3bc40d00..fdbed3e8 100644 --- a/para-core/src/main/java/com/erudika/para/core/utils/Config.java +++ b/para-core/src/main/java/com/erudika/para/core/utils/Config.java @@ -307,6 +307,16 @@ public com.typesafe.config.Config getConfig() { return config; } + /** + * Overwrites the internal config object with a new one. + * @param newConfig a new Config object + * @return returns this instance for chaining + */ + public Config overwriteConfig(com.typesafe.config.Config newConfig) { + config = newConfig; + return this; + } + /** * Constructs a sorted set of configuration keys. * Heavily relies on the {@link Documented} annotation for sort order. @@ -455,14 +465,11 @@ public String renderConfigDocumentation(String format, boolean groupByCategory) public Map getConfigMap() { Map configMap = new LinkedHashMap<>(); for (String keyNoPrefix : getSortedConfigKeys().keySet()) { - Object value = getConfigValue(keyNoPrefix, null); - if (value != null) { - configMap.put(getConfigRootPrefix() + "." + keyNoPrefix, value); - } + configMap.put(getConfigRootPrefix() + "." + keyNoPrefix, null); } for (Map.Entry entry : getConfig().entrySet()) { - String keyNoPrefix = entry.getKey(); - String keyPrefixed = getConfigRootPrefix() + "." + entry.getKey(); + String keyNoPrefix = StringUtils.removeStart(entry.getKey(), getConfigRootPrefix() + "."); + String keyPrefixed = getConfigRootPrefix() + "." + keyNoPrefix; Object value = getConfigValue(keyNoPrefix, ""); Object valueUnwrapped = ConfigValueFactory.fromAnyRef(value).unwrapped(); if (!getKeysExcludedFromRendering().contains(keyNoPrefix)) {