You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mt...@apache.org on 2019/03/02 19:14:24 UTC
svn commit: r1854663 -
/ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/GroovyUtil.java
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 {