Repository: karaf Updated Branches: refs/heads/karaf-2.x 2e7224684 -> 981089339
[KARAF-3527] Appending config from feature doesn't work Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/98108933 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/98108933 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/98108933 Branch: refs/heads/karaf-2.x Commit: 98108933962233c893e3bf4b1552abf3693a1d01 Parents: 2e72246 Author: Guillaume Nodet <[email protected]> Authored: Fri Feb 20 13:15:47 2015 +0100 Committer: Guillaume Nodet <[email protected]> Committed: Fri Feb 20 13:25:48 2015 +0100 ---------------------------------------------------------------------- .../features/internal/FeaturesServiceImpl.java | 34 ++++++++------------ 1 file changed, 13 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/98108933/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java ---------------------------------------------------------------------- diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java b/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java index 4f96606..406691e 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java @@ -690,36 +690,28 @@ public class FeaturesServiceImpl implements FeaturesService { } } for (ConfigInfo config : feature.getConfigurations()) { - String name = config.getName(); Map<String, String> props = config.getProperties(); String[] pid = parsePid(config.getName()); - Configuration cfg = findExistingConfiguration(configAdmin, pid[0], - pid[1]); + Configuration cfg = findExistingConfiguration(configAdmin, pid[0], pid[1]); if (cfg == null) { - - Dictionary<String, String> cfgProps = convertToDict(config - .getProperties()); - + Dictionary<String, String> cfgProps = convertToDict(config.getProperties()); cfg = createConfiguration(configAdmin, pid[0], pid[1]); String key = createConfigurationKey(pid[0], pid[1]); cfgProps.put(CONFIG_KEY, key); cfg.update(cfgProps); } else if (config.isAppend()) { - Dictionary<String, Object> properties = cfg.getProperties(); - for (Enumeration<String> propKeys = properties.keys(); propKeys - .hasMoreElements();) { - String key = propKeys.nextElement(); - // remove existing entry, since it's about appending. - if (props.containsKey(key)) { - props.remove(key); - } - } - if (props.size() > 0) { - // convert props to dictionary - Dictionary<String, String> cfgProps = convertToDict(props); - cfg.update(cfgProps); - } + boolean update = false; + Dictionary<String,Object> properties = cfg.getProperties(); + for (String key : props.keySet()) { + if (properties.get(key) == null) { + properties.put(key, props.get(key)); + update = true; + } + } + if (update) { + cfg.update(properties); + } } } for (ConfigFileInfo configFile : feature.getConfigurationFiles()) {
