You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2008/11/25 22:43:14 UTC
svn commit: r720611 -
/incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
Author: fmeschbe
Date: Tue Nov 25 13:43:14 2008
New Revision: 720611
URL: http://svn.apache.org/viewvc?rev=720611&view=rev
Log:
SLING-743 Set/Reset Thread context class loader for the evaluation (compile, execute) of JSP scripts
Modified:
incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
Modified: incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java?rev=720611&r1=720610&r2=720611&view=diff
==============================================================================
--- incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java (original)
+++ incubator/sling/trunk/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java Tue Nov 25 13:43:14 2008
@@ -340,6 +340,12 @@
Bindings props = context.getBindings(ScriptContext.ENGINE_SCOPE);
SlingScriptHelper scriptHelper = (SlingScriptHelper) props.get(SLING);
if (scriptHelper != null) {
+
+ // set the current class loader as the thread context loader for
+ // the compilation and execution of the JSP script
+ ClassLoader old = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(jspClassLoader);
+
try {
callJsp(props, scriptHelper);
} catch (SlingServletException e) {
@@ -359,10 +365,20 @@
}
}
}
+
// fallback to standard behaviour
throw new BetterScriptException(e.getMessage(), e);
+
} catch (Exception e) {
+
throw new BetterScriptException(e.getMessage(), e);
+
+ } finally {
+
+ // make sure the context loader is reset after setting up the
+ // JSP runtime context
+ Thread.currentThread().setContextClassLoader(old);
+
}
}
return null;