Author: rickhall
Date: Tue Jun 9 20:09:41 2009
New Revision: 783121
URL: http://svn.apache.org/viewvc?rev=783121&view=rev
Log:
Deferred activation should happen immediately if the bundle has already
defined classes. (FELIX-749)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/Felix.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.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=783121&r1=783120&r2=783121&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 Jun 9 20:09:41 2009
@@ -1481,10 +1481,14 @@
// Set the bundle's context.
bundle.setBundleContext(new BundleContextImpl(m_logger, this,
bundle));
- if (bundle.getRuntimeActivationPolicy() != IModule.LAZY_ACTIVATION)
+ // If the bundle's activation policy is eager or activation has
already
+ // been triggered, then activate the bundle immediately.
+ if ((bundle.getRuntimeActivationPolicy() !=
IModule.LAZY_ACTIVATION)
+ || ((ModuleImpl)
bundle.getCurrentModule()).isActivationTrigger())
{
activateBundle(bundle);
}
+ // Otherwise, defer bundle activation.
else
{
setBundleStateAndNotify(bundle, Bundle.STARTING);
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
URL:
http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java?rev=783121&r1=783120&r2=783121&view=diff
==============================================================================
---
felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
(original)
+++
felix/trunk/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
Tue Jun 9 20:09:41 2009
@@ -1172,7 +1172,7 @@
return m_id;
}
- private synchronized boolean isActivationTrigger()
+ synchronized boolean isActivationTrigger()
{
return m_isActivationTriggered;
}
@@ -1633,7 +1633,7 @@
}
// Perform deferred activation without holding the class
loader lock,
- // if necessary.
+ // if the class we are returning is the instigating class.
List list = (List) m_local.get();
if ((list != null)
&& (list.size() > 0)