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.