Author: gnodet
Date: Fri Jun 11 07:21:04 2010
New Revision: 953589

URL: http://svn.apache.org/viewvc?rev=953589&view=rev
Log:
FELIX-2382: do not refresh host bundles that have just been installed

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

Modified: 
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java?rev=953589&r1=953588&r2=953589&view=diff
==============================================================================
--- 
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
 (original)
+++ 
felix/trunk/karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
 Fri Jun 11 07:21:04 2010
@@ -393,22 +393,26 @@ public class FeaturesServiceImpl impleme
 
     protected Set<Bundle> findBundlesWithFramentsToRefresh(InstallationState 
state) {
         Set<Bundle> bundles = new HashSet<Bundle>();
-        for (Bundle b : state.installed) {
-            String hostHeader = (String) 
b.getHeaders().get(Constants.FRAGMENT_HOST);
-            if (hostHeader != null) {
-                Clause[] clauses = Parser.parseHeader(hostHeader);
-                if (clauses != null && clauses.length > 0) {
-                    Clause path = clauses[0];
-                    for (Bundle hostBundle : state.bundles) {
-                        if 
(hostBundle.getSymbolicName().equals(path.getName())) {
-                            String ver = 
path.getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE);
-                            if (ver != null) {
-                                VersionRange v = 
VersionRange.parseVersionRange(ver);
-                                if (v.contains(hostBundle.getVersion())) {
+        Set<Bundle> oldBundles = new HashSet<Bundle>(state.bundles);
+        oldBundles.removeAll(state.installed);
+        if (!oldBundles.isEmpty()) {
+            for (Bundle b : state.installed) {
+                String hostHeader = (String) 
b.getHeaders().get(Constants.FRAGMENT_HOST);
+                if (hostHeader != null) {
+                    Clause[] clauses = Parser.parseHeader(hostHeader);
+                    if (clauses != null && clauses.length > 0) {
+                        Clause path = clauses[0];
+                        for (Bundle hostBundle : oldBundles) {
+                            if 
(hostBundle.getSymbolicName().equals(path.getName())) {
+                                String ver = 
path.getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE);
+                                if (ver != null) {
+                                    VersionRange v = 
VersionRange.parseVersionRange(ver);
+                                    if (v.contains(hostBundle.getVersion())) {
+                                        bundles.add(hostBundle);
+                                    }
+                                } else {
                                     bundles.add(hostBundle);
                                 }
-                            } else {
-                                bundles.add(hostBundle);
                             }
                         }
                     }


Reply via email to