Author: rickhall
Date: Fri Jun  1 06:47:29 2007
New Revision: 543485

URL: http://svn.apache.org/viewvc?view=rev&rev=543485
Log:
Split the Felix.shutdownInternal() method in two to fix some issues Felix
noticed in the new shutdown routine; splitting the method helped us avoid
some asymmetry.

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
    
felix/trunk/framework/src/main/java/org/apache/felix/framework/SystemBundle.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?view=diff&rev=543485&r1=543484&r2=543485
==============================================================================
--- 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 
Fri Jun  1 06:47:29 2007
@@ -567,7 +567,7 @@
      * the system bundle, cleaning up any bundle remains and shutting down 
event
      * dispatching.
      */
-    void shutdownInternal()
+    void shutdownInternalStart()
     {
         synchronized (this)
         {
@@ -665,7 +665,10 @@
                 }
             }
         }
+    }
 
+    void shutdownInternalFinish()
+    {
         // Notify any waiters that the framework is back in its initial state.
         synchronized (this)
         {

Modified: 
felix/trunk/framework/src/main/java/org/apache/felix/framework/SystemBundle.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/SystemBundle.java?view=diff&rev=543485&r1=543484&r2=543485
==============================================================================
--- 
felix/trunk/framework/src/main/java/org/apache/felix/framework/SystemBundle.java
 (original)
+++ 
felix/trunk/framework/src/main/java/org/apache/felix/framework/SystemBundle.java
 Fri Jun  1 06:47:29 2007
@@ -356,10 +356,11 @@
 
         public void run()
         {
-            // First, stop all other bundles.
+            // First, start the framework shutdown, which will
+            // stop all bundles.
             try
             {
-                getFelix().shutdownInternal();
+                getFelix().shutdownInternalStart();
             }
             catch (Exception ex)
             {
@@ -396,6 +397,18 @@
                             throwable);
                     }
                 }
+            }
+
+            // Lastly, complete the shutdown.
+            try
+            {
+                getFelix().shutdownInternalFinish();
+            }
+            catch (Exception ex)
+            {
+                getFelix().getLogger().log(
+                    Logger.LOG_ERROR,
+                    "SystemBundle: Error while shutting down.", ex);
             }
         }
     }


Reply via email to