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 2009/09/01 22:04:14 UTC

svn commit: r810205 - in /felix/trunk/framework/src/main/java/org/apache/felix/framework: Felix.java StartLevelImpl.java

Author: rickhall
Date: Tue Sep  1 20:04:14 2009
New Revision: 810205

URL: http://svn.apache.org/viewvc?rev=810205&view=rev
Log:
Modify Start Level service to synchronously persist bundle start level
changes. (FELIX-1551)

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
    felix/trunk/framework/src/main/java/org/apache/felix/framework/StartLevelImpl.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=810205&r1=810204&r2=810205&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 Tue Sep  1 20:04:14 2009
@@ -1221,15 +1221,16 @@
         {
             if (startLevel >= 1)
             {
-                impl.setStartLevel(startLevel);
+                // NOTE: The start level was persistently recorded inside
+                // the start level impl because the spec requires it to be
+                // done synchronously.
 
                 try
                 {
                     // Start the bundle if necessary.
                     if (((impl.getPersistentState() == Bundle.ACTIVE)
                         || (impl.getPersistentState() == Bundle.STARTING))
-                        && (impl.getStartLevel(getInitialBundleStartLevel())
-                            <= getActiveStartLevel()))
+                        && (startLevel <= getActiveStartLevel()))
                     {
 // TODO: LAZY - Not sure if this is the best way...
                         int options = Bundle.START_TRANSIENT;
@@ -1241,8 +1242,7 @@
                     // Stop the bundle if necessary.
                     else if (((impl.getState() == Bundle.ACTIVE)
                         || (impl.getState() == Bundle.STARTING))
-                        && (impl.getStartLevel(getInitialBundleStartLevel())
-                            > getActiveStartLevel()))
+                        && (startLevel > getActiveStartLevel()))
                     {
                         stopBundle(impl, false);
                     }

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/StartLevelImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/StartLevelImpl.java?rev=810205&r1=810204&r2=810205&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/StartLevelImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/StartLevelImpl.java Tue Sep  1 20:04:14 2009
@@ -172,6 +172,9 @@
         }
         synchronized (m_requestList)
         {
+            // Synchronously persists the start level.
+            ((BundleImpl) bundle).setStartLevel(startlevel);
+            // Asynchronously process the start level change.
             m_requestList.add(new Object[] { bundle, new Integer(startlevel) });
             m_requestList.notifyAll();
         }