You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2012/04/17 10:44:43 UTC

svn commit: r1326996 - in /ofbiz/trunk/framework: base/src/org/ofbiz/base/util/GroovyUtil.java base/src/org/ofbiz/base/util/ScriptUtil.java security/src/org/ofbiz/security/authz/da/GroovyDaHandler.java

Author: jacopoc
Date: Tue Apr 17 08:44:43 2012
New Revision: 1326996

URL: http://svn.apache.org/viewvc?rev=1326996&view=rev
Log:
Enhanced GroovyUtil to support the execution of data preparation methods defined in a Groovy script file (similarly to what is already supported by the ScriptUtil class for JSR223).

Modified:
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/GroovyUtil.java
    ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ScriptUtil.java
    ofbiz/trunk/framework/security/src/org/ofbiz/security/authz/da/GroovyDaHandler.java

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/GroovyUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/GroovyUtil.java?rev=1326996&r1=1326995&r2=1326996&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/GroovyUtil.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/GroovyUtil.java Tue Apr 17 08:44:43 2012
@@ -25,6 +25,7 @@ import java.util.Map;
 
 import groovy.lang.Binding;
 import groovy.lang.GroovyClassLoader;
+import groovy.lang.Script;
 import groovy.lang.GroovyShell;
 
 import javolution.util.FastMap;
@@ -99,10 +100,12 @@ public class GroovyUtil {
         if (context != null) {
             vars.putAll(context);
             vars.put("context", context);
-            ScriptContext scriptContext = ScriptUtil.createScriptContext(context);
-            ScriptHelper scriptHelper = (ScriptHelper)scriptContext.getAttribute(ScriptUtil.SCRIPT_HELPER_KEY);
-            if (scriptHelper != null) {
-                vars.put(ScriptUtil.SCRIPT_HELPER_KEY, scriptHelper);
+            if (vars.get(ScriptUtil.SCRIPT_HELPER_KEY) == null) {
+                ScriptContext scriptContext = ScriptUtil.createScriptContext(context);
+                ScriptHelper scriptHelper = (ScriptHelper)scriptContext.getAttribute(ScriptUtil.SCRIPT_HELPER_KEY);
+                if (scriptHelper != null) {
+                    vars.put(ScriptUtil.SCRIPT_HELPER_KEY, scriptHelper);
+                }
             }
         }
         return new Binding(vars);
@@ -154,12 +157,19 @@ public class GroovyUtil {
         return new GroovyClassLoader().parseClass(text, location);
     }
 
-    public static Object runScriptAtLocation(String location, Map<String, Object> context) throws GeneralException {
-        return runScriptAtLocation(location, context, null);
+    public static Object runScriptAtLocation(String location, String methodName, Map<String, Object> context) throws GeneralException {
+        return runScriptAtLocation(location, methodName, context, null);
     }
 
-    public static Object runScriptAtLocation(String location, Map<String, Object> context, GroovyClassLoader groovyClassLoader) throws GeneralException {
-        return InvokerHelper.createScript(getScriptClassFromLocation(location, groovyClassLoader), getBinding(context)).run();
+    public static Object runScriptAtLocation(String location, String methodName, Map<String, Object> context, GroovyClassLoader groovyClassLoader) throws GeneralException {
+        Script script = InvokerHelper.createScript(getScriptClassFromLocation(location, groovyClassLoader), getBinding(context));
+        Object result = null;
+        if (UtilValidate.isEmpty(methodName)) {
+            result = script.run();
+        } else {
+            result = script.invokeMethod(methodName, new Object[] { context });
+        }
+        return result;
     }
 
     public static Object runScriptFromClasspath(String script, Map<String,Object> context) throws GeneralException {

Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ScriptUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ScriptUtil.java?rev=1326996&r1=1326995&r2=1326996&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ScriptUtil.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/ScriptUtil.java Tue Apr 17 08:44:43 2012
@@ -336,6 +336,11 @@ public final class ScriptUtil {
      */
     public static Object executeScript(String filePath, String functionName, Map<String, Object> context, Object[] args) {
         try {
+            /* Enable this to run Groovy data preparation scripts using GroovyUtil rather than the generic JSR223 that doesn't support debug mode
+            if (filePath.endsWith(".groovy")) {
+                return GroovyUtil.runScriptAtLocation(filePath, functionName, context);
+            }
+            */
             return executeScript(filePath, functionName, createScriptContext(context), args);
         } catch (Exception e) {
             String errMsg = "Error running script at location [" + filePath + "]: " + e.toString();

Modified: ofbiz/trunk/framework/security/src/org/ofbiz/security/authz/da/GroovyDaHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/security/src/org/ofbiz/security/authz/da/GroovyDaHandler.java?rev=1326996&r1=1326995&r2=1326996&view=diff
==============================================================================
--- ofbiz/trunk/framework/security/src/org/ofbiz/security/authz/da/GroovyDaHandler.java (original)
+++ ofbiz/trunk/framework/security/src/org/ofbiz/security/authz/da/GroovyDaHandler.java Tue Apr 17 08:44:43 2012
@@ -50,7 +50,7 @@ public class GroovyDaHandler implements 
         if (accessString.startsWith("component://")) {
             // loaded using the OFBiz location API
             try {
-                result = GroovyUtil.runScriptAtLocation(accessString, bindings);
+                result = GroovyUtil.runScriptAtLocation(accessString, null, bindings);
             } catch (GeneralException e) {
                 Debug.logWarning(e, module);
             }