View Javadoc

1   /*
2       Jameleon - An automation testing tool..
3       Copyright (C) 2005 Christian W. Hargraves (engrean@hotmail.com)
4       
5       This library is free software; you can redistribute it and/or
6       modify it under the terms of the GNU Lesser General Public
7       License as published by the Free Software Foundation; either
8       version 2.1 of the License, or (at your option) any later version.
9   
10      This library is distributed in the hope that it will be useful,
11      but WITHOUT ANY WARRANTY; without even the implied warranty of
12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13      Lesser General Public License for more details.
14  
15      You should have received a copy of the GNU Lesser General Public
16      License along with this library; if not, write to the Free Software
17      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111AssertLevel.NO_FUNCTION07 USA
18  */
19  package net.sf.jameleon.event;
20  
21  import net.sf.jameleon.TestCaseTag;
22  
23  import java.util.Collections;
24  import java.util.Iterator;
25  import java.util.LinkedList;
26  import java.util.List;
27  
28  public class TestCaseEventHandler{
29  
30      private static TestCaseEventHandler eventHandler;
31      private final List testCaseListeners = Collections.synchronizedList(new LinkedList());
32  
33      private TestCaseEventHandler(){}
34  
35      public static TestCaseEventHandler getInstance(){
36          if (eventHandler == null) {
37              eventHandler = new TestCaseEventHandler();
38          }
39          return eventHandler;
40      }
41  
42      public void clearInstance(){
43          eventHandler = null;
44      }
45  
46      public void addTestCaseListener(TestCaseListener tcl){
47          if (tcl != null && !testCaseListeners.contains(tcl)){
48              testCaseListeners.add(tcl);
49          }
50      }
51  
52      public List getTestCaseListeners(){
53          return testCaseListeners;
54      }
55  
56      public void removeTestCaseListener(TestCaseListener tcl){
57          testCaseListeners.remove(tcl);
58      }
59  
60      public void beginTestCase(TestCaseTag tct){
61          TestCaseEvent tce = new TestCaseEvent(tct);
62          synchronized(testCaseListeners){
63              Iterator it = testCaseListeners.iterator();
64              TestCaseListener tcl;
65              while (it.hasNext()) {
66                  tcl = (TestCaseListener)it.next();
67                  tcl.beginTestCase(tce);
68              }
69          }
70      }
71  
72      public void endTestCase(TestCaseTag tct){
73          TestCaseEvent tce = new TestCaseEvent(tct);
74          synchronized(testCaseListeners){
75              Iterator it = testCaseListeners.iterator();
76              TestCaseListener tcl;
77              while (it.hasNext()) {
78                  tcl = (TestCaseListener)it.next();
79                  tcl.endTestCase(tce);
80              }
81          }
82      }
83  
84  }