/** * Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ 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; /** * Gets the completions for a given stack (locals and globals in a suspended context). */ public class GetCompletionsCommand extends AbstractDebuggerCommand { private String actTok; private String locator; private boolean isError = false; private int responseCode; private String payload; public GetCompletionsCommand(AbstractDebugTarget debugger, String actTok, String locator) { super(debugger); this.locator = locator; this.actTok = actTok; } public String getOutgoing() { int cmd = CMD_GET_COMPLETIONS; return makeCommand(cmd, sequence, locator + "\t" + actTok); } public boolean needResponse() { return true; //The response are the completions! } public void processOKResponse(int cmdCode, String payload) { responseCode = cmdCode; if (responseCode == CMD_GET_COMPLETIONS) this.payload = payload; else { isError = true; PydevDebugPlugin.log(IStatus.ERROR, "Unexpected response to GetCompletionsCommand", null); } } public void processErrorResponse(int cmdCode, String payload) { responseCode = cmdCode; this.payload = payload; isError = true; } public String getResponse() throws CoreException { if (isError) throw new CoreException(PydevDebugPlugin.makeStatus(IStatus.ERROR, "pydevd error:" + payload, null)); else return payload; } }