Home | History | Annotate | Download | only in framework
      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  */
     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 }
     92