/**
*
*/
package org.eclipse.dltk.rhino.dbgp;
import java.util.HashMap;
final class EvalCommand extends DBGPDebugger.Command {
/**
*
*/
private final DBGPDebugger debugger;
/**
* @param debugger
*/
EvalCommand(DBGPDebugger debugger) {
this.debugger = debugger;
}
@Override
void parseAndExecute(String command, HashMap options) {
String value = Base64Helper.decodeString((String) options.get("--"));
if (value.length() == 0)
value = "this";
StringBuffer valueBuffer = new StringBuffer();
if (this.debugger.stackmanager.getStackDepth() == 0 || value == null) {
this.debugger.printProperty(value, value, "", valueBuffer, 0, true);
this.debugger.printResponse(
"<response command=\"eval\"\r\n" + " transaction_id=\""
+ options.get("-i") + "\" success=\"1\" " + ">\r\n"
+ valueBuffer + "</response>\r\n" + "");
return;
}
Object evaluated = "<error evaluating>";
try {
DBGPDebugFrame fr = this.debugger.stackmanager.getStackFrame(0);
evaluated = fr.eval(value);
} catch (Exception e) {
e.printStackTrace();
}
String shName = value;
int k = shName.lastIndexOf('.');
if (k != -1) {
shName = shName.substring(k + 1);
}
this.debugger.printProperty(shName, value, evaluated, valueBuffer, 0,
true);
this.debugger.printResponse("<response command=\"eval\"\r\n"
+ " transaction_id=\"" + options.get("-i") + "\" success=\"1\" "
+ ">\r\n" + valueBuffer + "</response>\r\n" + "");
}
}