01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: *
15: * See the License for the specific language governing permissions and
16: * limitations under the License.
17: */
18:
19: /**
20: * @author Vitaly A. Provodin
21: * @version $Revision: 1.4 $
22: */
23:
24: /**
25: * Created on 04.02.2005
26: */package org.apache.harmony.jpda.tests.framework;
27:
28: import java.util.Iterator;
29: import java.util.LinkedList;
30: import java.util.List;
31:
32: /**
33: * This class defines an interface to keep an information about all started
34: * debuggees.
35: * <p>
36: * As a rule JPDA tests consist of two parts: the test that represents a
37: * part of the debugger-side application and the debuggee part. It is a good
38: * practice if the JPDA tests control debuggee's lifecycle (usually via JDWP
39: * channel), but in some cases it can not be done, for example because of
40: * product bugs.
41: * <p>
42: * This class is aimed to be an additional facility to stop each debuggee
43: * activity if it can not be done by the test in the regular way via JDWP
44: * channel.
45: */
46: public class DebuggeeRegister {
47:
48: LinkedList<DebuggeeWrapper> registered = new LinkedList<DebuggeeWrapper>();
49:
50: /**
51: * Registers started debuggee.
52: *
53: * @param debuggee <code>DebuggeeWrapper</code> of the new started
54: * debuggee to register
55: */
56: public void register(DebuggeeWrapper debuggee) {
57: registered.add(debuggee);
58: }
59:
60: /**
61: * Unregisters specified debuggee.
62: *
63: * @param debuggee <code>DebuggeeWrapper</code> of the debuggee to unregister
64: * returns true if debuggee was registered
65: */
66: public boolean unregister(DebuggeeWrapper debuggee) {
67: return registered.remove(debuggee);
68: }
69:
70: /**
71: * Returns list of all registered DebuggeeWrappers.
72: *
73: * @return array of DebuggeeWrappers
74: */
75: public List getAllRegistered() {
76: return registered;
77: }
78:
79: /**
80: * Stops each of registered DebuggeeWrappers by invoking DebuggeeWrapper.stop().
81: */
82: public void stopAllRegistered() {
83: for (Iterator iter = registered.iterator(); iter.hasNext();) {
84: DebuggeeWrapper wrapper = (DebuggeeWrapper) iter.next();
85: if (wrapper != null) {
86: wrapper.stop();
87: }
88: }
89: registered.clear();
90: }
91: }
|