001: /*
002: * The contents of this file are subject to the terms of the Common Development
003: * and Distribution License (the License). You may not use this file except in
004: * compliance with the License.
005: *
006: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
007: * or http://www.netbeans.org/cddl.txt.
008: *
009: * When distributing Covered Code, include this CDDL Header Notice in each file
010: * and include the License file at http://www.netbeans.org/cddl.txt.
011: * If applicable, add the following below the CDDL Header, with the fields
012: * enclosed by brackets [] replaced by your own identifying information:
013: * "Portions Copyrighted [year] [name of copyright owner]"
014: *
015: * The Original Software is NetBeans. The Initial Developer of the Original
016: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
017: * Microsystems, Inc. All Rights Reserved.
018: */
019:
020: package org.netbeans.modules.bpel.debugger.spi.plugin.request;
021:
022: import java.util.List;
023: import org.netbeans.modules.bpel.debugger.spi.plugin.def.Position;
024: import org.netbeans.modules.bpel.debugger.spi.plugin.exec.ProcessInstance;
025:
026: /**
027: * Manages the creation and deletion of
028: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.EventRequest}s.
029: * A single implementor of this interface exists for a particuar
030: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.BpelEngine}
031: * and is accessed through
032: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.BpelEngine#getEventRequestManager()}.
033: *
034: * @author Alexander Zgursky
035: */
036: public interface EventRequestManager {
037:
038: /**
039: * Creates a new disabled
040: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.ProcessInstanceCreatedRequest}.
041: * The new event request is added to the list managed by this
042: * EventRequestManager. Use
043: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.EventRequest#setEnabled}
044: * to activate this event request.
045: *
046: * @return the created event request
047: */
048: ProcessInstanceCreatedRequest createProcessInstanceCreatedRequest();
049:
050: /**
051: * Creates a new disabled
052: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.ProcessInstanceCompletedRequest}.
053: * The new event request is added to the list managed by this
054: * EventRequestManager. Use
055: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.EventRequest#setEnabled}
056: * to activate this event request.
057: *
058: * @return the created event request
059: */
060: ProcessInstanceCompletedRequest createProcessInstanceCompletedRequest();
061:
062: /**
063: * Creates a new disabled
064: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.BreakpointReachedRequest}
065: * which is set on the given
066: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.def.Position}.
067: * The new breakpoint is added to the list managed by this
068: * EventRequestManager. Multiple breakpoints at the same
069: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.def.Position}
070: * are permitted. Use
071: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.EventRequest#setEnabled}
072: * to activate this event request.
073: *
074: * @param position the position of the new breakpoint
075: *
076: * @return the created event request
077: */
078: BreakpointReachedRequest createBreakpointReachedRequest(
079: Position position);
080:
081: /**
082: * Creates a new disabled
083: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.StepCompletedRequest}.
084: * The new step request is added to the list managed by this
085: * EventRequestManager. Use
086: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.EventRequest#setEnabled}
087: * to activate this event request.
088: * <br><br>
089: * Only one pending step request is allowed per process instance.
090: * <br><br>
091: * Note that enabling this request doesn't automatically resume the
092: * process instance. The process instance will get a chance to
093: * complete the step after a call to
094: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.exec.ProcessInstance#resume}
095: * or
096: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.BpelEngine#resumeAllProcessInstances}.
097: * <br><br>
098: * Note that this event request would cause one or zero
099: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.event.StepCompletedEvent}s
100: * to be sent. An instance of this request is neither removed from the list
101: * nor disabled automatically by the BPEL Debugger Plugin as the
102: * corresponding event is sent.
103: *
104: * @param processInstance the process instance in which to step
105: *
106: * @return the created event request
107: *
108: * @throws DuplicateRequestException if there is already a pending
109: * step request for the specified process instance
110: */
111: StepCompletedRequest createStepCompletedRequest(
112: ProcessInstance processInstance);
113:
114: /**
115: * Return an unmodifiable list of the enabled and disabled event requests.
116: * This list is a live view of these requests and thus changes as
117: * requests are added and deleted.
118: *
119: * @return the list of event requests
120: */
121: List<EventRequest> getAllRequests();
122:
123: /**
124: * Removes an event request. The eventRequest is disabled and removed from
125: * the requests managed by this EventRequestManager. Once the eventRequest
126: * is deleted, no operations (for example,
127: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.EventRequest#setEnabled})
128: * are permitted - attempts to do so will generally cause an
129: * {@link org.netbeans.modules.bpel.debugger.spi.plugin.request.InvalidRequestStateException}.
130: * No other event requests are effected.
131: *
132: * @param eventRequest the event request to remove
133: */
134: void deleteEventRequest(EventRequest eventRequest);
135:
136: /**
137: * Removes a list of event requests.
138: *
139: * @param eventRequests the event requests to remove
140: *
141: * @see #deleteEventRequest
142: */
143: void deleteEventRequests(List<EventRequest> eventRequests);
144: }
|