You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by pi...@apache.org on 2011/04/13 17:20:50 UTC

svn commit: r1091817 - /karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java

Author: pieber
Date: Wed Apr 13 15:20:49 2011
New Revision: 1091817

URL: http://svn.apache.org/viewvc?rev=1091817&view=rev
Log:
[KARAF-562] Fix multible deployment of config-factories in features <config> tag

Modified:
    karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java

Modified: karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java?rev=1091817&r1=1091816&r2=1091817&view=diff
==============================================================================
--- karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java (original)
+++ karaf/trunk/features/core/src/main/java/org/apache/karaf/features/internal/FeaturesServiceImpl.java Wed Apr 13 15:20:49 2011
@@ -458,7 +458,7 @@ public class FeaturesServiceImpl impleme
             Configuration cfg = findExistingConfiguration(configAdmin, pid[0], pid[1]);
             if (cfg == null) {
                 cfg = createConfiguration(configAdmin, pid[0], pid[1]);
-                String key = (pid[1] == null ? pid[0] : pid[0] + "-" + pid[1]);
+                String key = createConfigurationKey(pid[0], pid[1]);
                 props.put(CONFIG_KEY, key);
                 if (cfg.getBundleLocation() != null) {
                     cfg.setBundleLocation(null);
@@ -478,6 +478,10 @@ public class FeaturesServiceImpl impleme
         state.features.put(feature, bundles);
     }
 
+    private String createConfigurationKey(String pid, String factoryPid) {
+        return factoryPid == null ? pid : pid + "-" + factoryPid;
+    }
+
     protected List<BundleInfo> resolve(Feature feature) throws Exception {
         String resolver = feature.getResolver();
         // If no resolver is specified, we expect a list of uris
@@ -1018,19 +1022,16 @@ public class FeaturesServiceImpl impleme
         if (factoryPid == null) {
             filter = "(" + Constants.SERVICE_PID + "=" + pid + ")";
         } else {
-            filter = "(" + ConfigurationAdmin.SERVICE_FACTORYPID + "=" + factoryPid + ")";
+            String key = createConfigurationKey(pid, factoryPid);
+            filter = "(" + CONFIG_KEY + "=" + key + ")";
         }
         Configuration[] configurations = configurationAdmin.listConfigurations(filter);
-        if (configurations != null && configurations.length > 0)
-        {
+        if (configurations != null && configurations.length > 0) {
             return configurations[0];
         }
-        else
-        {
-            return null;
-        }
+        return null;
     }
-    
+
     protected void saveState() {
         try {
             File file = bundleContext.getDataFile("FeaturesServiceState.properties");