Bug 553665: [Unit Test] Active watch expressions disable breakpoints
For a temporary context we removed the link to the debugger, but did
not restore it afterwards.
Change-Id: If755b94beeb707d11b47bbdd2763187996099821
diff --git a/plugins/org.eclipse.ease.lang.javascript.rhino/src/org/eclipse/ease/lang/javascript/rhino/debugger/RhinoDebugger.java b/plugins/org.eclipse.ease.lang.javascript.rhino/src/org/eclipse/ease/lang/javascript/rhino/debugger/RhinoDebugger.java
index e85afb6..cae7ce5 100644
--- a/plugins/org.eclipse.ease.lang.javascript.rhino/src/org/eclipse/ease/lang/javascript/rhino/debugger/RhinoDebugger.java
+++ b/plugins/org.eclipse.ease.lang.javascript.rhino/src/org/eclipse/ease/lang/javascript/rhino/debugger/RhinoDebugger.java
@@ -165,15 +165,29 @@
@Override
public Object inject(String expression) throws Throwable {
+ Context context = null;
+ Debugger debugger = null;
+ Object debuggerContextData = null;
+
try {
final StringReader reader = new StringReader(expression);
- final Context context = RhinoScriptEngine.getContext();
+ context = RhinoScriptEngine.getContext();
+
+ // backup current debugger settings
+ debugger = context.getDebugger();
+ debuggerContextData = context.getDebuggerContextData();
+
context.setDebugger(null, null);
return context.evaluateReader(fScope, reader, null, 1, null);
} catch (final Throwable e) {
// FIXME: move to script engine to get correct error handling
throw e;
+
+ } finally {
+ // restore debugger on context
+ if (context != null)
+ context.setDebugger(debugger, debuggerContextData);
}
}
}
diff --git a/plugins/org.eclipse.ease/src/org/eclipse/ease/debugging/events/model/EvaluateExpressionRequest.java b/plugins/org.eclipse.ease/src/org/eclipse/ease/debugging/events/model/EvaluateExpressionRequest.java
index 5ac4da0..2b78bd3 100644
--- a/plugins/org.eclipse.ease/src/org/eclipse/ease/debugging/events/model/EvaluateExpressionRequest.java
+++ b/plugins/org.eclipse.ease/src/org/eclipse/ease/debugging/events/model/EvaluateExpressionRequest.java
@@ -38,4 +38,9 @@
public IWatchExpressionListener getListener() {
return fListener;
}
+
+ @Override
+ public String toString() {
+ return super.toString() + " " + getExpression();
+ }
}