You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cl...@apache.org on 2012/05/15 18:43:03 UTC

svn commit: r1338788 - /felix/trunk/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/IPojoFactory.java

Author: clement
Date: Tue May 15 16:43:03 2012
New Revision: 1338788

URL: http://svn.apache.org/viewvc?rev=1338788&view=rev
Log:
Fix FELIX-3501. 

Store the state before its modification.

Modified:
    felix/trunk/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/IPojoFactory.java

Modified: felix/trunk/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/IPojoFactory.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/IPojoFactory.java?rev=1338788&r1=1338787&r2=1338788&view=diff
==============================================================================
--- felix/trunk/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/IPojoFactory.java (original)
+++ felix/trunk/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/IPojoFactory.java Tue May 15 16:43:03 2012
@@ -522,6 +522,8 @@ public abstract class IPojoFactory imple
             m_sr = null;
         }
         stopping(); // Method called when holding the lock.
+        int oldState = m_state; // Create a variable to store the old state. Using a variable is important as
+                                // after the next instruction, the getState() method must return INVALID.
         m_state = INVALID; // Set here to avoid to create instances during the stops.
 
         Set col = m_componentInstances.keySet();
@@ -533,7 +535,7 @@ public abstract class IPojoFactory imple
             index++;
         }
 
-        if (m_state == VALID) {
+        if (oldState == VALID) { // Check if the old state was valid.
             for (int i = 0; i < m_listeners.size(); i++) {
                 ((FactoryStateListener) m_listeners.get(i)).stateChanged(this, INVALID);
             }