You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2013/01/31 18:20:07 UTC

svn commit: r1441072 - /felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java

Author: rickhall
Date: Thu Jan 31 17:20:06 2013
New Revision: 1441072

URL: http://svn.apache.org/viewvc?rev=1441072&view=rev
Log:
When grabing bundle locks for a refresh operation, we also need to allow
for bundles to be in the UNINSTALLED state, otherwise we cannot refresh
them. (FELIX-3807)

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java?rev=1441072&r1=1441071&r2=1441072&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java Thu Jan 31 17:20:06 2013
@@ -2588,13 +2588,11 @@ public class Felix extends BundleImpl im
                     new TreeMap<Long, BundleImpl>(m_installedBundles[IDENTIFIER_MAP_IDX])
                 };
                 target = (BundleImpl) maps[LOCATION_MAP_IDX].remove(bundle._getLocation());
-                maps[IDENTIFIER_MAP_IDX].remove(new Long(target.getBundleId()));
-                m_installedBundles = maps;
-
-                // Put the uninstalled bundle into the uninstalled
-                // list for subsequent refreshing.
                 if (target != null)
                 {
+                    maps[IDENTIFIER_MAP_IDX].remove(new Long(target.getBundleId()));
+                    m_installedBundles = maps;
+
                     // Set the bundle's persistent state to uninstalled.
                     bundle.setPersistentStateUninstalled();
 
@@ -4708,7 +4706,7 @@ public class Felix extends BundleImpl im
         {
             acquireBundleLock(m_bundle,
                     Bundle.INSTALLED | Bundle.RESOLVED | Bundle.STARTING |
-                    Bundle.ACTIVE | Bundle.STOPPING);
+                    Bundle.ACTIVE | Bundle.STOPPING | Bundle.UNINSTALLED);
             try
             {
                 m_oldState = m_bundle.getState();