Author: fmeschbe
Date: Wed Jan 28 09:13:50 2009
New Revision: 738410
URL: http://svn.apache.org/viewvc?rev=738410&view=rev
Log:
SLING-844 Try to set the cause of the ScriptException
Modified:
incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java
Modified:
incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java
URL:
http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java?rev=738410&r1=738409&r2=738410&view=diff
==============================================================================
---
incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java
(original)
+++
incubator/sling/trunk/scripting/javascript/src/main/java/org/apache/sling/scripting/javascript/internal/RhinoJavaScriptEngine.java
Wed Jan 28 09:13:50 2009
@@ -37,6 +37,7 @@
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
import org.mozilla.javascript.WrapFactory;
+import org.mozilla.javascript.Wrapper;
import org.slf4j.Logger;
/**
@@ -116,8 +117,25 @@
final ScriptException se = new ScriptException(t.details(),
t.sourceName(), t.lineNumber());
+ // log the script stack trace
((Logger)
bindings.get(SlingBindings.LOG)).error(t.getScriptStackTrace());
- se.setStackTrace(t.getStackTrace());
+
+ // set the exception cause
+ Object value = t.getValue();
+ if (value != null) {
+ if (value instanceof Wrapper) {
+ value = ((Wrapper) value).unwrap();
+ }
+ if (value instanceof Throwable) {
+ se.initCause((Throwable) value);
+ }
+ }
+
+ // if the cause could not be set, overwrite the stack trace
+ if (se.getCause() == null) {
+ se.setStackTrace(t.getStackTrace());
+ }
+
throw se;
} catch (Throwable t) {