Author: mes
Date: 2011-02-02 16:33:56 -0800 (Wed, 02 Feb 2011)
New Revision: 24004

Modified:
   
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyNetworkManagerImpl.java
Log:
moved event firing outside of lock

Modified: 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyNetworkManagerImpl.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyNetworkManagerImpl.java
    2011-02-03 00:33:28 UTC (rev 24003)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyNetworkManagerImpl.java
    2011-02-03 00:33:56 UTC (rev 24004)
@@ -90,16 +90,21 @@
                        throw new NullPointerException("network is null");
 
                final Long networkId = network.getSUID();
+               
+               // check outside the lock so that we fail early
+               if (!networkMap.containsKey(networkId))
+                       throw new IllegalArgumentException(
+                                       "network is not recognized by this 
NetworkManager");
 
+               // let everyone know! 
+               cyEventHelper.fireSynchronousEvent(new 
NetworkAboutToBeDestroyedEvent(CyNetworkManagerImpl.this, network));
+
                synchronized (this) {
+                       // check again within the lock in case something has 
changed
                        if (!networkMap.containsKey(networkId))
                                throw new IllegalArgumentException(
                                                "network is not recognized by 
this NetworkManager");
 
-                       // TODO firing an event from within a lock!!!!
-                       final CyNetwork toDestroy = network;
-                       cyEventHelper.fireSynchronousEvent(new 
NetworkAboutToBeDestroyedEvent(CyNetworkManagerImpl.this, toDestroy));
-
                        for (CyNode n : network.getNodeList())
                                n.getCyRow().set("selected", false);
                        for (CyEdge e : network.getEdgeList())

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to