01: /*******************************************************************************
02: * Copyright (c) 2000, 2005 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jdt.debug.eval;
11:
12: import org.eclipse.debug.core.DebugException;
13: import org.eclipse.jdt.debug.core.IJavaThread;
14:
15: /**
16: * An evaluation engine that performs evaluations by
17: * deploying and executing class files locally.
18: * <p>
19: * Clients are not intended to implement this interface.
20: * </p>
21: * @since 2.0
22: */
23: public interface IClassFileEvaluationEngine extends IEvaluationEngine {
24: /**
25: * Returns the import declarations for this evaluation context. An empty
26: * list indicates there are no imports. The syntax for the import corresponds to a
27: * fully qualified type name, or to an on-demand package name as defined by
28: * ImportDeclaration (JLS2 7.5). For example, <code>"java.util.Hashtable"</code>
29: * or <code>"java.util.*"</code>.
30: *
31: * @return the list of import names
32: */
33: public String[] getImports();
34:
35: /**
36: * Sets the import declarations for this evaluation context. An empty
37: * list indicates there are no imports. The syntax for the import corresponds to a
38: * fully qualified type name, or to an on-demand package name as defined by
39: * ImportDeclaration (JLS2 7.5). For example, <code>"java.util.Hashtable"</code>
40: * or <code>"java.util.*"</code>.
41: *
42: * @param imports the list of import names
43: */
44: public void setImports(String[] imports);
45:
46: /**
47: * Asynchronously evaluates the given snippet in the specified
48: * target thread, reporting the result back to the given listener.
49: * The snippet is evaluated in the context of the Java
50: * project this evaluation engine was created on. If the
51: * snippet is determined to be a valid expression, the expression
52: * is evaluated in the specified thread, which resumes its
53: * execution from the location at which it is currently suspended.
54: * When the evaluation completes, the thread will be suspened
55: * at this original location.
56: * Compilation and runtime errors are reported in the evaluation result.
57: *
58: * @param snippet code snippet to evaluate
59: * @param thread the thread in which to run the evaluation,
60: * which must be suspended
61: * @param listener the listener that will receive notification
62: * when/if the evalaution completes
63: * @param hitBreakpoints whether or not breakpoints should be honored
64: * in the evaluation thread during the evaluation. If <code>false</code>,
65: * breakpoints hit in the evaluation thread will be ignored.
66: * @exception DebugException if this method fails. Reasons include:<ul>
67: * <li>Failure communicating with the VM. The DebugException's
68: * status code contains the underlying exception responsible for
69: * the failure.</li>
70: * <li>The specified thread is not currently suspended</li>
71: * <li>The specified thread is not contained in the debug target
72: * associated with this evaluation engine</li>
73: * <li>The specified thread is suspended in the middle of
74: * an evaluation that has not completed. It is not possible
75: * to perform nested evaluations</li>
76: * </ul>
77: */
78: public void evaluate(String snippet, IJavaThread thread,
79: IEvaluationListener listener, boolean hitBreakpoints)
80: throws DebugException;
81:
82: }
|