Author: mes
Date: 2011-09-28 11:26:46 -0700 (Wed, 28 Sep 2011)
New Revision: 27015
Modified:
core3/impl/trunk/event-impl/impl/src/main/java/org/cytoscape/event/internal/CyListenerAdapter.java
Log:
committed questionable event trace output generation
Modified:
core3/impl/trunk/event-impl/impl/src/main/java/org/cytoscape/event/internal/CyListenerAdapter.java
===================================================================
---
core3/impl/trunk/event-impl/impl/src/main/java/org/cytoscape/event/internal/CyListenerAdapter.java
2011-09-28 18:03:58 UTC (rev 27014)
+++
core3/impl/trunk/event-impl/impl/src/main/java/org/cytoscape/event/internal/CyListenerAdapter.java
2011-09-28 18:26:46 UTC (rev 27015)
@@ -55,6 +55,9 @@
private final Map<Class<?>,ServiceTracker> serviceTrackers;
private final BundleContext bc;
private final Set<Object> silencedSources;
+ private final StringBuilder traceString;
+ private final boolean printEventTrace;
+ private int fireCount;
/**
* Creates a new CyListenerAdapter object.
@@ -65,6 +68,11 @@
this.bc = bc;
serviceTrackers = new HashMap<Class<?>,ServiceTracker>();
silencedSources = new HashSet<Object>();
+
+ // used only for printing a coherent event trace
+ fireCount = 0;
+ traceString = new StringBuilder();
+ printEventTrace = Boolean.parseBoolean(
(String)(System.getProperty("printEventTrace","false")) );
}
/**
@@ -86,8 +94,15 @@
final Object[] listeners = getListeners(listenerClass);
if ( listeners == null )
return;
-
+
+
Object lastListener = null;
+ long begin = 0;
+
+ if ( printEventTrace ) {
+ fireCount++;
+ printTrace(fireCount,"EVENT START: " +
event.getClass().getName());
+ }
try {
final Method method =
listenerClass.getMethod("handleEvent", event.getClass());
@@ -98,7 +113,17 @@
if ( logger.isDebugEnabled() )
logger.debug("event: " +
event.getClass().getName() + " listener: " + listener.getClass().getName());
+ if ( printEventTrace ) {
+ printTrace(fireCount,"listener: " +
listener.getClass().getName());
+ begin = System.currentTimeMillis();
+ }
+
method.invoke(listenerClass.cast(listener),
event);
+
+ if ( printEventTrace ) {
+ final long end =
System.currentTimeMillis();
+ printTrace(fireCount,"listener: " +
listener.getClass().getName() + " duration: " + (end - begin));
+ }
}
} catch (NoSuchMethodException e) {
logger.error("Listener doesn't implement
\"handleEvent\" method: "
@@ -111,6 +136,11 @@
logger.error("Listener can't execute \"handleEvent\"
method: "
+ listenerClass.getName(), e);
}
+
+ if ( printEventTrace ) {
+ printTrace(fireCount,"EVENT END : " +
event.getClass().getName());
+ fireCount--;
+ }
}
private Object[] getListeners(Class<?> listenerClass) {
@@ -138,4 +168,11 @@
silencedSources.remove(eventSource);
}
+ private void printTrace(int indent, String message) {
+ traceString.delete(0,traceString.length());
+ for (int i = 0; i < indent; i++ )
+ traceString.append(" ");
+ traceString.append(message);
+ System.out.println( traceString.toString() );
+ }
}
--
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.