15f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/*
25f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
35f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * contributor license agreements.  See the NOTICE file distributed with
45f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * this work for additional information regarding copyright ownership.
55f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
65f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * (the "License"); you may not use this file except in compliance with
75f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the License.  You may obtain a copy of the License at
85f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *
95f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *
115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *  Unless required by applicable law or agreed to in writing, software
125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *
155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *  See the License for the specific language governing permissions and
165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes *  limitations under the License.
175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/**
205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @author Anton V. Karnachuk
215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/**
245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Created on 17.03.2005
255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespackage org.apache.harmony.jpda.tests.framework.jdwp;
275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.TestErrorException;
295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/**
315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This class represent parsed EventPacket with received event set data.
325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespublic class ParsedEvent {
345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    private byte suspendPolicy;
365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    private int requestID;
385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    private byte eventKind;
405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * Create new instance with specified data.
435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    protected ParsedEvent(byte suspendPolicy, Packet packet, byte eventKind) {
455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        this.suspendPolicy = suspendPolicy;
465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        this.requestID = packet.getNextValueAsInt();
475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        this.eventKind = eventKind;
485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * Returns RequestID of this event set.
525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     *
535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * @return RequestID of this event set
545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public int getRequestID() {
565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        return requestID;
575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * Returns suspend policy of this event set.
615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     *
625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * @return suspend policy of this event set
635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public byte getSuspendPolicy() {
655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        return suspendPolicy;
665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * @return Returns the eventKind.
705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public byte getEventKind() {
725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        return eventKind;
735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class extends ParsedEvent by associating it with a thread.
775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static class EventThread extends ParsedEvent {
795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private long threadID;
815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        protected EventThread(byte suspendPolicy, Packet packet, byte eventKind) {
895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, eventKind);
905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            this.threadID = packet.getNextValueAsThreadID();
915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the thread id.
955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public long getThreadID() {
975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return threadID;
985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
1005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
1025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class extends EventThread by associating it with a location.
1035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
1043df0c797781000302737ead55196b6e110d8db9cSebastien Hertz    public static class EventThreadLocation extends EventThread {
1055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Location location;
1075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
1095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
1105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
1115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
1125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
1135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
1145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        protected EventThreadLocation(byte suspendPolicy, Packet packet,
1155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                byte eventKind) {
1165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, eventKind);
1175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            this.location = packet.getNextValueAsLocation();
1185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
1215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the location.
1225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
1235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public Location getLocation() {
1245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return location;
1255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
1275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
1295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class extends EventThread by associating it with monitor object and location.
1305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
1315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    private static class EventThreadMonitor extends EventThread {
1325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private TaggedObject taggedObject;
1345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Location location;
1355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
1375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
1385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
1395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
1405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
1415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
1425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        protected EventThreadMonitor(byte suspendPolicy, Packet packet,
1435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                byte eventKind) {
1445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, eventKind);
1455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            this.taggedObject = packet.getNextValueAsTaggedObject();
1465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            this.location = packet.getNextValueAsLocation();
1475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
1505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the location.
1515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
1525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public Location getLocation() {
1535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return location;
1545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
1575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the taggedObject.
1585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
1595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public TaggedObject getTaggedObject() {
1605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return taggedObject;
1615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
1635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
1655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP VM_START event.
1665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
1675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_VM_START extends EventThread {
1685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
1705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
1715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
1725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
1735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
1745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
1755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_VM_START(byte suspendPolicy, Packet packet) {
1765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.VM_START);
1775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    };
1795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
1815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP SINGLE_STEP event.
1825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
1835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_SINGLE_STEP extends EventThreadLocation {
1845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
1865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
1875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
1885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
1895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
1905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
1915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_SINGLE_STEP(byte suspendPolicy, Packet packet) {
1925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.SINGLE_STEP);
1935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
1955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
1975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP BREAKPOINT event.
1985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
1995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_BREAKPOINT extends EventThreadLocation {
2005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
2025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
2035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
2045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
2055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
2065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
2075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_BREAKPOINT(byte suspendPolicy, Packet packet) {
2085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.BREAKPOINT);
2095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
2105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
2115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
2135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP METHOD_ENTRY event.
2145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
2155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_METHOD_ENTRY extends EventThreadLocation {
2165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
2185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
2195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
2205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
2215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
2225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
2235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_METHOD_ENTRY(byte suspendPolicy, Packet packet) {
2245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.METHOD_ENTRY);
2255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
2265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
2275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
2295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP METHOD_EXIT event.
2305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
2315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_METHOD_EXIT extends EventThreadLocation {
2325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
2345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
2355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
2365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
2375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
2385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
2395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_METHOD_EXIT(byte suspendPolicy, Packet packet) {
2405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.METHOD_EXIT);
2415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
2425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
2435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
2455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP METHOD_EXIT_WITH_RETURN_VALUE event.
2465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
2475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_METHOD_EXIT_WITH_RETURN_VALUE extends EventThreadLocation {
2485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Value returnValue;
2505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
2525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
2535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
2545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
2555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
2565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
2575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_METHOD_EXIT_WITH_RETURN_VALUE(byte suspendPolicy, Packet packet) {
2585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.METHOD_EXIT_WITH_RETURN_VALUE);
2595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            returnValue = packet.getNextValueAsValue();
2605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
2615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public Value getReturnValue(){
2635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes			return returnValue;
2645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
2655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
2665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
2685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP MONITOR_CONTENDED_ENTER event.
2695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
2705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_MONITOR_CONTENDED_ENTER extends EventThreadMonitor {
2715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
2735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
2745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
2755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
2765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
2775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
2785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_MONITOR_CONTENDED_ENTER(byte suspendPolicy, Packet packet) {
2795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.MONITOR_CONTENDED_ENTER);
2805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
2815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
2835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
2855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP MONITOR_CONTENDED_ENTERED event.
2865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
2875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_MONITOR_CONTENDED_ENTERED extends EventThreadMonitor {
2885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
2905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
2915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
2925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
2935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
2945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
2955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_MONITOR_CONTENDED_ENTERED(byte suspendPolicy, Packet packet) {
2965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.MONITOR_CONTENDED_ENTERED);
2975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
2985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
3005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
3025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP METHOD_EXIT_WITH_RETURN_VALUE event.
3035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
3045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_MONITOR_WAIT extends EventThreadMonitor {
3055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private long timeout;
3075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
3095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
3105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
3115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
3125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
3135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
3145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_MONITOR_WAIT(byte suspendPolicy, Packet packet) {
3155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.MONITOR_WAIT);
3165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            this.timeout = packet.getNextValueAsLong();
3175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
3185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public long getTimeout(){
3205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return timeout;
3215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
3225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
3235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
3255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP METHOD_EXIT_WITH_RETURN_VALUE event.
3265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
3275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_MONITOR_WAITED extends EventThreadMonitor {
3285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private boolean timed_out;
3305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
3325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
3335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
3345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
3355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
3365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
3375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_MONITOR_WAITED(byte suspendPolicy, Packet packet) {
3385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.MONITOR_WAITED);
3395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            this.timed_out = packet.getNextValueAsBoolean();
3405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
3415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public boolean getTimedout(){
3435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return timed_out;
3445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
3455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
3465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
3485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP EXCEPTION event.
3495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
3505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_EXCEPTION extends EventThreadLocation {
3515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private TaggedObject exception;
3535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Location catchLocation;
3555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
3575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
3585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
3595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
3605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
3615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
3625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_EXCEPTION(byte suspendPolicy, Packet packet) {
3635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.EXCEPTION);
3645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            exception = packet.getNextValueAsTaggedObject();
3655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            catchLocation = packet.getNextValueAsLocation();
3665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
3675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
3695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the location of the caught exception.
3705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
3715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public Location getCatchLocation() {
3725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return catchLocation;
3735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
3745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
3765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the exception.
3775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
3785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public TaggedObject getException() {
3795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return exception;
3805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
3815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
3825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
3845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP THREAD_START event.
3855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
3865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_THREAD_START extends EventThread {
3875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
3895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
3905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
3915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
3925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
3935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
3945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_THREAD_START(byte suspendPolicy, Packet packet) {
3955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.THREAD_START);
3965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
3975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    };
3985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
3995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
4005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP THREAD_DEATH event.
4015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
4025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_THREAD_DEATH extends EventThread {
4035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
4055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
4065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
4075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
4085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
4095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
4105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_THREAD_DEATH(byte suspendPolicy, Packet packet) {
4115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.THREAD_DEATH);
4125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
4135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    };
4145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
4165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP CLASS_PREPARE event.
4175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
4185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_CLASS_PREPARE extends EventThread {
4195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private byte refTypeTag;
4215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private long typeID;
4235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private String signature;
4255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private int status;
4275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
4295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
4305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
4315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
4325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
4335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
4345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        protected Event_CLASS_PREPARE(byte suspendPolicy, Packet packet) {
4355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.CLASS_PREPARE);
4365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            refTypeTag = packet.getNextValueAsByte();
4375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            typeID = packet.getNextValueAsReferenceTypeID();
4385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            signature = packet.getNextValueAsString();
4395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            status = packet.getNextValueAsInt();
4405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
4415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
4435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the refTypeTag.
4445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
4455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public byte getRefTypeTag() {
4465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return refTypeTag;
4475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
4485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
4505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the signature.
4515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
4525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public String getSignature() {
4535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return signature;
4545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
4555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
4575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the status.
4585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
4595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public int getStatus() {
4605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return status;
4615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
4625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
4645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the typeID.
4655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
4665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public long getTypeID() {
4675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return typeID;
4685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
4695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    };
4705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
4725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP CLASS_UNLOAD event.
4735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
4745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_CLASS_UNLOAD extends ParsedEvent {
4755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private String signature;
4775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
4795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
4805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
4815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
4825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
4835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
4845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_CLASS_UNLOAD(byte suspendPolicy, Packet packet) {
4855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.CLASS_UNLOAD);
4865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            signature = packet.getNextValueAsString();
4875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
4885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
4905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the signature.
4915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
4925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public String getSignature() {
4935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return signature;
4945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
4955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    };
4965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
4975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
4985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP FIELD_ACCESS event.
4995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
5005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_FIELD_ACCESS extends EventThreadLocation {
5015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private byte refTypeTag;
5035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private long typeID;
5055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private long fieldID;
5075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private TaggedObject object;
5095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
5115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
5125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         *
5135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
5145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
5155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
5165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_FIELD_ACCESS(byte suspendPolicy, Packet packet) {
5175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.FIELD_ACCESS);
5185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            refTypeTag = packet.getNextValueAsByte();
5195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            typeID = packet.getNextValueAsReferenceTypeID();
5205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            fieldID = packet.getNextValueAsFieldID();
5215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            object = packet.getNextValueAsTaggedObject();
5225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
5235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
5255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the fieldID.
5265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
5275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public long getFieldID() {
5285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return fieldID;
5295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
5305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
5325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the object.
5335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
5345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public TaggedObject getObject() {
5355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return object;
5365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
5375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
5395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the refTypeTag.
5405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
5415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public byte getRefTypeTag() {
5425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return refTypeTag;
5435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
5445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
5465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the typeID.
5475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
5485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public long getTypeID() {
5495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return typeID;
5505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
5515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    };
5525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
5545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP FIELD_MODIFICATION event.
5555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
5565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_FIELD_MODIFICATION extends
5575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            EventThreadLocation {
5585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private byte refTypeTag;
5595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private long typeID;
5615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private long fieldID;
5635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private TaggedObject object;
5655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Value valueToBe;
5675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
5695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
5705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
5715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
5725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
5735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_FIELD_MODIFICATION(byte suspendPolicy, Packet packet) {
5745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet,
5755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                    JDWPConstants.EventKind.FIELD_MODIFICATION);
5765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            refTypeTag = packet.getNextValueAsByte();
5775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            typeID = packet.getNextValueAsReferenceTypeID();
5785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            fieldID = packet.getNextValueAsFieldID();
5795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            object = packet.getNextValueAsTaggedObject();
5805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            valueToBe = packet.getNextValueAsValue();
5815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
5825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
5845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the fieldID.
5855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
5865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public long getFieldID() {
5875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return fieldID;
5885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
5895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
5915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the object.
5925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
5935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public TaggedObject getObject() {
5945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return object;
5955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
5965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
5975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
5985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the refTypeTag.
5995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
6005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public byte getRefTypeTag() {
6015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return refTypeTag;
6025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
6035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
6045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
6055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the typeID.
6065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
6075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public long getTypeID() {
6085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return typeID;
6095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
6105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
6115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
6125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @return Returns the valueToBe.
6135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
6145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        public Value getValueToBe() {
6155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            return valueToBe;
6165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
6175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    };
6185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
6195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
6205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * The class implements JDWP VM_DEATH event.
6215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
6225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static final class Event_VM_DEATH extends ParsedEvent {
6235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        /**
6245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * A constructor.
6255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param suspendPolicy
6265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         * @param packet
6275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes         */
6285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        private Event_VM_DEATH(byte suspendPolicy, Packet packet) {
6295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            super(suspendPolicy, packet, JDWPConstants.EventKind.VM_DEATH);
6305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
6315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    };
6325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
6335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
6345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * Returns array of ParsedEvent extracted from given EventPacket.
6355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     *
6365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * @param packet
6375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     *            EventPacket to parse events
6385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * @return array of extracted ParsedEvents
6395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
6405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public static ParsedEvent[] parseEventPacket(Packet packet) {
6415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
6425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        Packet packetCopy = new Packet(packet.toBytesArray());
6435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
6445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        // Suspend Policy field
6455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        byte suspendPolicy = packetCopy.getNextValueAsByte();
6465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
6475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        // Number of events
6485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        int eventCount = packetCopy.getNextValueAsInt();
6495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
6505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        ParsedEvent[] events = new ParsedEvent[eventCount];
6515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
6525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        // For all events in packet
6535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        for (int i = 0; i < eventCount; i++) {
6545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            byte eventKind = packetCopy.getNextValueAsByte();
6555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            switch (eventKind) {
6565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.VM_START: {
6575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_VM_START(suspendPolicy, packetCopy);
6585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
6605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.SINGLE_STEP: {
6615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_SINGLE_STEP(suspendPolicy, packetCopy);
6625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
6645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.BREAKPOINT: {
6655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_BREAKPOINT(suspendPolicy, packetCopy);
6665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
6685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.METHOD_ENTRY: {
6695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_METHOD_ENTRY(suspendPolicy, packetCopy);
6705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
6725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.METHOD_EXIT: {
6735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_METHOD_EXIT(suspendPolicy, packetCopy);
6745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
6765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.METHOD_EXIT_WITH_RETURN_VALUE: {
6775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_METHOD_EXIT_WITH_RETURN_VALUE(suspendPolicy, packetCopy);
6785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
6805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.MONITOR_CONTENDED_ENTER: {
6815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_MONITOR_CONTENDED_ENTER(suspendPolicy, packetCopy);
6825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
6845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.MONITOR_CONTENDED_ENTERED: {
6855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_MONITOR_CONTENDED_ENTERED(suspendPolicy, packetCopy);
6865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
6885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.MONITOR_WAIT: {
6895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_MONITOR_WAIT(suspendPolicy, packetCopy);
6905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
6925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.MONITOR_WAITED: {
6935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_MONITOR_WAITED(suspendPolicy, packetCopy);
6945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
6965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.EXCEPTION: {
6975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_EXCEPTION(suspendPolicy, packetCopy);
6985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
6995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
7005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.THREAD_START: {
7015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_THREAD_START(suspendPolicy, packetCopy);
7025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
7035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
7045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.THREAD_DEATH: {
7055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_THREAD_DEATH(suspendPolicy, packetCopy);
7065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
7075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
7085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.CLASS_PREPARE: {
7095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_CLASS_PREPARE(suspendPolicy, packetCopy);
7105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
7115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
7125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.CLASS_UNLOAD: {
7135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_CLASS_UNLOAD(suspendPolicy, packetCopy);
7145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
7155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
7165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.FIELD_ACCESS: {
7175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_FIELD_ACCESS(suspendPolicy, packetCopy);
7185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
7195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
7205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.FIELD_MODIFICATION: {
7215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_FIELD_MODIFICATION(suspendPolicy,
7225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                        packetCopy);
7235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
7245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
7255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            case JDWPConstants.EventKind.VM_DEATH: {
7265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                events[i] = new Event_VM_DEATH(suspendPolicy, packetCopy);
7275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                break;
7285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
7295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            default: {
7305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                throw new TestErrorException("Unexpected kind of event: "
7315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                        + eventKind);
7325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
7335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            }
7345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
7355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        return events;
7365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
7375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
7385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes}
739