Author: mes
Date: 2011-06-21 15:35:13 -0700 (Tue, 21 Jun 2011)
New Revision: 25844

Removed:
   
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableRowUpdateServiceImpl.java
Modified:
   
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/ArrayGraph.java
   
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/ArraySubGraph.java
   
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/CyNodeImpl.java
   
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
   
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableManagerImpl.java
   
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context-osgi.xml
   
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context.xml
   
core3/model-impl/trunk/impl/src/test/java/org/cytoscape/model/CyTableTest.java
   
core3/model-impl/trunk/it/src/test/java/org/cytoscape/model/ServiceConfigurationTest.java
   
core3/model-impl/trunk/performance/src/test/java/org/cytoscape/model/ServiceConfigurationTest.java
   core3/model-impl/trunk/pom.xml
Log:
updated to for event-api changes that rely on payload events instead of 
microlisteners

Modified: 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/ArrayGraph.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/ArrayGraph.java
      2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/ArrayGraph.java
      2011-06-21 22:35:13 UTC (rev 25844)
@@ -29,6 +29,7 @@
 
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -370,31 +371,28 @@
        /**
         * {@inheritDoc}
         */
-       public boolean removeNode(final CyNode n) {
+       public boolean removeNodes(final Collection<CyNode> nodes) {
 
                synchronized (this) {
-                       //System.out.println("removeNode root");
-                       if (!containsNode(n))
-                               return false;
-                       //System.out.println(" attempting removeNode root");
-
                        // clean up subnetwork pointers
                        // this will remove the node from base  
                        for ( CySubNetwork sub : subNetworks )
-                               sub.removeNode(n);
+                               sub.removeNodes(nodes);
+                       
+                       for ( CyNode n : nodes ) {
+                               if (!containsNode(n))
+                                       return false;
 
-                       // remove adjacent edges from ROOT network
-                       final List<CyEdge> edges = getAdjacentEdgeList(n, 
CyEdge.Type.ANY, ROOT);
-
-                       for (final CyEdge e : edges)
-                               removeEdge(e);
-
-                       final NodePointer node = getNodePointer(n);
-                       firstNode = node.remove(firstNode,ROOT);
-
-                       nodePointers.set(n.getIndex(), null);
-
-                       nodeCount--;
+                               // remove adjacent edges from ROOT network
+                               removeEdges(getAdjacentEdgeList(n, 
CyEdge.Type.ANY, ROOT));
+       
+                               final NodePointer node = getNodePointer(n);
+                               firstNode = node.remove(firstNode,ROOT);
+       
+                               nodePointers.set(n.getIndex(), null);
+       
+                               nodeCount--;
+                       }
                }
 
                return true;
@@ -443,24 +441,28 @@
        /**
         * {@inheritDoc}
         */
-       public boolean removeEdge(final CyEdge edge) {
+       public boolean removeEdges(final Collection<CyEdge> edges) {
+               if ( edges == null || edges.isEmpty() )
+                       return false;
 
                synchronized (this) {
-                       if (!containsEdge(edge))
-                               return false;
-
                        // clean up subnetwork pointers
                        // this will remove the edge from base  
                        for ( CySubNetwork sub : subNetworks )
-                               sub.removeEdge(edge);
+                               sub.removeEdges(edges);
+                       
+                       for (CyEdge edge : edges) {
+                               if (!containsEdge(edge))
+                                       return false;
+       
+                               final EdgePointer e = getEdgePointer(edge);
+       
+                               e.remove(ROOT);
+       
+                               edgePointers.set(e.index, null);
 
-                       final EdgePointer e = getEdgePointer(edge);
-
-                       e.remove(ROOT);
-
-                       edgePointers.set(e.index, null);
-
-                       edgeCount--;
+                               edgeCount--;
+                       }
                }
 
                return true;
@@ -831,6 +833,7 @@
        /**
         * {@inheritDoc}
         */
+       @Override
        public CySubNetwork addSubNetwork(final Iterable<CyNode> nodes, final 
Iterable<CyEdge> edges) {
                // Only addSubNetwork() modifies the internal state of 
ArrayGraph (this object), 
                // so because it's synchronized, we don't need to synchronize 
this method.
@@ -872,9 +875,7 @@
                        throw new IllegalArgumentException("Subnetwork not a 
member of this RootNetwork " + sub);
 
                // clean up pointers for nodes in subnetwork
-               final List<CyNode> subNodes = sub.getNodeList();
-               for ( CyNode node : subNodes )
-                       sub.removeNode(node);
+               sub.removeNodes(sub.getNodeList());
 
                subNetworks.remove( sub );
        }

Modified: 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/ArraySubGraph.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/ArraySubGraph.java
   2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/ArraySubGraph.java
   2011-06-21 22:35:13 UTC (rev 25844)
@@ -38,20 +38,22 @@
 
 import org.cytoscape.event.CyEventHelper;
 
+import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNode;
 import org.cytoscape.model.CyRow;
 import org.cytoscape.model.SUIDFactory;
-import org.cytoscape.model.events.AddedNodeEvent;
-import org.cytoscape.model.events.AddedEdgeEvent;
-import org.cytoscape.model.events.AboutToRemoveNodeEvent;
-import org.cytoscape.model.events.AboutToRemoveEdgeEvent;
-import org.cytoscape.model.events.RemovedNodeEvent;
-import org.cytoscape.model.events.RemovedEdgeEvent;
+import org.cytoscape.model.events.AddedNodesEvent;
+import org.cytoscape.model.events.AddedEdgesEvent;
+import org.cytoscape.model.events.AboutToRemoveNodesEvent;
+import org.cytoscape.model.events.AboutToRemoveEdgesEvent;
+import org.cytoscape.model.events.RemovedNodesEvent;
+import org.cytoscape.model.events.RemovedEdgesEvent;
 import org.cytoscape.model.subnetwork.CySubNetwork;
 import org.cytoscape.model.subnetwork.CyRootNetwork;
 
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -133,7 +135,7 @@
                        internalNodeCount++;
                        nodeSet.add(ret);
                }
-               eventHelper.fireSynchronousEvent(new AddedNodeEvent(this, ret));
+               eventHelper.addEventPayload((CyNetwork)this, ret, 
AddedNodesEvent.class);
 
                return ret;
        }
@@ -150,7 +152,7 @@
                        internalEdgeCount++;
                        edgeSet.add(ret);
                }
-               eventHelper.fireSynchronousEvent(new AddedEdgeEvent(this, ret));
+               eventHelper.addEventPayload((CyNetwork)this, ret, 
AddedEdgesEvent.class);
 
                return ret;
        }
@@ -326,33 +328,33 @@
        /**
         * {@inheritDoc}
         */
-       public boolean removeNode(final CyNode n) {
-               if ( n == null )
+       @Override
+       public boolean removeNodes(final Collection<CyNode> nodes) {
+               if ( nodes == null || nodes.isEmpty() )
                        return false;
 
                // Possible error if this node isn't contained in subnetwork, 
but
                // since this is only a notification, maybe that's OK.
-               eventHelper.fireSynchronousEvent(new 
AboutToRemoveNodeEvent(this, n));
-               final List<CyEdge> edges; 
+               eventHelper.fireEvent(new AboutToRemoveNodesEvent(this, nodes));
 
                synchronized (this) {
-                       if (!containsNode(n))
-                               return false;
-
-                       // remove adjacent edges
-                       edges = getAdjacentEdgeList(n, CyEdge.Type.ANY);
+                       for (CyNode n : nodes) {
+                               
+                               if (!containsNode(n))
+                                       return false;
        
-                       for (final CyEdge e : edges)
-                               removeEdgeInternal(e);
+                               // remove adjacent edges
+                               removeEdgesInternal(getAdjacentEdgeList(n, 
CyEdge.Type.ANY));
+               
+                               final NodePointer node = 
parent.getNodePointer(n);
+                               inFirstNode = 
node.remove(inFirstNode,internalId);
        
-                       final NodePointer node = parent.getNodePointer(n);
-                       inFirstNode = node.remove(inFirstNode,internalId);
-
-                       internalNodeCount--;
-                       nodeSet.remove(n);
+                               internalNodeCount--;
+                               nodeSet.remove(n);
+                       }
                }
                
-               eventHelper.fireAsynchronousEvent(new RemovedNodeEvent(this));
+               eventHelper.fireEvent(new RemovedNodesEvent(this));
 
                return true;
        }
@@ -360,35 +362,38 @@
        /**
         * {@inheritDoc}
         */
-       public boolean removeEdge(final CyEdge edge) {
-               if ( edge == null )
+       @Override
+       public boolean removeEdges(final Collection<CyEdge> edges) {
+               if ( edges == null || edges.isEmpty() )
                        return false;
 
-               // Possible error if this edge isn't contained in subnetwork, 
but
+               // Possible error if one of the edges isn't contained in 
subnetwork, but
                // since this is only a notification, maybe that's OK.
-               eventHelper.fireSynchronousEvent(new 
AboutToRemoveEdgeEvent(this, edge));
+               eventHelper.fireEvent(new AboutToRemoveEdgesEvent(this, edges));
 
                synchronized (this) {
-                       if (!removeEdgeInternal(edge))
+                       if (!removeEdgesInternal(edges))
                                return false;
                }
 
-               eventHelper.fireAsynchronousEvent(new RemovedEdgeEvent(this));
+               eventHelper.fireEvent(new RemovedEdgesEvent(this));
 
                return true;
        }
 
        // should be called from within a synchronized block
-       private boolean removeEdgeInternal(CyEdge edge) {
-               if (!containsEdge(edge))
-                       return false;
-
-               final EdgePointer e = parent.getEdgePointer(edge);
-
-               e.remove(internalId);
-
-               internalEdgeCount--;
-               edgeSet.remove(edge);
+       private boolean removeEdgesInternal(Collection<CyEdge> edges) {
+               for (CyEdge edge : edges) {
+                       if (!containsEdge(edge))
+                               return false;
+       
+                       final EdgePointer e = parent.getEdgePointer(edge);
+       
+                       e.remove(internalId);
+       
+                       internalEdgeCount--;
+                       edgeSet.remove(edge);
+               }
                return true;
        }
 

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-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyNetworkManagerImpl.java
    2011-06-21 22:35:13 UTC (rev 25844)
@@ -43,8 +43,6 @@
 import org.cytoscape.model.events.NetworkAboutToBeDestroyedEvent;
 import org.cytoscape.model.events.NetworkAddedEvent;
 import org.cytoscape.model.events.NetworkDestroyedEvent;
-import org.cytoscape.model.events.RowsAboutToChangeEvent;
-import org.cytoscape.model.events.RowsFinishedChangingEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -96,7 +94,7 @@
            throw new IllegalArgumentException("network is not recognized by 
this NetworkManager");
 
        // let everyone know!
-       cyEventHelper.fireSynchronousEvent(new 
NetworkAboutToBeDestroyedEvent(CyNetworkManagerImpl.this, network));
+       cyEventHelper.fireEvent(new 
NetworkAboutToBeDestroyedEvent(CyNetworkManagerImpl.this, network));
 
        synchronized (this) {
            // check again within the lock in case something has changed
@@ -105,20 +103,12 @@
 
            CyTable nodeTable = network.getDefaultNodeTable();
            CyTable edgeTable = network.getDefaultEdgeTable();
-           try {
-               cyEventHelper.fireSynchronousEvent(new 
RowsAboutToChangeEvent(this, nodeTable));
-               cyEventHelper.fireSynchronousEvent(new 
RowsAboutToChangeEvent(this, edgeTable));
 
                for (CyNode n : network.getNodeList())
                    n.getCyRow().set(CyNetwork.SELECTED, false);
                for (CyEdge e : network.getEdgeList())
                    e.getCyRow().set(CyNetwork.SELECTED, false);
 
-           } finally {
-               cyEventHelper.fireSynchronousEvent(new 
RowsFinishedChangingEvent(this, nodeTable));
-               cyEventHelper.fireSynchronousEvent(new 
RowsFinishedChangingEvent(this, edgeTable));
-           }
-
            networkMap.remove(networkId);
            
            // TODO: remove tables!!
@@ -127,7 +117,7 @@
        }
 
        // let everyone know that some network is gone
-       cyEventHelper.fireSynchronousEvent(new 
NetworkDestroyedEvent(CyNetworkManagerImpl.this));
+       cyEventHelper.fireEvent(new 
NetworkDestroyedEvent(CyNetworkManagerImpl.this));
     }
 
     @Override
@@ -140,7 +130,7 @@
            networkMap.put(network.getSUID(), network);
        }
 
-       cyEventHelper.fireSynchronousEvent(new 
NetworkAddedEvent(CyNetworkManagerImpl.this, network));
+       cyEventHelper.fireEvent(new 
NetworkAddedEvent(CyNetworkManagerImpl.this, network));
     }
 
     @Override

Modified: 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyNodeImpl.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyNodeImpl.java
      2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyNodeImpl.java
      2011-06-21 22:35:13 UTC (rev 25844)
@@ -88,8 +88,8 @@
                }
 
                if (orig != null)
-                       eventHelper.fireSynchronousEvent(new 
UnsetNestedNetworkEvent(this, orig));
+                       eventHelper.fireEvent(new UnsetNestedNetworkEvent(this, 
orig));
                if (nestedNet != null)
-                       eventHelper.fireSynchronousEvent(new 
SetNestedNetworkEvent(this, nestedNet));
+                       eventHelper.fireEvent(new SetNestedNetworkEvent(this, 
nestedNet));
        }
 }

Modified: 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
     2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableImpl.java
     2011-06-21 22:35:13 UTC (rev 25844)
@@ -49,8 +49,9 @@
 import org.cytoscape.model.events.ColumnCreatedEvent;
 import org.cytoscape.model.events.ColumnDeletedEvent;
 import org.cytoscape.model.events.ColumnNameChangedEvent;
-import org.cytoscape.model.events.RowSetMicroListener;
-import org.cytoscape.model.events.RowCreatedMicroListener;
+import org.cytoscape.model.events.RowSetRecord;
+import org.cytoscape.model.events.RowsCreatedEvent;
+import org.cytoscape.model.events.RowsSetEvent;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -154,7 +155,7 @@
                        types.remove(oldColumnName);
                }
 
-               eventHelper.fireSynchronousEvent(new 
ColumnNameChangedEvent(this, oldColumnName,
+               eventHelper.fireEvent(new ColumnNameChangedEvent(this, 
oldColumnName,
                                                                            
newColumnName));
        }
 
@@ -264,7 +265,7 @@
                }
 
                // This event must be synchronous!
-               eventHelper.fireSynchronousEvent(new ColumnDeletedEvent(this, 
columnName));
+               eventHelper.fireEvent(new ColumnDeletedEvent(this, columnName));
        }
 
        @Override
@@ -300,7 +301,7 @@
                        reverse.put(columnName, new HashMap<Object, 
Set<Object>>());
                }
 
-               eventHelper.fireSynchronousEvent(new ColumnCreatedEvent(this, 
columnName));
+               eventHelper.fireEvent(new ColumnCreatedEvent(this, columnName));
        }
 
        @Override
@@ -331,7 +332,7 @@
                        reverse.put(columnName, new HashMap<Object, 
Set<Object>>());
                }
 
-               eventHelper.fireSynchronousEvent(new ColumnCreatedEvent(this, 
columnName));
+               eventHelper.fireEvent(new ColumnCreatedEvent(this, columnName));
        }
 
        synchronized <T> List<T> getColumnValues(final String columnName, final 
Class<? extends T> type) {
@@ -391,7 +392,7 @@
                        rows.put(key, row);
                }
 
-               eventHelper.getMicroListener(RowCreatedMicroListener.class, 
this).handleRowCreated(key);
+               eventHelper.addEventPayload((CyTable)this, (Object)key, 
RowsCreatedEvent.class);
                return row;
        }
 
@@ -515,8 +516,8 @@
                        }
                }
 
-               eventHelper.getMicroListener(RowSetMicroListener.class,
-                                            
getRow(key)).handleRowSet(columnName, newValue, newRawValue);
+               eventHelper.addEventPayload((CyTable)this, new 
RowSetRecord(getRow(key),columnName,newValue, newRawValue), RowsSetEvent.class);
+
        }
 
        private void addToReverseMap(final String columnName, final Object key,
@@ -585,8 +586,7 @@
                        }
                }
 
-               eventHelper.getMicroListener(RowSetMicroListener.class,
-                                            
getRow(key)).handleRowSet(columnName, newValue, value);
+               eventHelper.addEventPayload((CyTable)this, new 
RowSetRecord(getRow(key),columnName,newValue, value), RowsSetEvent.class);
        }
 
        synchronized private void unSetX(final Object key, final String 
columnName) {
@@ -609,9 +609,7 @@
                                keyToValueMap.remove(key);
                        }
                }
-
-               eventHelper.getMicroListener(RowSetMicroListener.class,
-                                            
getRow(key)).handleRowSet(columnName, null, null);
+               eventHelper.addEventPayload((CyTable)this, new 
RowSetRecord(getRow(key),columnName,null,null), RowsSetEvent.class);
        }
 
        private void removeFromReverseMap(final String columnName, final Object 
key, final Object value) {
@@ -806,7 +804,7 @@
                                                               
sourceJoinKeyName, targetJoinKeyName));
                }
 
-               eventHelper.fireSynchronousEvent(new ColumnCreatedEvent(this, 
targetName));
+               eventHelper.fireEvent(new ColumnCreatedEvent(this, targetName));
                return targetName;
        }
 

Modified: 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableManagerImpl.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableManagerImpl.java
      2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableManagerImpl.java
      2011-06-21 22:35:13 UTC (rev 25844)
@@ -164,7 +164,7 @@
                return;
        }
 
-       eventHelper.fireSynchronousEvent(new TableAboutToBeDeletedEvent(this, 
table));
+       eventHelper.fireEvent(new TableAboutToBeDeletedEvent(this, table));
 
        synchronized (this) {
            table = (CyTableImpl) tables.get(suid);
@@ -177,7 +177,7 @@
            table.removeAllVirtColumns();
            tables.remove(suid);
        }
-       eventHelper.fireSynchronousEvent(new TableDeletedEvent(this));
+       eventHelper.fireEvent(new TableDeletedEvent(this));
        
        logger.debug("CyTable removed: table ID = " + table.getSUID());
        table = null;

Deleted: 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableRowUpdateServiceImpl.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableRowUpdateServiceImpl.java
     2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/impl/src/main/java/org/cytoscape/model/internal/CyTableRowUpdateServiceImpl.java
     2011-06-21 22:35:13 UTC (rev 25844)
@@ -1,224 +0,0 @@
-package org.cytoscape.model.internal;
-
-
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.model.CyTable;
-import org.cytoscape.model.CyTableRowUpdateService;
-import org.cytoscape.model.CyRow;
-import org.cytoscape.model.events.CyTableRowUpdateMicroListener;
-import org.cytoscape.model.events.CyTableRowUpdateMicroListener.RowSet;
-import org.cytoscape.model.events.RowsAboutToChangeEvent;
-import org.cytoscape.model.events.RowsAboutToChangeListener;
-import org.cytoscape.model.events.RowCreatedMicroListener;
-import org.cytoscape.model.events.RowSetMicroListener;
-import org.cytoscape.model.events.RowsFinishedChangingEvent;
-import org.cytoscape.model.events.RowsFinishedChangingListener;
-import org.cytoscape.service.util.CyServiceRegistrar;
-
-
-class CyTableRowUpdateServiceImpl
-       implements CyTableRowUpdateService, RowsAboutToChangeListener, 
RowsFinishedChangingListener
-{
-       private final CyEventHelper eventHelper;
-       private final CyServiceRegistrar serviceRegistrar;
-       private final Map<CyTable, Set<CyTableRowUpdateMicroListener>> 
tableToListenersMap;
-       private final Map<CyTable, Integer> tableToRefCountMap;
-       private final Map<CyTable, Set<RowSetMicroListenerProxy>> 
tableToProxyListenersMap;
-       private final Map<CyTable, RowCreatedMicroListenerProxy> 
tableToRowCreatedMicroListenerMap;
-       private final Map<CyTable, List<RowSet>> tableToRowSetsMap;
-       private final Map<CyTable, List<CyRow>> tableToNewRowsMap;
-
-       CyTableRowUpdateServiceImpl(final CyEventHelper eventHelper,
-                                   final CyServiceRegistrar serviceRegistrar)
-       {
-               this.eventHelper = eventHelper;
-               this.serviceRegistrar = serviceRegistrar;
-               tableToListenersMap = new HashMap<CyTable, 
Set<CyTableRowUpdateMicroListener>>();
-               tableToRefCountMap = new HashMap<CyTable, Integer>();
-               tableToProxyListenersMap = new HashMap<CyTable, 
Set<RowSetMicroListenerProxy>>();
-               tableToRowCreatedMicroListenerMap = new HashMap<CyTable, 
RowCreatedMicroListenerProxy>();
-               tableToRowSetsMap = new HashMap<CyTable, List<RowSet>>();
-               tableToNewRowsMap = new HashMap<CyTable, List<CyRow>>();
-
-               final Dictionary emptyProps = new Hashtable();
-               serviceRegistrar.registerService(this, 
RowsAboutToChangeListener.class, emptyProps);
-               serviceRegistrar.registerService(this, 
RowsFinishedChangingListener.class, emptyProps);
-       }
-       
-       @Override
-       public synchronized void startTracking(final 
CyTableRowUpdateMicroListener listener,
-                                              final CyTable table)
-       {
-               if (!tableToListenersMap.containsKey(table)) {
-                       tableToRowSetsMap.put(table, new ArrayList<RowSet>());
-                       tableToNewRowsMap.put(table, new ArrayList<CyRow>());
-                       tableToRefCountMap.put(table, new Integer(0));
-                       // Create proxy listeners for each row in the new table:
-                       final List<CyRow> rows = table.getAllRows();
-                       final Set<RowSetMicroListenerProxy> proxies =
-                               new HashSet<RowSetMicroListenerProxy>();
-                       for (final CyRow row : rows)
-                               proxies.add(new RowSetMicroListenerProxy(this, 
eventHelper, table, row));
-                       tableToProxyListenersMap.put(table, proxies);
-
-                       final RowCreatedMicroListenerProxy newProxy =
-                               new RowCreatedMicroListenerProxy(this, table);
-                       tableToRowCreatedMicroListenerMap.put(table, newProxy);
-                       eventHelper.addMicroListener(newProxy, 
RowCreatedMicroListener.class, table);
-                       tableToListenersMap.put(table, new 
HashSet<CyTableRowUpdateMicroListener>());
-               }
-
-               final Set<CyTableRowUpdateMicroListener> listeners = 
tableToListenersMap.get(table);
-               if (listeners.contains(listener))
-                       return;
-
-               eventHelper.addMicroListener(listener, 
CyTableRowUpdateMicroListener.class, this);
-               listeners.add(listener);
-       }
-
-       @Override
-       public synchronized void stopTracking(final 
CyTableRowUpdateMicroListener listener,
-                                             final CyTable table)
-       {
-               final Set<CyTableRowUpdateMicroListener> listeners = 
tableToListenersMap.get(table);
-               if (listeners == null || !listeners.contains(table))
-                       return;
-
-               listeners.remove(listener);
-               if (listeners.isEmpty()) {
-                       final RowCreatedMicroListenerProxy 
creationListenerProxy =
-                               tableToRowCreatedMicroListenerMap.get(table);
-                       tableToRowCreatedMicroListenerMap.remove(table);
-                       eventHelper.removeMicroListener(creationListenerProxy,
-                                                       
RowCreatedMicroListener.class, table);
-                       for (final RowSetMicroListenerProxy proxy : 
tableToProxyListenersMap.get(table))
-                               proxy.cleanup();
-                       tableToProxyListenersMap.remove(table);
-                       tableToListenersMap.remove(table);
-                       tableToRefCountMap.remove(table);
-                       tableToRowSetsMap.remove(table);
-                       tableToNewRowsMap.remove(table);
-               }
-
-               eventHelper.removeMicroListener(listener, 
CyTableRowUpdateMicroListener.class, this);
-       }
-
-       @Override
-       public synchronized void handleEvent(final RowsAboutToChangeEvent e) {
-               final CyTable table = e.getTable();
-               if (!tableToListenersMap.containsKey(table))
-                       return;
-
-               final int newRefCount = tableToRefCountMap.get(table) + 1;
-               tableToRefCountMap.put(table, newRefCount);
-       }
-
-       @Override
-       public synchronized void handleEvent(final RowsFinishedChangingEvent e) 
{
-               final CyTable table = e.getTable();
-               if (!tableToListenersMap.containsKey(table))
-                       return;
-
-               final int newRefCount = tableToRefCountMap.get(table) - 1;
-               if (newRefCount < 0)
-                       throw new IllegalStateException(
-                                       "reference counts should *never* drop 
to zero!"
-                                       + "(Maybe someone fired a 
RowsFinishedChangingEvent w/o "
-                                       + "first firing a 
RowsAboutToChangeEvent?)");
-               tableToRefCountMap.put(table, newRefCount);
-               fireUpdateEvents(table);
-       }
-
-       private void fireUpdateEvents(final CyTable table) {
-               if (tableToRefCountMap.get(table) == 0) {
-                       final List<CyRow> newRows = 
tableToNewRowsMap.get(table);
-                       if (!newRows.isEmpty()) {
-                               for (final CyTableRowUpdateMicroListener 
listener
-                                            : tableToListenersMap.get(table))
-                                       listener.handleRowCreations(table, 
newRows);
-                               newRows.clear();
-                       }
-
-                       final List<RowSet> rowSets = 
tableToRowSetsMap.get(table);
-                       if (!rowSets.isEmpty()) {
-                               for (final CyTableRowUpdateMicroListener 
listener
-                                            : tableToListenersMap.get(table))
-                                       listener.handleRowSets(table, rowSets);
-                               rowSets.clear();
-                       }
-               }
-       }
-
-       private synchronized void rowUpdated(final CyTable table, final CyRow 
row, String columnName,
-                                            final Object newValue, final 
Object newRawValue)
-       {
-               final List<RowSet> rowSets = tableToRowSetsMap.get(table);
-               rowSets.add(new RowSet(row, columnName, newValue, newRawValue));
-               fireUpdateEvents(table);
-       }
-
-       private synchronized void rowCreated(final CyTable table, final CyRow 
row) {
-               final Set<RowSetMicroListenerProxy> proxies = 
tableToProxyListenersMap.get(table);
-               proxies.add(new RowSetMicroListenerProxy(this, eventHelper, 
table, row));
-
-               final List<CyRow> newRows = tableToNewRowsMap.get(table);
-               newRows.add(row);
-               fireUpdateEvents(table);
-       }
-
-       private static final class RowSetMicroListenerProxy implements 
RowSetMicroListener {
-               private final CyTableRowUpdateServiceImpl changeTracker;
-               private final CyEventHelper eventHelper;
-               private final CyTable table;
-               private final CyRow row;
-
-               RowSetMicroListenerProxy(final CyTableRowUpdateServiceImpl 
changeTracker,
-                                        final CyEventHelper eventHelper, final 
CyTable table,
-                                        final CyRow row)
-               {
-                       this.changeTracker = changeTracker;
-                       this.eventHelper   = eventHelper;
-                       this.table         = table;
-                       this.row           = row;
-
-                       eventHelper.addMicroListener(this, 
RowSetMicroListener.class, row);
-               }
-
-               @Override
-               public void handleRowSet(final String columnName, final Object 
newValue,
-                                        final Object newRawValue)
-               {
-                       changeTracker.rowUpdated(table, row, columnName, 
newValue, newRawValue);
-               }
-
-               void cleanup() {
-                       eventHelper.removeMicroListener(this, 
RowSetMicroListener.class, row);
-               }
-       }
-
-       private static final class RowCreatedMicroListenerProxy implements 
RowCreatedMicroListener {
-               private final CyTableRowUpdateServiceImpl 
tableRowUpdateServiceImpl;
-               private final CyTable table;
-
-               RowCreatedMicroListenerProxy(final CyTableRowUpdateServiceImpl 
tableRowUpdateServiceImpl,
-                                            final CyTable table)
-               {
-                       this.tableRowUpdateServiceImpl = 
tableRowUpdateServiceImpl;
-                       this.table                     = table;
-               }
-
-               @Override
-               public void handleRowCreated(final Object primaryKey) {
-                       tableRowUpdateServiceImpl.rowCreated(table, 
table.getRow(primaryKey));
-               }
-       }
-}

Modified: 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context-osgi.xml
      2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context-osgi.xml
      2011-06-21 22:35:13 UTC (rev 25844)
@@ -10,8 +10,6 @@
                interface="org.cytoscape.event.CyEventHelper" />
        <osgi:reference id="InterpreterRef"
                interface="org.cytoscape.equations.Interpreter" />
-        <osgi:reference id="cyServiceRegistrarServiceRef"
-               interface="org.cytoscape.service.util.CyServiceRegistrar" />
 
        <!-- Individual Service -->
        <osgi:service id="cyNetworkFactoryService"
@@ -38,7 +36,4 @@
                ref="cyNetworkManager" 
interface="org.cytoscape.model.CyNetworkManager">
        </osgi:service>
 
-       <osgi:service id="cyTableRowUpdateService"
-               ref="tableRowUpdateService" 
interface="org.cytoscape.model.CyTableRowUpdateService">
-       </osgi:service>
 </beans>

Modified: 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context.xml
   2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/impl/src/main/resources/META-INF/spring/bundle-context.xml
   2011-06-21 22:35:13 UTC (rev 25844)
@@ -37,8 +37,4 @@
 
        <bean id="cyRootNetworkFactory" 
class="org.cytoscape.model.internal.CyRootNetworkFactoryImpl"/>
 
-       <bean id="tableRowUpdateService" 
class="org.cytoscape.model.internal.CyTableRowUpdateServiceImpl">
-               <constructor-arg ref="cyEventHelperServiceRef" />
-               <constructor-arg ref="cyServiceRegistrarServiceRef" />
-       </bean>
 </beans>

Modified: 
core3/model-impl/trunk/impl/src/test/java/org/cytoscape/model/CyTableTest.java
===================================================================
--- 
core3/model-impl/trunk/impl/src/test/java/org/cytoscape/model/CyTableTest.java  
    2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/impl/src/test/java/org/cytoscape/model/CyTableTest.java  
    2011-06-21 22:35:13 UTC (rev 25844)
@@ -39,12 +39,10 @@
 import org.cytoscape.equations.internal.EquationCompilerImpl;
 import org.cytoscape.equations.internal.EquationParserImpl;
 import org.cytoscape.equations.internal.interpreter.InterpreterImpl;
-import org.cytoscape.event.CyEvent;
-import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.event.CyMicroListener;
 import org.cytoscape.event.DummyCyEventHelper;
 import org.cytoscape.model.CyTable.SavePolicy;
 import org.cytoscape.model.internal.CyTableImpl;
+import org.cytoscape.model.events.RowSetRecord;
 
 import static org.junit.Assert.*;
 import org.junit.After;
@@ -128,7 +126,9 @@
                compiler.compile("=\"one\"", new HashMap<String, Class<?>>());
                final Equation eqn = compiler.getEquation();
                attrs.set("strings", eqn);
-                
assertTrue(eventHelper.getCalledMicroListeners().contains("handleRowSet"));
+               Object last = eventHelper.getLastPayload();
+               assertNotNull(last);
+               assertTrue(last instanceof RowSetRecord);
        }
 
        @Test
@@ -139,7 +139,9 @@
                compiler.compile("=$a&\"one\"", varnameToTypeMap);
                final Equation eqn = compiler.getEquation();
                attrs.set("strings", eqn);
-                
assertTrue(eventHelper.getCalledMicroListeners().contains("handleRowSet"));
+               Object last = eventHelper.getLastPayload();
+               assertNotNull(last);
+               assertTrue(last instanceof RowSetRecord);
        }
 
        @Test
@@ -178,7 +180,9 @@
                varnameToTypeMap.put("a", Double.class);
                compiler.compile("=$a+20", varnameToTypeMap);
                attrs.set("b", compiler.getEquation());
-                
assertTrue(eventHelper.getCalledMicroListeners().contains("handleRowSet"));
+               Object last = eventHelper.getLastPayload();
+               assertNotNull(last);
+               assertTrue(last instanceof RowSetRecord);
 
                assertEquals(attrs.get("b", Double.class), 30.0, 0.00001);
        }

Modified: 
core3/model-impl/trunk/it/src/test/java/org/cytoscape/model/ServiceConfigurationTest.java
===================================================================
--- 
core3/model-impl/trunk/it/src/test/java/org/cytoscape/model/ServiceConfigurationTest.java
   2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/it/src/test/java/org/cytoscape/model/ServiceConfigurationTest.java
   2011-06-21 22:35:13 UTC (rev 25844)
@@ -1,17 +1,14 @@
 package org.cytoscape.model; 
 
-import static org.junit.Assert.*;
 import org.junit.Test;
 import org.junit.Before;
 import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.junit.Configuration;
 import org.ops4j.pax.exam.junit.MavenConfiguredJUnit4TestRunner;
 
 import org.cytoscape.model.subnetwork.CyRootNetworkFactory;
 import org.cytoscape.integration.ServiceTestSupport;
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.equations.Interpreter;
-import org.cytoscape.service.util.CyServiceRegistrar;
 
 @RunWith(MavenConfiguredJUnit4TestRunner.class)
 public class ServiceConfigurationTest extends ServiceTestSupport {
@@ -20,7 +17,6 @@
        public void setup() {
                registerMockService(CyEventHelper.class);
                registerMockService(Interpreter.class);
-               registerMockService(CyServiceRegistrar.class);
        }
 
        @Test

Modified: 
core3/model-impl/trunk/performance/src/test/java/org/cytoscape/model/ServiceConfigurationTest.java
===================================================================
--- 
core3/model-impl/trunk/performance/src/test/java/org/cytoscape/model/ServiceConfigurationTest.java
  2011-06-21 22:33:52 UTC (rev 25843)
+++ 
core3/model-impl/trunk/performance/src/test/java/org/cytoscape/model/ServiceConfigurationTest.java
  2011-06-21 22:35:13 UTC (rev 25844)
@@ -20,8 +20,6 @@
 import org.cytoscape.model.CyNetworkFactory;
 import org.cytoscape.model.CyNode;
 import org.cytoscape.model.CyTable;
-import org.cytoscape.model.events.RowCreatedMicroListener;
-import org.cytoscape.model.events.RowSetMicroListener;
 import org.cytoscape.service.util.CyServiceRegistrar;
 
 import java.util.ArrayList;

Modified: core3/model-impl/trunk/pom.xml
===================================================================
--- core3/model-impl/trunk/pom.xml      2011-06-21 22:33:52 UTC (rev 25843)
+++ core3/model-impl/trunk/pom.xml      2011-06-21 22:35:13 UTC (rev 25844)
@@ -15,7 +15,9 @@
        <modules>
                <module>impl</module>
                <module>it</module>
-               <module>performance</module>
+               <!--            
+               <module>performance</module> 
+                -->
        </modules>
 
        <scm>

-- 
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