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()) {

Reply via email to