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 2010/05/13 17:40:00 UTC

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

Author: rickhall
Date: Thu May 13 15:40:00 2010
New Revision: 943917

URL: http://svn.apache.org/viewvc?rev=943917&view=rev
Log:
Fire event without bundle lock. (FELIX-2035)

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=943917&r1=943916&r2=943917&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 May 13 15:40:00 2010
@@ -4135,9 +4135,9 @@ m_logger.log(Logger.LOG_DEBUG, "DYNAMIC 
             BundleImpl bundle = (BundleImpl) module.getBundle();
 
             // Lock the bundle first.
+            boolean fire = false;
             try
             {
-// TODO: RESOLVER - Seems like we should release the lock before we fire the event.
                 // Acquire bundle lock.
                 try
                 {
@@ -4158,7 +4158,7 @@ m_logger.log(Logger.LOG_DEBUG, "DYNAMIC 
                     else
                     {
                         setBundleStateAndNotify(bundle, Bundle.RESOLVED);
-                        fireBundleEvent(BundleEvent.RESOLVED, bundle);
+                        fire = true;
                     }
                 }
             }
@@ -4166,6 +4166,12 @@ m_logger.log(Logger.LOG_DEBUG, "DYNAMIC 
             {
                 releaseBundleLock(bundle);
             }
+
+            // Fire event while not holding the bundle lock.
+            if (fire)
+            {
+                fireBundleEvent(BundleEvent.RESOLVED, bundle);
+            }
         }
     }