/****************************************************************************** * Copyright (C) 2012 Hussain Bohra 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: * Hussain Bohra <hussain.bohra@tavant.com> - initial API and implementation * Fabio Zadrozny <fabiofz@gmail.com> - ongoing maintenance ******************************************************************************/ package org.python.pydev.debug.model.remote; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.python.pydev.debug.core.PydevDebugPlugin; import org.python.pydev.debug.model.AbstractDebugTarget; public class EvaluateConsoleExpressionCommand extends AbstractDebuggerCommand { private boolean isError = false; private String locator; private int responseCode; private String payload; public EvaluateConsoleExpressionCommand(AbstractDebugTarget debugger, String locator, ICommandResponseListener responseListener) { super(debugger); this.locator = locator; this.responseListener = responseListener; } @Override public String getOutgoing() { int cmd = CMD_EVALUATE_CONSOLE_EXPRESSION; return makeCommand(cmd, sequence, locator); } @Override public boolean needResponse() { return true; // Allows the command to wait till a response is received. } @Override public void processOKResponse(int cmdCode, String payload) { this.responseCode = cmdCode; if (responseCode == CMD_EVALUATE_CONSOLE_EXPRESSION) this.payload = payload; else { isError = true; PydevDebugPlugin.log(IStatus.ERROR, "Unexpected response to GetTaskletCallStackCommand", null); } } @Override public void processErrorResponse(int cmdCode, String payload) { this.responseCode = cmdCode; this.payload = payload; isError = true; } public String getResponse() throws CoreException { if (isError) throw new CoreException(PydevDebugPlugin.makeStatus(IStatus.ERROR, payload, null)); else return payload; } }