Author: gk
Date: Fri Mar 31 09:35:34 2023
New Revision: 1908844
URL: http://svn.apache.org/viewvc?rev=1908844&view=rev
Log:
- TORQUE-361: fix: Lazy initializing GroovyShell with class loader from
unitConfiguration (unit descriptor classloader) and if null using default.
Modified:
db/torque/trunk/torque-generator/src/main/java/org/apache/torque/generator/template/groovy/GroovyScriptOutlet.java
Modified:
db/torque/trunk/torque-generator/src/main/java/org/apache/torque/generator/template/groovy/GroovyScriptOutlet.java
URL:
http://svn.apache.org/viewvc/db/torque/trunk/torque-generator/src/main/java/org/apache/torque/generator/template/groovy/GroovyScriptOutlet.java?rev=1908844&r1=1908843&r2=1908844&view=diff
==============================================================================
---
db/torque/trunk/torque-generator/src/main/java/org/apache/torque/generator/template/groovy/GroovyScriptOutlet.java
(original)
+++
db/torque/trunk/torque-generator/src/main/java/org/apache/torque/generator/template/groovy/GroovyScriptOutlet.java
Fri Mar 31 09:35:34 2023
@@ -38,13 +38,35 @@ import org.apache.torque.generator.qname
*/
public class GroovyScriptOutlet extends GroovyOutlet
{
+
/** The groovy shell to execute groovy scripts. */
- private static GroovyShell groovyShell = new GroovyShell();
+ private static volatile GroovyShell groovyShell = null;
+
/** The cached compiled scripts, keyed by the detokenized path. */
private static Map<String, Script> cachedScripts
= new HashMap<>();
-
+
+ /**
+ * Initializes GroovyShell with provided class loader.
+ *
+ * @param cl if class loader is null uses {@link
Thread#currentThread()}.getContextClassLoader()
+ *
+ * @return
+ */
+ GroovyShell getInstance(ClassLoader cl)
+ {
+ if (groovyShell == null)
+ {
+ if (cl == null)
+ {
+ cl = Thread.currentThread().getContextClassLoader();
+ }
+ groovyShell = new GroovyShell( cl );
+ }
+ return groovyShell;
+ }
+
/**
* Constructs a new GroovyScriptOutlet.
*
@@ -81,7 +103,8 @@ public class GroovyScriptOutlet extends
Script script = cachedScripts.get(detokenizedPath);
if (script == null)
{
- script = groovyShell.parse(getContent(controllerState));
+ GroovyShell gs =
getInstance(controllerState.getUnitConfiguration().getClassLoader());
+ script = gs.parse(getContent(controllerState));
cachedScripts.put(detokenizedPath, script);
}
final Binding scriptBinding = new Binding(binding);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]