001: /*
002: * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025:
026: package com.sun.jdi.request;
027:
028: import com.sun.jdi.*;
029:
030: /**
031: * Request for notification when a class is prepared in the target VM.
032: * When an enabled ClassPrepareRequest is satisfied, an
033: * {@link com.sun.jdi.event.EventSet event set} containing a
034: * {@link com.sun.jdi.event.ClassPrepareEvent ClassPrepareEvent}
035: * will be placed on the
036: * {@link com.sun.jdi.event.EventQueue EventQueue}.
037: * The collection of existing ClassPrepareRequests is
038: * managed by the {@link EventRequestManager}
039: * <p>
040: * Class preparation is defined in the Java Virtual Machine
041: * Specification.
042: *
043: * @see com.sun.jdi.event.ClassPrepareEvent
044: * @see com.sun.jdi.event.EventQueue
045: * @see EventRequestManager
046: *
047: * @author Robert Field
048: * @since 1.3
049: */
050: public interface ClassPrepareRequest extends EventRequest {
051:
052: /**
053: * Restricts the events generated by this request to be the
054: * preparation of the given reference type and any subtypes.
055: * An event will be generated for any prepared reference type that can
056: * be safely cast to the given reference type.
057: *
058: * @param refType the reference type to filter on.
059: * @throws InvalidRequestStateException if this request is currently
060: * enabled or has been deleted.
061: * Filters may be added only to disabled requests.
062: */
063: void addClassFilter(ReferenceType refType);
064:
065: /**
066: * Restricts the events generated by this request to the
067: * preparation of reference types whose name matches this restricted
068: * regular expression. Regular expressions are limited
069: * to exact matches and patterns that begin with '*' or end with '*';
070: * for example, "*.Foo" or "java.*".
071: *
072: * @param classPattern the pattern String to filter for.
073: * @throws InvalidRequestStateException if this request is currently
074: * enabled or has been deleted.
075: * Filters may be added only to disabled requests.
076: */
077: void addClassFilter(String classPattern);
078:
079: /**
080: * Restricts the events generated by this request to the
081: * preparation of reference types whose name does <b>not</b> match
082: * this restricted regular expression. Regular expressions are limited
083: * to exact matches and patterns that begin with '*' or end with '*';
084: * for example, "*.Foo" or "java.*".
085: *
086: * @param classPattern the pattern String to filter against.
087: * @throws InvalidRequestStateException if this request is currently
088: * enabled or has been deleted.
089: * Filters may be added only to disabled requests.
090: */
091: void addClassExclusionFilter(String classPattern);
092:
093: /**
094: * Restricts the events generated by this request to the
095: * preparation of reference types for which the restricted regular
096: * expression 'sourceNamePattern' matches one of the 'sourceNames' for
097: * the reference type being prepared.
098: * That is, if refType is the ReferenceType being prepared,
099: * then there exists at least one stratum, call it 'someStratum'
100: * on the list returned by
101: * refType.availableStrata();
102: *
103: * such that a name on the list returned by
104: * refType.sourceNames(someStratam)
105: *
106: * matches 'sourceNamePattern'.
107: * Regular expressions are limited
108: * to exact matches and patterns that begin with '*' or end with '*';
109: * for example, "*.Foo" or "java.*".
110: * <P>
111: * Not all targets support this operation.
112: * Use {@link VirtualMachine#canUseSourceNameFilters()}
113: * to determine if the operation is supported.
114: * @since 1.6
115: * @param sourceNamePattern the pattern string to filter for.
116: * @throws java.lang.UnsupportedOperationException if
117: * the target virtual machine does not support this
118: * operation.
119: * @throws InvalidRequestStateException if this request is currently
120: * enabled or has been deleted.
121: * Filters may be added only to disabled requests.
122: */
123: void addSourceNameFilter(String sourceNamePattern);
124: }
|