Author: jbonofre
Date: Tue May 15 16:47:28 2012
New Revision: 1338790

URL: http://svn.apache.org/viewvc?rev=1338790&view=rev
Log:
Avoid to override definition when adding a feature repository

Modified:
    
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/LocalFeaturesListener.java

Modified: 
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/LocalFeaturesListener.java
URL: 
http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/LocalFeaturesListener.java?rev=1338790&r1=1338789&r2=1338790&view=diff
==============================================================================
--- 
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/LocalFeaturesListener.java
 (original)
+++ 
karaf/cellar/branches/cellar-2.2.x/features/src/main/java/org/apache/karaf/cellar/features/LocalFeaturesListener.java
 Tue May 15 16:47:28 2012
@@ -120,14 +120,24 @@ public class LocalFeaturesListener exten
                         Map<FeatureInfo, Boolean> distributedFeatures = 
clusterManager.getMap(Constants.FEATURES + Configurations.SEPARATOR + 
group.getName());
                         try {
                             for (Feature feature : 
event.getRepository().getFeatures()) {
-                                FeatureInfo info = new 
FeatureInfo(feature.getName(), feature.getVersion());
-                                distributedFeatures.put(info, false);
+                                // check the feature in the distributed map
+                                FeatureInfo featureInfo = null;
+                                for (FeatureInfo distributedFeature : 
distributedFeatures.keySet()) {
+                                    if 
(distributedFeature.getName().equals(feature.getName()) && 
distributedFeature.getVersion().equals(feature.getVersion())) {
+                                        featureInfo = distributedFeature;
+                                        break;
+                                    }
+                                }
+                                if (featureInfo == null) {
+                                    featureInfo = new 
FeatureInfo(feature.getName(), feature.getVersion());
+                                    distributedFeatures.put(featureInfo, 
false);
+                                }
                             }
                         } catch (Exception e) {
                             LOGGER.warn("CELLAR FEATURES: can't update the 
distributed features map", e);
                         }
                     } else {
-                        removeRepository(event.getRepository(),group);
+                        removeRepository(event.getRepository(), group);
                         // update the feature map
                         Map<FeatureInfo, Boolean> distributedFeatures = 
clusterManager.getMap(Constants.FEATURES + Configurations.SEPARATOR + 
group.getName());
                         try {


Reply via email to