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.5 $
22: */
23:
24: /**
25: * Created on 31.01.2005
26: */package org.apache.harmony.jpda.tests.share;
27:
28: import org.apache.harmony.jpda.tests.framework.LogWriter;
29: import org.apache.harmony.jpda.tests.framework.TestErrorException;
30:
31: /**
32: * All debuggee of unit tests must extend this class
33: */
34: public abstract class Debuggee {
35:
36: /**
37: * Instance of LogWriter implementation.
38: */
39: public LogWriter logWriter;
40:
41: /**
42: * Instance of JPDA options used in all JPDA/JDWP tests.
43: */
44: public JPDATestOptions settings;
45:
46: /**
47: * Executes main actions of debuggee. This method must be implemented by
48: * subclasses.
49: */
50: public abstract void run();
51:
52: /**
53: * Initializes debuggee
54: */
55: public void onStart() {
56: settings = new JPDATestOptions();
57: logWriter = new JPDALogWriter(System.out, null, settings
58: .isVerbose());
59: }
60:
61: /**
62: * Executes final stage of debuggee.
63: */
64: public void onFinish() {
65: }
66:
67: /**
68: * Starts debuggee specified by <code>debuggeeClass</code>.
69: *
70: * @param debuggeeClass
71: * debuggee's class
72: */
73: public static void runDebuggee(Class debuggeeClass) {
74: Debuggee debuggee = null;
75: try {
76: debuggee = (Debuggee) debuggeeClass.newInstance();
77: } catch (Exception e) {
78: throw new TestErrorException(
79: "Debuggee can not be started: "
80: + debuggeeClass.getName(), e);
81: }
82:
83: debuggee.onStart();
84:
85: try {
86: debuggee.run();
87: } catch (Throwable e) {
88: debuggee.logWriter.printError(e);
89: } finally {
90: debuggee.onFinish();
91: }
92: }
93: }
|