/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.debug.eval; import org.eclipse.debug.core.DebugException; import org.eclipse.jdt.debug.core.IJavaThread; /** * An evaluation engine that performs evaluations by deploying and executing * class files locally. * * @since 2.0 * @noimplement This interface is not intended to be implemented by clients. * @noextend This interface is not intended to be extended by clients. */ public interface IClassFileEvaluationEngine extends IEvaluationEngine { /** * Returns the import declarations for this evaluation context. An empty * list indicates there are no imports. The syntax for the import * corresponds to a fully qualified type name, or to an on-demand package * name as defined by ImportDeclaration (JLS2 7.5). For example, * <code>"java.util.Hashtable"</code> or <code>"java.util.*"</code>. * * @return the list of import names */ public String[] getImports(); /** * Sets the import declarations for this evaluation context. An empty list * indicates there are no imports. The syntax for the import corresponds to * a fully qualified type name, or to an on-demand package name as defined * by ImportDeclaration (JLS2 7.5). For example, * <code>"java.util.Hashtable"</code> or <code>"java.util.*"</code>. * * @param imports * the list of import names */ public void setImports(String[] imports); /** * Asynchronously evaluates the given snippet in the specified target * thread, reporting the result back to the given listener. The snippet is * evaluated in the context of the Java project this evaluation engine was * created on. If the snippet is determined to be a valid expression, the * expression is evaluated in the specified thread, which resumes its * execution from the location at which it is currently suspended. When the * evaluation completes, the thread will be suspened at this original * location. Compilation and runtime errors are reported in the evaluation * result. * * @param snippet * code snippet to evaluate * @param thread * the thread in which to run the evaluation, which must be * suspended * @param listener * the listener that will receive notification when/if the * evalaution completes * @param hitBreakpoints * whether or not breakpoints should be honored in the evaluation * thread during the evaluation. If <code>false</code>, * breakpoints hit in the evaluation thread will be ignored. * @exception DebugException * if this method fails. Reasons include: * <ul> * <li>Failure communicating with the VM. The * DebugException's status code contains the underlying * exception responsible for the failure.</li> * <li>The specified thread is not currently suspended</li> * <li>The specified thread is not contained in the debug * target associated with this evaluation engine</li> * <li>The specified thread is suspended in the middle of an * evaluation that has not completed. It is not possible to * perform nested evaluations</li> * </ul> */ public void evaluate(String snippet, IJavaThread thread, IEvaluationListener listener, boolean hitBreakpoints) throws DebugException; }