Author: slaws
Date: Mon Mar 19 13:29:34 2012
New Revision: 1302422

URL: http://svn.apache.org/viewvc?rev=1302422&view=rev
Log:
TUSCANY-4025 - enhance the previous fix for this JIRA to call the listeners in 
reverse order. Node listeners will be added before other listeners that deal 
with the nodes contributions so we want the contribution to hang around in the 
node until all the other listeners have done their thing.

Modified:
    
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/DomainRegistryImpl.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/DomainRegistryImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/DomainRegistryImpl.java?rev=1302422&r1=1302421&r2=1302422&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/DomainRegistryImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/assembly/impl/DomainRegistryImpl.java
 Mon Mar 19 13:29:34 2012
@@ -24,6 +24,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.Callable;
@@ -210,7 +211,15 @@ public class DomainRegistryImpl extends 
     }
 
     public void uninstallContribution(String uri) {
-        for (ContributionListener listener : contributionlisteners) {
+        // TUSCANY-4025 - iterate through this list in reverse
+        //                in the expectation that a node listener
+        //                will appear in the list before and other
+        //                listener that appears in the list and which
+        //                relies on the node still have the contribution
+        //                information. 
+        ListIterator<ContributionListener> listenerIterator = 
contributionlisteners.listIterator(contributionlisteners.size());
+        while (listenerIterator.hasPrevious()) { 
+            ContributionListener listener = listenerIterator.previous(); 
             listener.contributionRemoved(uri);
         }
         contributionDescriptions.remove(uri);        


Reply via email to