1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * 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 */ 22 23/** 24 * Created on 04.02.2005 25 */ 26package org.apache.harmony.jpda.tests.framework; 27 28import java.util.Iterator; 29import java.util.LinkedList; 30import 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 */ 46public 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} 92