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
19package org.apache.harmony.jpda.tests.jdwp.ClassType;
20
21import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
22import org.apache.harmony.jpda.tests.share.SyncDebuggee;
23
24public class NewInstanceTagDebuggee extends SyncDebuggee {
25    static class MyObject extends Object {
26    }
27
28    static class MyClassLoader extends ClassLoader {
29    }
30
31    static class MyThread extends Thread {
32    }
33
34    static class MyThreadGroup extends ThreadGroup {
35        public MyThreadGroup() {
36            super("test");
37        }
38    }
39
40    @Override
41    public void run() {
42        // Preload tested subclasses.
43        new MyObject();
44        new MyClassLoader();
45        new MyThread();
46        new MyThreadGroup();
47
48        logWriter.println("NewInstanceTagDebuggee starts");
49
50        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
51        // ... Let debugger prepare breakpoint request ...
52        synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
53
54        // Suspend the debuggee on breakpoint so the test can send ClassType.NewInstance command.
55        breakpointMethod();
56
57        logWriter.println("NewInstanceTagDebuggee ends");
58    }
59
60    void breakpointMethod() {
61        logWriter.println("NewInstanceTagDebuggee.breakpointMethod()");
62    }
63
64    public static void main(String[] args) {
65        runDebuggee(NewInstanceTagDebuggee.class);
66    }
67}
68