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.

Reply via email to