Author: mthl
Date: Sat Mar  2 19:14:24 2019
New Revision: 1854663

URL: http://svn.apache.org/viewvc?rev=1854663&view=rev
Log:
Improved: Rewrite ‘GroovyUtil#parseClass’ (OFBIZ-10822)

The ‘parseClass(InputStream in, String location)’ and
‘parseClass(InputStream in, String location, GroovyClassLoader
groovyClassLoader)’ methods from GroovyUtil are now merged in a
private and documented method.

Modified:
    
ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/GroovyUtil.java

Modified: 
ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/GroovyUtil.java
URL: 
http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/GroovyUtil.java?rev=1854663&r1=1854662&r2=1854663&view=diff
==============================================================================
--- 
ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/GroovyUtil.java
 (original)
+++ 
ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/GroovyUtil.java
 Sat Mar  2 19:14:24 2019
@@ -145,11 +145,7 @@ public class GroovyUtil {
                 if (scriptUrl == null) {
                     throw new GeneralException("Script not found at location 
[" + location + "]");
                 }
-                if (groovyScriptClassLoader != null) {
-                    scriptClass = parseClass(scriptUrl.openStream(), location, 
groovyScriptClassLoader);
-                } else {
-                    scriptClass = parseClass(scriptUrl.openStream(), location);
-                }
+                scriptClass = parseClass(scriptUrl.openStream(), location);
                 Class<?> scriptClassCached = 
parsedScripts.putIfAbsent(location, scriptClass);
                 if (scriptClassCached == null) { // putIfAbsent returns null 
if the class is added to the cache
                     if (Debug.verboseOn()) {
@@ -175,14 +171,27 @@ public class GroovyUtil {
         return classLoader;
     }
 
-    public static Class<?> parseClass(InputStream in, String location) throws 
IOException {
-        GroovyClassLoader groovyClassLoader = new GroovyClassLoader();
-        Class<?> classLoader = 
groovyClassLoader.parseClass(UtilIO.readString(in), location);
-        groovyClassLoader.close();
-        return classLoader;
-    }
-    public static Class<?> parseClass(InputStream in, String location, 
GroovyClassLoader groovyClassLoader) throws IOException {
-        return groovyClassLoader.parseClass(UtilIO.readString(in), location);
+    /**
+     * Parses a Groovy class from an input stream.
+     * <p>
+     * This method is useful for parsing a Groovy script referenced by
+     * a flexible location like {@code component://myComponent/script.groovy}.
+     *
+     * @param in  the input stream containing the class source code
+     * @param location  the file name to associate with this class
+     * @return the corresponding class object
+     * @throws IOException when parsing fails
+     */
+    private static Class<?> parseClass(InputStream in, String location) throws 
IOException {
+        String classText = UtilIO.readString(in);
+        if (groovyScriptClassLoader != null) {
+            return groovyScriptClassLoader.parseClass(classText, location);
+        } else {
+            GroovyClassLoader classLoader = new GroovyClassLoader();
+            Class<?> klass = classLoader.parseClass(classText, location);
+            classLoader.close();
+            return klass;
+        }
     }
 
     public static Class<?> parseClass(String text) throws IOException {


Reply via email to