svn commit: r1908844 - /db/torque/trunk/torque-generator/src/main/java/org/apache/torque/generator/template/groovy/GroovyScriptOutlet.java

[email protected]
Newsgroups gmane.comp.jakarta.turbine.torque.devel
Message-ID <[email protected]>
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);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.