You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by dj...@apache.org on 2013/09/16 09:39:33 UTC
svn commit: r1523552 - in
/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager:
AbstractComponentManager.java ConfigurationComponentFactoryImpl.java
ImmediateComponentManager.java
Author: djencks
Date: Mon Sep 16 07:39:32 2013
New Revision: 1523552
URL: http://svn.apache.org/r1523552
Log:
FELIX-4223 access m_activated more usually under a lock
Modified:
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ConfigurationComponentFactoryImpl.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java?rev=1523552&r1=1523551&r2=1523552&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java Mon Sep 16 07:39:32 2013
@@ -823,34 +823,32 @@ public abstract class AbstractComponentM
final void disposeInternal( int reason )
{
log( LogService.LOG_DEBUG, "Disposing component (reason: " + reason + ")", null );
- if ( m_activated )
- {
- doDeactivate( reason, true );
- }
+ doDeactivate( reason, true );
clear();
}
- void doDeactivate( int reason, boolean disable )
+ final void doDeactivate( int reason, boolean disable )
{
try
{
if ( !unregisterService() )
{
log( LogService.LOG_DEBUG, "Component deactivation occuring on another thread", null );
- //another thread is deactivating.
- return;
}
obtainWriteLock( "AbstractComponentManager.State.doDeactivate.1" );
try
{
- m_activated = false;
- deleteComponent( reason );
- deactivateDependencyManagers();
- if ( disable )
+ if ( m_activated )
{
- disableDependencyManagers();
+ m_activated = false;
+ deleteComponent( reason );
+ deactivateDependencyManagers();
+ if ( disable )
+ {
+ disableDependencyManagers();
+ }
+ unsetDependenciesCollected();
}
- unsetDependenciesCollected();
}
finally
{
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ConfigurationComponentFactoryImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ConfigurationComponentFactoryImpl.java?rev=1523552&r1=1523551&r2=1523552&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ConfigurationComponentFactoryImpl.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ConfigurationComponentFactoryImpl.java Mon Sep 16 07:39:32 2013
@@ -81,6 +81,7 @@ public class ConfigurationComponentFacto
((AbstractComponentManager)i.next()).enable( false );
}
+ m_activated = true;
return true;
}
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java?rev=1523552&r1=1523551&r2=1523552&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java Mon Sep 16 07:39:32 2013
@@ -572,6 +572,17 @@ public class ImmediateComponentManager<S
m_properties = null;
+ // reactivate the component to ensure it is provided with the
+ // configuration data
+ if ( ( getState() & ( STATE_DISPOSED | STATE_DISABLED ) ) != 0 )
+ {
+ // nothing to do for inactive components, leave this method
+ log( LogService.LOG_DEBUG, "Component can not be configured in state {0}", new Object[] { getState() }, null );
+ //m_internalEnabled is false, we don't need to worry about activation
+ updateTargets( getProperties() );
+ return;
+ }
+
//TODO wait for activation/deactivation to complete, then lock(?) or internal disable...
// unsatisfied component and non-ignored configuration may change targets
@@ -594,17 +605,6 @@ public class ImmediateComponentManager<S
return;
}
- // reactivate the component to ensure it is provided with the
- // configuration data
- if ( ( getState() & ( STATE_DISPOSED | STATE_DISABLED ) ) != 0 )
- {
- // nothing to do for inactive components, leave this method
- log( LogService.LOG_DEBUG, "Component can not be configured in state {0}", new Object[] { getState() }, null );
- //m_internalEnabled is false, we don't need to worry about activation
- updateTargets( getProperties() );
- return;
- }
-
// if the configuration has been deleted but configuration is required
// this component must be deactivated
if ( configuration == null && getComponentMetadata().isConfigurationRequired() )