(no commit message)
[utils] / support / general / src / test / java / org / wamblee / test / EventTracker.java
index fce6b23f080ca7694f24a022dac9d70b7790feb3..8cbd4ace333a0f403fdffbfbb74fa7f044247b67 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006 the original author or authors.
+ * Copyright 2005-2010 the original author or authors.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,9 +20,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.util.logging.Logger;
 
 /**
  * Tracks the occurence of certain events in a test environment. Threads in a
@@ -37,24 +35,28 @@ import org.apache.commons.logging.LogFactory;
  *            Type of event sent from test code. Usually String will be
  *            sufficient. The event type must provide a sensible implementation
  *            of {@link java.lang.Object#equals(java.lang.Object)}.
- *
+ * 
  * @author Erik Brakkee
  */
 public class EventTracker<Event> {
-
-    private static final Log LOG = LogFactory.getLog(EventTracker.class);
+    private static final Logger LOG = Logger.getLogger(EventTracker.class
+        .getName());
 
     /**
      * Map of Thread object to a list of events.
      */
-    private Map<Thread, List<Event>> _events;
+    private Map<Thread, List<Event>> events;
 
     /**
      * Constructs the event tracker.
      * 
      */
     public EventTracker() {
-        _events = new HashMap<Thread, List<Event>>();
+        clear();
+    }
+
+    public synchronized void clear() {
+        events = new HashMap<Thread, List<Event>>();
     }
 
     /**
@@ -65,13 +67,16 @@ public class EventTracker<Event> {
      */
     public synchronized void eventOccurred(Event aEvent) {
         LOG.info("Event '" + aEvent + "' sent.");
+
         Thread current = Thread.currentThread();
-        List<Event> events = _events.get(current);
-        if (events == null) {
-            events = new ArrayList<Event>();
-            _events.put(current, events);
+        List<Event> eventList = events.get(current);
+
+        if (eventList == null) {
+            eventList = new ArrayList<Event>();
+            events.put(current, eventList);
         }
-        events.add(aEvent);
+
+        eventList.add(aEvent);
     }
 
     /**
@@ -84,11 +89,13 @@ public class EventTracker<Event> {
      * @return Whether or not the event was sent.
      */
     public synchronized boolean isEventSent(Thread aThread, Event aEvent) {
-        List<Event> events = _events.get(aThread);
-        if (events == null) {
+        List<Event> eventList = events.get(aThread);
+
+        if (eventList == null) {
             return false;
         }
-        return events.contains(aEvent);
+
+        return eventList.contains(aEvent);
     }
 
     /**
@@ -100,16 +107,17 @@ public class EventTracker<Event> {
      *         events were sent.
      */
     public synchronized List<Event> getEvents(Thread aThread) {
-        List<Event> events = _events.get(aThread);
-        if (events == null) {
-            events = Collections.emptyList();
+        List<Event> eventList = events.get(aThread);
+
+        if (eventList == null) {
+            eventList = Collections.emptyList();
         }
-        return Collections.unmodifiableList(events);
+
+        return Collections.unmodifiableList(eventList);
     }
 
     /**
-     * Gets the number of times an event was sent summed up
-     * over all threads. 
+     * Gets the number of times an event was sent summed up over all threads.
      * 
      * @param aEvent
      *            Event to check.
@@ -117,14 +125,32 @@ public class EventTracker<Event> {
      */
     public synchronized int getEventCount(Event aEvent) {
         int count = 0;
-        for (Thread thread : _events.keySet()) {
-            List<Event> events = _events.get(thread);
-            for (Event event : events) {
+
+        for (Thread thread : events.keySet()) {
+            List<Event> eventList = events.get(thread);
+
+            for (Event event : eventList) {
                 if (event.equals(aEvent)) {
                     count++;
                 }
             }
         }
+
+        return count;
+    }
+
+    /**
+     * Gets the total event count over all threads.
+     * 
+     * @return
+     */
+    public synchronized int getEventCount() {
+        int count = 0;
+
+        for (Thread thread : events.keySet()) {
+            count += events.get(thread).size();
+        }
+
         return count;
     }
 }