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();
}