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

svn commit: r1327981 [3/9] - in /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang: ./ method/ method/callops/ method/conditional/ method/entityops/ method/envops/ method/eventops/ method/ifops/ method/otherops/ method/serviceops/ operation/

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/ContextAccessor.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/ContextAccessor.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/ContextAccessor.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/ContextAccessor.java Thu Apr 19 15:09:03 2012
@@ -25,14 +25,13 @@ import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.collections.FlexibleMapAccessor;
 
 /**
- * Used to flexibly access Map values, supporting the "." (dot) syntax for
- * accessing sub-map values and the "[]" (square bracket) syntax for accessing
- * list elements. See individual Map operations for more information.
+ * Used to flexibly access Map values, supporting the "." (dot) syntax for accessing sub-map values and the "[]" (square bracket) syntax for accessing list elements. See individual Map operations for
+ * more information.
  */
 public class ContextAccessor<T> {
 
-    protected String name;
     protected FlexibleMapAccessor<T> fma;
+    protected String name;
 
     public ContextAccessor(String name) {
         init(name);
@@ -46,77 +45,73 @@ public class ContextAccessor<T> {
         }
     }
 
-    protected void init(String name) {
-        this.name = name;
-        this.fma = FlexibleMapAccessor.getInstance(name);
+    /** The equals and hashCode methods are imnplemented just case this object is ever accidently used as a Map key */
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof ContextAccessor<?>) {
+            ContextAccessor<?> contextAccessor = (ContextAccessor<?>) obj;
+            if (this.name == null) {
+                return contextAccessor.name == null;
+            }
+            return this.name.equals(contextAccessor.name);
+        } else {
+            String str = (String) obj;
+            if (this.name == null) {
+                return str == null;
+            }
+            return this.name.equals(str);
+        }
     }
 
-    public boolean isEmpty() {
-        return this.fma.isEmpty();
+    /** Based on name get from Map or from List in Map */
+    public T get(Map<String, ? extends Object> theMap, MethodContext methodContext) {
+        return fma.get(theMap);
     }
 
     /** Based on name get from Map or from List in Map */
     public T get(MethodContext methodContext) {
-        return UtilGenerics.<T>cast(methodContext.getEnv(fma));
+        return UtilGenerics.<T> cast(methodContext.getEnv(fma));
     }
 
-    /** Based on name put in Map or from List in Map;
-     * If the brackets for a list are empty the value will be appended to the list,
-     * otherwise the value will be set in the position of the number in the brackets.
-     * If a "+" (plus sign) is included inside the square brackets before the index
-     * number the value will inserted/added at that point instead of set at the point.
-     */
-    public void put(MethodContext methodContext, T value) {
-        methodContext.putEnv(fma, value);
+    /** The equals and hashCode methods are imnplemented just case this object is ever accidently used as a Map key */
+    @Override
+    public int hashCode() {
+        return this.name.hashCode();
     }
 
-    /** Based on name remove from Map or from List in Map */
-    public T remove(MethodContext methodContext) {
-        return UtilGenerics.<T>cast(methodContext.removeEnv(fma));
+    protected void init(String name) {
+        this.name = name;
+        this.fma = FlexibleMapAccessor.getInstance(name);
     }
 
-    /** Based on name get from Map or from List in Map */
-    public T get(Map<String, ? extends Object> theMap, MethodContext methodContext) {
-        return fma.get(theMap);
+    public boolean isEmpty() {
+        return this.fma.isEmpty();
     }
 
-    /** Based on name put in Map or from List in Map;
-     * If the brackets for a list are empty the value will be appended to the list,
-     * otherwise the value will be set in the position of the number in the brackets.
-     * If a "+" (plus sign) is included inside the square brackets before the index
-     * number the value will inserted/added at that point instead of set at the point.
+    /**
+     * Based on name put in Map or from List in Map; If the brackets for a list are empty the value will be appended to the list, otherwise the value will be set in the position of the number in the
+     * brackets. If a "+" (plus sign) is included inside the square brackets before the index number the value will inserted/added at that point instead of set at the point.
      */
     public void put(Map<String, Object> theMap, T value, MethodContext methodContext) {
         fma.put(theMap, value);
     }
 
+    /**
+     * Based on name put in Map or from List in Map; If the brackets for a list are empty the value will be appended to the list, otherwise the value will be set in the position of the number in the
+     * brackets. If a "+" (plus sign) is included inside the square brackets before the index number the value will inserted/added at that point instead of set at the point.
+     */
+    public void put(MethodContext methodContext, T value) {
+        methodContext.putEnv(fma, value);
+    }
+
     /** Based on name remove from Map or from List in Map */
     public T remove(Map<String, ? extends Object> theMap, MethodContext methodContext) {
         return fma.remove(theMap);
     }
 
-    /** The equals and hashCode methods are imnplemented just case this object is ever accidently used as a Map key */
-    @Override
-    public int hashCode() {
-        return this.name.hashCode();
-    }
-
-    /** The equals and hashCode methods are imnplemented just case this object is ever accidently used as a Map key */
-    @Override
-    public boolean equals(Object obj) {
-        if (obj instanceof ContextAccessor<?>) {
-            ContextAccessor<?> contextAccessor = (ContextAccessor<?>) obj;
-            if (this.name == null) {
-                return contextAccessor.name == null;
-            }
-            return this.name.equals(contextAccessor.name);
-        } else {
-            String str = (String) obj;
-            if (this.name == null) {
-                return str == null;
-            }
-            return this.name.equals(str);
-        }
+    /** Based on name remove from Map or from List in Map */
+    public T remove(MethodContext methodContext) {
+        return UtilGenerics.<T> cast(methodContext.removeEnv(fma));
     }
 
     /** To be used for a string representation of the accessor, returns the original name. */

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/FieldObject.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/FieldObject.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/FieldObject.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/FieldObject.java Thu Apr 19 15:09:03 2012
@@ -18,11 +18,14 @@
  *******************************************************************************/
 package org.ofbiz.minilang.method;
 
-import java.util.*;
+import java.util.Map;
 
-import org.w3c.dom.*;
-import org.ofbiz.base.util.*;
-import org.ofbiz.minilang.*;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.ObjectType;
+import org.ofbiz.base.util.UtilGenerics;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.minilang.SimpleMethod;
+import org.w3c.dom.Element;
 
 /**
  * A type of MethodObject that represents an Object value in a certain location
@@ -40,33 +43,15 @@ public class FieldObject<T> extends Meth
         // the schema for this element now just has the "field" attribute, though the old "field-name" and "map-name" pair is still supported
         fieldAcsr = new ContextAccessor<T>(element.getAttribute("field"), element.getAttribute("field-name"));
         mapAcsr = new ContextAccessor<Map<String, ? extends Object>>(element.getAttribute("map-name"));
-
         type = element.getAttribute("type");
         if (UtilValidate.isEmpty(type)) {
             type = "String";
         }
     }
 
-    /** Get the name for the type of the object */
-    @Override
-    public String getTypeName() {
-        return type;
-    }
-
-    @Override
-    public Class<T> getTypeClass(ClassLoader loader) {
-        try {
-            return UtilGenerics.cast(ObjectType.loadClass(type, loader));
-        } catch (ClassNotFoundException e) {
-            Debug.logError(e, "Could not find class for type: " + type, module);
-            return null;
-        }
-    }
-
     @Override
     public T getObject(MethodContext methodContext) {
         T fieldVal = null;
-
         if (!mapAcsr.isEmpty()) {
             Map<String, ? extends Object> fromMap = mapAcsr.get(methodContext);
             if (fromMap == null) {
@@ -78,12 +63,27 @@ public class FieldObject<T> extends Meth
             // no map name, try the env
             fieldVal = fieldAcsr.get(methodContext);
         }
-
         if (fieldVal == null) {
-            if (Debug.infoOn()) Debug.logInfo("Field value not found with name " + fieldAcsr + " in Map with name " + mapAcsr + ", not getting Object value, returning null.", module);
+            if (Debug.infoOn())
+                Debug.logInfo("Field value not found with name " + fieldAcsr + " in Map with name " + mapAcsr + ", not getting Object value, returning null.", module);
             return null;
         }
-
         return fieldVal;
     }
+
+    @Override
+    public Class<T> getTypeClass(ClassLoader loader) {
+        try {
+            return UtilGenerics.cast(ObjectType.loadClass(type, loader));
+        } catch (ClassNotFoundException e) {
+            Debug.logError(e, "Could not find class for type: " + type, module);
+            return null;
+        }
+    }
+
+    /** Get the name for the type of the object */
+    @Override
+    public String getTypeName() {
+        return type;
+    }
 }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/FieldString.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/FieldString.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/FieldString.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/FieldString.java Thu Apr 19 15:09:03 2012
@@ -18,11 +18,11 @@
  *******************************************************************************/
 package org.ofbiz.minilang.method;
 
-import java.util.*;
+import java.util.Map;
 
-import org.w3c.dom.*;
-import org.ofbiz.base.util.*;
-import org.ofbiz.minilang.*;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.minilang.SimpleMethod;
+import org.w3c.dom.Element;
 
 /**
  * A type of MethodString that represents a String constant value
@@ -56,7 +56,8 @@ public class FieldString extends MethodS
         }
 
         if (fieldVal == null) {
-            if (Debug.infoOn()) Debug.logInfo("Field value not found with name " + fieldAcsr + " in Map with name " + mapAcsr + ", not getting string value", module);
+            if (Debug.infoOn())
+                Debug.logInfo("Field value not found with name " + fieldAcsr + " in Map with name " + mapAcsr + ", not getting string value", module);
             return "";
         }
 

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodContext.java Thu Apr 19 15:09:03 2012
@@ -28,8 +28,8 @@ import javax.servlet.http.HttpServletRes
 
 import javolution.util.FastMap;
 
-import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilHttp;
+import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.collections.FlexibleMapAccessor;
 import org.ofbiz.base.util.string.FlexibleStringExpander;
 import org.ofbiz.entity.Delegator;
@@ -48,47 +48,21 @@ public class MethodContext implements It
     public static final int EVENT = 1;
     public static final int SERVICE = 2;
 
-    protected int methodType;
-
+    protected Authorization authz;
+    protected DispatchContext ctx;
+    protected Delegator delegator;
+    protected LocalDispatcher dispatcher;
     protected Map<String, Object> env = FastMap.newInstance();
-    protected Map<String, Object> parameters;
-    protected Locale locale;
-    protected TimeZone timeZone;
     protected ClassLoader loader;
-    protected LocalDispatcher dispatcher;
-    protected Delegator delegator;
-    protected Authorization authz;
-    protected Security security;
-    protected GenericValue userLogin;
-
+    protected Locale locale;
+    protected int methodType;
+    protected Map<String, Object> parameters;
     protected HttpServletRequest request = null;
     protected HttpServletResponse response = null;
-
     protected Map<String, Object> results = null;
-    protected DispatchContext ctx;
-
-    public MethodContext(HttpServletRequest request, HttpServletResponse response, ClassLoader loader) {
-        this.methodType = MethodContext.EVENT;
-        this.parameters = UtilHttp.getParameterMap(request);
-        this.loader = loader;
-        this.request = request;
-        this.response = response;
-        this.locale = UtilHttp.getLocale(request);
-        this.timeZone = UtilHttp.getTimeZone(request);
-        this.dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
-        this.delegator = (Delegator) request.getAttribute("delegator");
-        this.authz = (Authorization) request.getAttribute("authz");
-        this.security = (Security) request.getAttribute("security");
-        this.userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
-
-        if (this.loader == null) {
-            try {
-                this.loader = Thread.currentThread().getContextClassLoader();
-            } catch (SecurityException e) {
-                this.loader = this.getClass().getClassLoader();
-            }
-        }
-    }
+    protected Security security;
+    protected TimeZone timeZone;
+    protected GenericValue userLogin;
 
     public MethodContext(DispatchContext ctx, Map<String, ? extends Object> context, ClassLoader loader) {
         this.methodType = MethodContext.SERVICE;
@@ -102,7 +76,28 @@ public class MethodContext implements It
         this.security = ctx.getSecurity();
         this.results = FastMap.newInstance();
         this.userLogin = (GenericValue) context.get("userLogin");
+        if (this.loader == null) {
+            try {
+                this.loader = Thread.currentThread().getContextClassLoader();
+            } catch (SecurityException e) {
+                this.loader = this.getClass().getClassLoader();
+            }
+        }
+    }
 
+    public MethodContext(HttpServletRequest request, HttpServletResponse response, ClassLoader loader) {
+        this.methodType = MethodContext.EVENT;
+        this.parameters = UtilHttp.getParameterMap(request);
+        this.loader = loader;
+        this.request = request;
+        this.response = response;
+        this.locale = UtilHttp.getLocale(request);
+        this.timeZone = UtilHttp.getTimeZone(request);
+        this.dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
+        this.delegator = (Delegator) request.getAttribute("delegator");
+        this.authz = (Authorization) request.getAttribute("authz");
+        this.security = (Security) request.getAttribute("security");
+        this.userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
         if (this.loader == null) {
             try {
                 this.loader = Thread.currentThread().getContextClassLoader();
@@ -113,9 +108,8 @@ public class MethodContext implements It
     }
 
     /**
-     * This is a very simple constructor which assumes the needed objects (dispatcher,
-     * delegator, authz, security, request, response, etc) are in the context.
-     * Will result in calling method as a service or event, as specified.
+     * This is a very simple constructor which assumes the needed objects (dispatcher, delegator, authz, security, request, response, etc) are in the context. Will result in calling method as a
+     * service or event, as specified.
      */
     public MethodContext(Map<String, ? extends Object> context, ClassLoader loader, int methodType) {
         this.methodType = methodType;
@@ -128,27 +122,31 @@ public class MethodContext implements It
         this.authz = (Authorization) context.get("authz");
         this.security = (Security) context.get("security");
         this.userLogin = (GenericValue) context.get("userLogin");
-
         if (methodType == MethodContext.EVENT) {
             this.request = (HttpServletRequest) context.get("request");
             this.response = (HttpServletResponse) context.get("response");
-            if (this.locale == null) this.locale = UtilHttp.getLocale(request);
-            if (this.timeZone == null) this.timeZone = UtilHttp.getTimeZone(request);
-
-            //make sure the delegator and other objects are in place, getting from
+            if (this.locale == null)
+                this.locale = UtilHttp.getLocale(request);
+            if (this.timeZone == null)
+                this.timeZone = UtilHttp.getTimeZone(request);
+            // make sure the delegator and other objects are in place, getting from
             // request if necessary; assumes this came through the ControlServlet
             // or something similar
             if (this.request != null) {
-                if (this.dispatcher == null) this.dispatcher = (LocalDispatcher) this.request.getAttribute("dispatcher");
-                if (this.delegator == null) this.delegator = (Delegator) this.request.getAttribute("delegator");
-                if (this.authz == null) this.authz = (Authorization) this.request.getAttribute("authz");
-                if (this.security == null) this.security = (Security) this.request.getAttribute("security");
-                if (this.userLogin == null) this.userLogin = (GenericValue) this.request.getSession().getAttribute("userLogin");
+                if (this.dispatcher == null)
+                    this.dispatcher = (LocalDispatcher) this.request.getAttribute("dispatcher");
+                if (this.delegator == null)
+                    this.delegator = (Delegator) this.request.getAttribute("delegator");
+                if (this.authz == null)
+                    this.authz = (Authorization) this.request.getAttribute("authz");
+                if (this.security == null)
+                    this.security = (Security) this.request.getAttribute("security");
+                if (this.userLogin == null)
+                    this.userLogin = (GenericValue) this.request.getSession().getAttribute("userLogin");
             }
         } else if (methodType == MethodContext.SERVICE) {
             this.results = FastMap.newInstance();
         }
-
         if (this.loader == null) {
             try {
                 this.loader = Thread.currentThread().getContextClassLoader();
@@ -158,168 +156,171 @@ public class MethodContext implements It
         }
     }
 
-    public void setErrorReturn(String errMsg, SimpleMethod simpleMethod) {
-        if (getMethodType() == MethodContext.EVENT) {
-            putEnv(simpleMethod.getEventErrorMessageName(), errMsg);
-            putEnv(simpleMethod.getEventResponseCodeName(), simpleMethod.getDefaultErrorCode());
-        } else if (getMethodType() == MethodContext.SERVICE) {
-            putEnv(simpleMethod.getServiceErrorMessageName(), errMsg);
-            putEnv(simpleMethod.getServiceResponseMessageName(), simpleMethod.getDefaultErrorCode());
-        }
+    public String expandString(FlexibleStringExpander originalExdr) {
+        return originalExdr.expandString(this.env);
     }
 
-    public int getMethodType() {
-        return this.methodType;
+    /** Expands environment variables delimited with ${} */
+    public String expandString(String original) {
+        return FlexibleStringExpander.expandString(original, this.env);
     }
 
-    public Map<String, Object> getEnvMap() {
-        return this.env;
+    public Authorization getAuthz() {
+        return this.authz;
     }
 
-    /** Gets the named value from the environment. Supports the "." (dot) syntax to access Map members and the
-     * "[]" (bracket) syntax to access List entries. This value is expanded, supporting the insertion of other
-     * environment values using the "${}" notation.
-     *
-     * @param key The name of the environment value to get. Can contain "." and "[]" syntax elements as described above.
-     * @return The environment value if found, otherwise null.
-     */
-    public <T> T getEnv(String key) {
-        String ekey = this.expandString(key);
-        FlexibleMapAccessor<T> fma = FlexibleMapAccessor.getInstance(ekey);
-        return this.getEnv(fma);
+    public Delegator getDelegator() {
+        return this.delegator;
+    }
+
+    public LocalDispatcher getDispatcher() {
+        return this.dispatcher;
     }
+
     public <T> T getEnv(FlexibleMapAccessor<T> fma) {
         return fma.get(this.env);
     }
 
-    /** Puts the named value in the environment. Supports the "." (dot) syntax to access Map members and the
-     * "[]" (bracket) syntax to access List entries.
-     * If the brackets for a list are empty the value will be appended to end of the list,
-     * otherwise the value will be set in the position of the number in the brackets.
-     * If a "+" (plus sign) is included inside the square brackets before the index
-     * number the value will inserted/added at that index instead of set at that index.
-     * This value is expanded, supporting the insertion of other
-     * environment values using the "${}" notation.
-     *
-     * @param key The name of the environment value to get. Can contain "." syntax elements as described above.
-     * @param value The value to set in the named environment location.
+    /**
+     * Gets the named value from the environment. Supports the "." (dot) syntax to access Map members and the "[]" (bracket) syntax to access List entries. This value is expanded, supporting the
+     * insertion of other environment values using the "${}" notation.
+     * 
+     * @param key
+     *            The name of the environment value to get. Can contain "." and "[]" syntax elements as described above.
+     * @return The environment value if found, otherwise null.
      */
-    public <T> void putEnv(String key, T value) {
+    public <T> T getEnv(String key) {
         String ekey = this.expandString(key);
         FlexibleMapAccessor<T> fma = FlexibleMapAccessor.getInstance(ekey);
-        this.putEnv(fma, value);
-    }
-    public <T> void putEnv(FlexibleMapAccessor<T> fma, T value) {
-        fma.put(this.env, value);
+        return this.getEnv(fma);
     }
 
-    /** Calls putEnv for each entry in the Map, thus allowing for the additional flexibility in naming
-     * supported in that method.
-     */
-    public void putAllEnv(Map<String, ? extends Object> values) {
-        for (Map.Entry<String, ? extends Object> entry: values.entrySet()) {
-            this.putEnv(entry.getKey(), entry.getValue());
-        }
+    public Iterator<Map.Entry<String, Object>> getEnvEntryIterator() {
+        return this.env.entrySet().iterator();
     }
 
-    /** Removes the named value from the environment. Supports the "." (dot) syntax to access Map members and the
-     * "[]" (bracket) syntax to access List entries. This value is expanded, supporting the insertion of other
-     * environment values using the "${}" notation.
-     *
-     * @param key The name of the environment value to get. Can contain "." syntax elements as described above.
-     */
-    public <T> T removeEnv(String key) {
-        String ekey = this.expandString(key);
-        FlexibleMapAccessor<T> fma = FlexibleMapAccessor.getInstance(ekey);
-        return this.removeEnv(fma);
+    public Map<String, Object> getEnvMap() {
+        return this.env;
     }
-    public <T> T removeEnv(FlexibleMapAccessor<T> fma) {
-        return fma.remove(this.env);
+
+    public ClassLoader getLoader() {
+        return this.loader;
     }
 
-    public Iterator<Map.Entry<String, Object>> iterator() {
-        return this.env.entrySet().iterator();
+    public Locale getLocale() {
+        return this.locale;
     }
 
-    public Iterator<Map.Entry<String, Object>> getEnvEntryIterator() {
-        return this.env.entrySet().iterator();
+    public int getMethodType() {
+        return this.methodType;
     }
 
     public Object getParameter(String key) {
         return this.parameters.get(key);
     }
 
-    public void putParameter(String key, Object value) {
-        this.parameters.put(key, value);
-    }
-
     public Map<String, Object> getParameters() {
         return this.parameters;
     }
 
-    public ClassLoader getLoader() {
-        return this.loader;
+    public HttpServletRequest getRequest() {
+        return this.request;
     }
 
-    public Locale getLocale() {
-        return this.locale;
+    public HttpServletResponse getResponse() {
+        return this.response;
     }
 
-    public TimeZone getTimeZone() {
-        return this.timeZone;
+    public Object getResult(String key) {
+        return this.results.get(key);
     }
 
-    public LocalDispatcher getDispatcher() {
-        return this.dispatcher;
+    public Map<String, Object> getResults() {
+        return this.results;
     }
 
-    public Delegator getDelegator() {
-        return this.delegator;
+    public Security getSecurity() {
+        return this.security;
     }
 
-    public Authorization getAuthz() {
-        return this.authz;
+    public TimeZone getTimeZone() {
+        return this.timeZone;
     }
 
-    public Security getSecurity() {
-        return this.security;
+    public GenericValue getUserLogin() {
+        return this.userLogin;
     }
 
-    public HttpServletRequest getRequest() {
-        return this.request;
+    public Iterator<Map.Entry<String, Object>> iterator() {
+        return this.env.entrySet().iterator();
     }
 
-    public HttpServletResponse getResponse() {
-        return this.response;
+    /**
+     * Calls putEnv for each entry in the Map, thus allowing for the additional flexibility in naming supported in that method.
+     */
+    public void putAllEnv(Map<String, ? extends Object> values) {
+        for (Map.Entry<String, ? extends Object> entry : values.entrySet()) {
+            this.putEnv(entry.getKey(), entry.getValue());
+        }
     }
 
-    public GenericValue getUserLogin() {
-        return this.userLogin;
+    public <T> void putEnv(FlexibleMapAccessor<T> fma, T value) {
+        fma.put(this.env, value);
     }
 
-    public void setUserLogin(GenericValue userLogin, String userLoginEnvName) {
-        this.userLogin = userLogin;
-        this.putEnv(userLoginEnvName, userLogin);
+    /**
+     * Puts the named value in the environment. Supports the "." (dot) syntax to access Map members and the "[]" (bracket) syntax to access List entries. If the brackets for a list are empty the value
+     * will be appended to end of the list, otherwise the value will be set in the position of the number in the brackets. If a "+" (plus sign) is included inside the square brackets before the index
+     * number the value will inserted/added at that index instead of set at that index. This value is expanded, supporting the insertion of other environment values using the "${}" notation.
+     * 
+     * @param key
+     *            The name of the environment value to get. Can contain "." syntax elements as described above.
+     * @param value
+     *            The value to set in the named environment location.
+     */
+    public <T> void putEnv(String key, T value) {
+        String ekey = this.expandString(key);
+        FlexibleMapAccessor<T> fma = FlexibleMapAccessor.getInstance(ekey);
+        this.putEnv(fma, value);
     }
 
-    public Object getResult(String key) {
-        return this.results.get(key);
+    public void putParameter(String key, Object value) {
+        this.parameters.put(key, value);
     }
 
     public void putResult(String key, Object value) {
         this.results.put(key, value);
     }
 
-    public Map<String, Object> getResults() {
-        return this.results;
+    public <T> T removeEnv(FlexibleMapAccessor<T> fma) {
+        return fma.remove(this.env);
     }
 
-    /** Expands environment variables delimited with ${} */
-    public String expandString(String original) {
-        return FlexibleStringExpander.expandString(original, this.env);
+    /**
+     * Removes the named value from the environment. Supports the "." (dot) syntax to access Map members and the "[]" (bracket) syntax to access List entries. This value is expanded, supporting the
+     * insertion of other environment values using the "${}" notation.
+     * 
+     * @param key
+     *            The name of the environment value to get. Can contain "." syntax elements as described above.
+     */
+    public <T> T removeEnv(String key) {
+        String ekey = this.expandString(key);
+        FlexibleMapAccessor<T> fma = FlexibleMapAccessor.getInstance(ekey);
+        return this.removeEnv(fma);
     }
 
-    public String expandString(FlexibleStringExpander originalExdr) {
-        return originalExdr.expandString(this.env);
+    public void setErrorReturn(String errMsg, SimpleMethod simpleMethod) {
+        if (getMethodType() == MethodContext.EVENT) {
+            putEnv(simpleMethod.getEventErrorMessageName(), errMsg);
+            putEnv(simpleMethod.getEventResponseCodeName(), simpleMethod.getDefaultErrorCode());
+        } else if (getMethodType() == MethodContext.SERVICE) {
+            putEnv(simpleMethod.getServiceErrorMessageName(), errMsg);
+            putEnv(simpleMethod.getServiceResponseMessageName(), simpleMethod.getDefaultErrorCode());
+        }
+    }
+
+    public void setUserLogin(GenericValue userLogin, String userLoginEnvName) {
+        this.userLogin = userLogin;
+        this.putEnv(userLoginEnvName, userLogin);
     }
 }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodObject.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodObject.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodObject.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodObject.java Thu Apr 19 15:09:03 2012
@@ -18,8 +18,8 @@
  *******************************************************************************/
 package org.ofbiz.minilang.method;
 
-import org.w3c.dom.*;
-import org.ofbiz.minilang.*;
+import org.ofbiz.minilang.SimpleMethod;
+import org.w3c.dom.Element;
 
 /**
  * A single Object value to be used as a parameter or whatever
@@ -32,12 +32,12 @@ public abstract class MethodObject<T> {
         this.simpleMethod = simpleMethod;
     }
 
-    /** Get the name for the type of the object */
-    public abstract String getTypeName();
+    /** Get the Object value */
+    public abstract T getObject(MethodContext methodContext);
 
     /** Get the Class for the type of the object */
     public abstract Class<T> getTypeClass(ClassLoader loader);
 
-    /** Get the Object value */
-    public abstract T getObject(MethodContext methodContext);
+    /** Get the name for the type of the object */
+    public abstract String getTypeName();
 }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodOperation.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodOperation.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodOperation.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodOperation.java Thu Apr 19 15:09:03 2012
@@ -23,24 +23,13 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.w3c.dom.*;
-
-import org.ofbiz.minilang.*;
+import org.ofbiz.minilang.SimpleMethod;
+import org.w3c.dom.Element;
 
 /**
  * A single operation, does the specified operation on the given field
  */
 public abstract class MethodOperation {
-    public interface Factory<M extends MethodOperation> {
-        M createMethodOperation(Element element, SimpleMethod simpleMethod);
-        String getName();
-    }
-
-    @Retention(RetentionPolicy.RUNTIME)
-    @Target(ElementType.TYPE)
-    public @interface DeprecatedOperation {
-        String value();
-    }
 
     protected SimpleMethod simpleMethod;
 
@@ -48,15 +37,29 @@ public abstract class MethodOperation {
         this.simpleMethod = simpleMethod;
     }
 
+    /** Execute the operation; if false is returned then no further operations will be executed */
+    public abstract boolean exec(MethodContext methodContext);
+
+    /** Create an expanded string representation of the operation, is for the current context */
+    public abstract String expandedString(MethodContext methodContext);
+
     public SimpleMethod getSimpleMethod() {
         return this.simpleMethod;
     }
 
-    /** Execute the operation; if false is returned then no further operations will be executed */
-    public abstract boolean exec(MethodContext methodContext);
-
     /** Create a raw string representation of the operation, would be similar to original XML */
     public abstract String rawString();
-    /** Create an expanded string representation of the operation, is for the current context */
-    public abstract String expandedString(MethodContext methodContext);
+
+    @Retention(RetentionPolicy.RUNTIME)
+    @Target(ElementType.TYPE)
+    public @interface DeprecatedOperation {
+        String value();
+    }
+
+    public interface Factory<M extends MethodOperation> {
+
+        M createMethodOperation(Element element, SimpleMethod simpleMethod);
+
+        String getName();
+    }
 }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodString.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodString.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodString.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/MethodString.java Thu Apr 19 15:09:03 2012
@@ -18,8 +18,8 @@
  *******************************************************************************/
 package org.ofbiz.minilang.method;
 
-import org.w3c.dom.*;
-import org.ofbiz.minilang.*;
+import org.ofbiz.minilang.SimpleMethod;
+import org.w3c.dom.Element;
 
 /**
  * A single String value, generally meant to be combined with others

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/StringObject.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/StringObject.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/StringObject.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/StringObject.java Thu Apr 19 15:09:03 2012
@@ -18,18 +18,18 @@
  *******************************************************************************/
 package org.ofbiz.minilang.method;
 
-import org.w3c.dom.*;
-
-import org.ofbiz.base.util.*;
-import org.ofbiz.minilang.*;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.UtilXml;
+import org.ofbiz.minilang.SimpleMethod;
+import org.w3c.dom.Element;
 
 /**
  * A type of MethodObject that represents a String constant value to be used as an Object
  */
 public class StringObject extends MethodObject<String> {
 
-    String value;
     String cdataValue;
+    String value;
 
     public StringObject(Element element, SimpleMethod simpleMethod) {
         super(element, simpleMethod);
@@ -37,25 +37,12 @@ public class StringObject extends Method
         cdataValue = UtilXml.elementValue(element);
     }
 
-    /** Get the name for the type of the object */
-    @Override
-    public String getTypeName() {
-        return "java.lang.String";
-    }
-
-    @Override
-    public Class<String> getTypeClass(ClassLoader loader) {
-        return java.lang.String.class;
-    }
-
     @Override
     public String getObject(MethodContext methodContext) {
         String value = methodContext.expandString(this.value);
         String cdataValue = methodContext.expandString(this.cdataValue);
-
         boolean valueExists = UtilValidate.isNotEmpty(value);
         boolean cdataValueExists = UtilValidate.isNotEmpty(cdataValue);
-
         if (valueExists && cdataValueExists) {
             return value + cdataValue;
         } else {
@@ -66,4 +53,15 @@ public class StringObject extends Method
             }
         }
     }
+
+    @Override
+    public Class<String> getTypeClass(ClassLoader loader) {
+        return java.lang.String.class;
+    }
+
+    /** Get the name for the type of the object */
+    @Override
+    public String getTypeName() {
+        return "java.lang.String";
+    }
 }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/StringString.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/StringString.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/StringString.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/StringString.java Thu Apr 19 15:09:03 2012
@@ -18,17 +18,18 @@
  *******************************************************************************/
 package org.ofbiz.minilang.method;
 
-import org.w3c.dom.*;
-import org.ofbiz.base.util.*;
-import org.ofbiz.minilang.*;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.UtilXml;
+import org.ofbiz.minilang.SimpleMethod;
+import org.w3c.dom.Element;
 
 /**
  * A type of MethodString that represents a String constant value
  */
 public class StringString extends MethodString {
 
-    String value;
     String cdataValue;
+    String value;
 
     public StringString(Element element, SimpleMethod simpleMethod) {
         super(element, simpleMethod);
@@ -40,10 +41,8 @@ public class StringString extends Method
     public String getString(MethodContext methodContext) {
         String value = methodContext.expandString(this.value);
         String cdataValue = methodContext.expandString(this.cdataValue);
-
         boolean valueExists = UtilValidate.isNotEmpty(value);
         boolean cdataValueExists = UtilValidate.isNotEmpty(cdataValue);
-
         if (valueExists && cdataValueExists) {
             return value + cdataValue;
         } else {

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/AddError.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/AddError.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/AddError.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/AddError.java Thu Apr 19 15:09:03 2012
@@ -18,41 +18,34 @@
  *******************************************************************************/
 package org.ofbiz.minilang.method.callops;
 
-import java.util.*;
+import java.util.List;
 
 import javolution.util.FastList;
 
-import org.w3c.dom.*;
-import org.ofbiz.base.util.*;
-import org.ofbiz.minilang.*;
-import org.ofbiz.minilang.method.*;
+import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.UtilXml;
+import org.ofbiz.minilang.SimpleMethod;
+import org.ofbiz.minilang.method.ContextAccessor;
+import org.ofbiz.minilang.method.MethodContext;
+import org.ofbiz.minilang.method.MethodOperation;
+import org.w3c.dom.Element;
 
 /**
  * Adds the fail-message or fail-property value to the error-list.
  */
 public class AddError extends MethodOperation {
-    public static final class AddErrorFactory implements Factory<AddError> {
-        public AddError createMethodOperation(Element element, SimpleMethod simpleMethod) {
-            return new AddError(element, simpleMethod);
-        }
 
-        public String getName() {
-            return "add-error";
-        }
-    }
+    ContextAccessor<List<Object>> errorListAcsr;
+    boolean isProperty = false;
     String message = null;
     String propertyResource = null;
-    boolean isProperty = false;
-
-    ContextAccessor<List<Object>> errorListAcsr;
 
     public AddError(Element element, SimpleMethod simpleMethod) {
         super(element, simpleMethod);
         errorListAcsr = new ContextAccessor<List<Object>>(element.getAttribute("error-list-name"), "error_list");
-
         Element failMessage = UtilXml.firstChildElement(element, "fail-message");
         Element failProperty = UtilXml.firstChildElement(element, "fail-property");
-
         if (failMessage != null) {
             this.message = failMessage.getAttribute("message");
             this.isProperty = false;
@@ -63,50 +56,53 @@ public class AddError extends MethodOper
         }
     }
 
-    @Override
-    public boolean exec(MethodContext methodContext) {
-
-        List<Object> messages = errorListAcsr.get(methodContext);
-        if (messages == null) {
-            messages = FastList.newInstance();
-            errorListAcsr.put(methodContext, messages);
-        }
-
-        this.addMessage(messages, methodContext.getLoader(), methodContext);
-        return true;
-    }
-
     public void addMessage(List<Object> messages, ClassLoader loader, MethodContext methodContext) {
         String message = methodContext.expandString(this.message);
         String propertyResource = methodContext.expandString(this.propertyResource);
-
         if (!isProperty && message != null) {
             messages.add(message);
-            // if (Debug.infoOn()) Debug.logInfo("[SimpleMapOperation.addMessage] Adding message: " + message, module);
         } else if (isProperty && propertyResource != null && message != null) {
-            //String propMsg = UtilProperties.getPropertyValue(UtilURL.fromResource(propertyResource, loader), message);
             String propMsg = UtilProperties.getMessage(propertyResource, message, methodContext.getEnvMap(), methodContext.getLocale());
-
             if (UtilValidate.isEmpty(propMsg)) {
                 messages.add("Simple Method error occurred, but no message was found, sorry.");
             } else {
                 messages.add(methodContext.expandString(propMsg));
             }
-            // if (Debug.infoOn()) Debug.logInfo("[SimpleMapOperation.addMessage] Adding property message: " + propMsg, module);
         } else {
             messages.add("Simple Method error occurred, but no message was found, sorry.");
-            // if (Debug.infoOn()) Debug.logInfo("[SimpleMapOperation.addMessage] ERROR: No message found", module);
         }
     }
 
     @Override
-    public String rawString() {
-        // TODO: something more than the empty tag
-        return "<add-error/>";
+    public boolean exec(MethodContext methodContext) {
+        List<Object> messages = errorListAcsr.get(methodContext);
+        if (messages == null) {
+            messages = FastList.newInstance();
+            errorListAcsr.put(methodContext, messages);
+        }
+        this.addMessage(messages, methodContext.getLoader(), methodContext);
+        return true;
     }
+
     @Override
     public String expandedString(MethodContext methodContext) {
         // TODO: something more than a stub/dummy
         return this.rawString();
     }
+
+    @Override
+    public String rawString() {
+        // TODO: something more than the empty tag
+        return "<add-error/>";
+    }
+
+    public static final class AddErrorFactory implements Factory<AddError> {
+        public AddError createMethodOperation(Element element, SimpleMethod simpleMethod) {
+            return new AddError(element, simpleMethod);
+        }
+
+        public String getName() {
+            return "add-error";
+        }
+    }
 }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallBsh.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallBsh.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallBsh.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallBsh.java Thu Apr 19 15:09:03 2012
@@ -18,68 +18,64 @@
  *******************************************************************************/
 package org.ofbiz.minilang.method.callops;
 
-import java.io.*;
-import java.util.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+import java.util.Map;
 
 import javolution.util.FastList;
 
-import org.w3c.dom.*;
-import org.ofbiz.base.util.*;
-import org.ofbiz.minilang.*;
-import org.ofbiz.minilang.method.*;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilGenerics;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.UtilXml;
+import org.ofbiz.minilang.SimpleMethod;
+import org.ofbiz.minilang.method.ContextAccessor;
+import org.ofbiz.minilang.method.MethodContext;
+import org.ofbiz.minilang.method.MethodOperation;
+import org.w3c.dom.Element;
 
-import bsh.*;
+import bsh.EvalError;
+import bsh.Interpreter;
 
 /**
  * Simple class to wrap messages that come either from a straight string or a properties file
  */
 public class CallBsh extends MethodOperation {
-    public static final class CallBshFactory implements Factory<CallBsh> {
-        public CallBsh createMethodOperation(Element element, SimpleMethod simpleMethod) {
-            return new CallBsh(element, simpleMethod);
-        }
-
-        public String getName() {
-            return "call-bsh";
-        }
-    }
 
     public static final String module = CallBsh.class.getName();
-
     public static final int bufferLength = 4096;
 
+    ContextAccessor<List<Object>> errorListAcsr;
     String inline = null;
     String resource = null;
-    ContextAccessor<List<Object>> errorListAcsr;
 
     public CallBsh(Element element, SimpleMethod simpleMethod) {
         super(element, simpleMethod);
         inline = UtilXml.elementValue(element);
         resource = element.getAttribute("resource");
         errorListAcsr = new ContextAccessor<List<Object>>(element.getAttribute("error-list-name"), "error_list");
-
-        if (UtilValidate.isNotEmpty(inline)) {// pre-parse/compile inlined bsh, only accessed here
+        if (UtilValidate.isNotEmpty(inline)) {
+            // pre-parse/compile inlined bsh, only accessed here
         }
     }
 
     @Override
     public boolean exec(MethodContext methodContext) {
         List<Object> messages = errorListAcsr.get(methodContext);
-
         if (messages == null) {
             messages = FastList.newInstance();
             errorListAcsr.put(methodContext, messages);
         }
-
         Interpreter bsh = new Interpreter();
         bsh.setClassLoader(methodContext.getLoader());
-
         try {
             // setup environment
-            for (Map.Entry<String, Object> entry: methodContext) {
+            for (Map.Entry<String, Object> entry : methodContext) {
                 bsh.set(entry.getKey(), entry.getValue());
             }
-
             // run external, from resource, first if resource specified
             if (UtilValidate.isNotEmpty(resource)) {
                 String resource = methodContext.expandString(this.resource);
@@ -92,19 +88,15 @@ public class CallBsh extends MethodOpera
                     try {
                         reader = new BufferedReader(new InputStreamReader(is));
                         StringBuilder outSb = new StringBuilder();
-
                         String tempStr = null;
-
                         while ((tempStr = reader.readLine()) != null) {
                             outSb.append(tempStr);
                             outSb.append('\n');
                         }
-
                         Object resourceResult = bsh.eval(outSb.toString());
-
                         // if map is returned, copy values into env
                         if ((resourceResult != null) && (resourceResult instanceof Map<?, ?>)) {
-                            methodContext.putAllEnv(UtilGenerics.<String, Object>checkMap(resourceResult));
+                            methodContext.putAllEnv(UtilGenerics.<String, Object> checkMap(resourceResult));
                         }
                     } catch (IOException e) {
                         messages.add("IO error loading bsh resource: " + e.getMessage());
@@ -119,33 +111,43 @@ public class CallBsh extends MethodOpera
                     }
                 }
             }
-
-            if (Debug.verboseOn()) Debug.logVerbose("Running inline BSH script: " + inline, module);
+            if (Debug.verboseOn())
+                Debug.logVerbose("Running inline BSH script: " + inline, module);
             // run inlined second to it can override the one from the property
             Object inlineResult = bsh.eval(inline);
-            if (Debug.verboseOn()) Debug.logVerbose("Result of inline BSH script: " + inlineResult, module);
-
+            if (Debug.verboseOn())
+                Debug.logVerbose("Result of inline BSH script: " + inlineResult, module);
             // if map is returned, copy values into env
             if ((inlineResult != null) && (inlineResult instanceof Map<?, ?>)) {
-                methodContext.putAllEnv(UtilGenerics.<String, Object>checkMap(inlineResult));
+                methodContext.putAllEnv(UtilGenerics.<String, Object> checkMap(inlineResult));
             }
         } catch (EvalError e) {
             Debug.logError(e, "BeanShell execution caused an error", module);
             messages.add("BeanShell execution caused an error: " + e.getMessage());
         }
-
         // always return true, error messages just go on the error list
         return true;
     }
 
     @Override
+    public String expandedString(MethodContext methodContext) {
+        // TODO: something more than a stub/dummy
+        return this.rawString();
+    }
+
+    @Override
     public String rawString() {
         // TODO: something more than the empty tag
         return "<call-bsh/>";
     }
-    @Override
-    public String expandedString(MethodContext methodContext) {
-        // TODO: something more than a stub/dummy
-        return this.rawString();
+
+    public static final class CallBshFactory implements Factory<CallBsh> {
+        public CallBsh createMethodOperation(Element element, SimpleMethod simpleMethod) {
+            return new CallBsh(element, simpleMethod);
+        }
+
+        public String getName() {
+            return "call-bsh";
+        }
     }
 }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallClassMethod.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallClassMethod.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallClassMethod.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallClassMethod.java Thu Apr 19 15:09:03 2012
@@ -19,60 +19,56 @@
 
 package org.ofbiz.minilang.method.callops;
 
-import java.util.*;
+import java.util.List;
+import java.util.Map;
 
 import javolution.util.FastList;
 
-import org.w3c.dom.*;
-import org.ofbiz.base.util.*;
-
-import org.ofbiz.minilang.*;
-import org.ofbiz.minilang.method.*;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.ObjectType;
+import org.ofbiz.base.util.UtilXml;
+import org.ofbiz.minilang.SimpleMethod;
+import org.ofbiz.minilang.method.ContextAccessor;
+import org.ofbiz.minilang.method.FieldObject;
+import org.ofbiz.minilang.method.MethodContext;
+import org.ofbiz.minilang.method.MethodObject;
+import org.ofbiz.minilang.method.MethodOperation;
+import org.ofbiz.minilang.method.StringObject;
+import org.w3c.dom.Element;
 
 /**
  * Calls a Java class method using the given fields as parameters
  */
 public class CallClassMethod extends MethodOperation {
-    public static final class CallClassMethodFactory implements Factory<CallClassMethod> {
-        public CallClassMethod createMethodOperation(Element element, SimpleMethod simpleMethod) {
-            return new CallClassMethod(element, simpleMethod);
-        }
-
-        public String getName() {
-            return "call-class-method";
-        }
-    }
 
     public static final String module = CallClassMethod.class.getName();
 
     String className;
     String methodName;
-    ContextAccessor<Object> retFieldAcsr;
-    ContextAccessor<Map<String, Object>> retMapAcsr;
-
     /** A list of MethodObject objects to use as the method call parameters */
     List<MethodObject<?>> parameters;
+    ContextAccessor<Object> retFieldAcsr;
+    ContextAccessor<Map<String, Object>> retMapAcsr;
 
     public CallClassMethod(Element element, SimpleMethod simpleMethod) {
         super(element, simpleMethod);
         className = element.getAttribute("class-name");
         methodName = element.getAttribute("method-name");
-        // the schema for this element now just has the "ret-field" attribute, though the old "ret-field-name" and "ret-map-name" pair is still supported
+        // the schema for this element now just has the "ret-field" attribute, though the
+        // old "ret-field-name" and "ret-map-name" pair is still supported
         retFieldAcsr = new ContextAccessor<Object>(element.getAttribute("ret-field"), element.getAttribute("ret-field-name"));
         retMapAcsr = new ContextAccessor<Map<String, Object>>(element.getAttribute("ret-map-name"));
-
         List<? extends Element> parameterElements = UtilXml.childElementList(element);
         if (parameterElements.size() > 0) {
             parameters = FastList.newInstance();
-
-            for (Element parameterElement: parameterElements) {
+            for (Element parameterElement : parameterElements) {
                 MethodObject<?> methodObject = null;
                 if ("string".equals(parameterElement.getNodeName())) {
                     methodObject = new StringObject(parameterElement, simpleMethod);
                 } else if ("field".equals(parameterElement.getNodeName())) {
                     methodObject = new FieldObject<Object>(parameterElement, simpleMethod);
                 } else {
-                    //whoops, invalid tag here, print warning
+                    // whoops, invalid tag here, print warning
                     Debug.logWarning("Found an unsupported tag under the call-object-method tag: " + parameterElement.getNodeName() + "; ignoring", module);
                 }
                 if (methodObject != null) {
@@ -86,7 +82,6 @@ public class CallClassMethod extends Met
     public boolean exec(MethodContext methodContext) {
         String className = methodContext.expandString(this.className);
         String methodName = methodContext.expandString(this.methodName);
-
         Class<?> methodClass = null;
         try {
             methodClass = ObjectType.loadClass(className, methodContext.getLoader());
@@ -97,18 +92,28 @@ public class CallClassMethod extends Met
             methodContext.setErrorReturn(errMsg, simpleMethod);
             return false;
         }
-
         return CallObjectMethod.callMethod(simpleMethod, methodContext, parameters, methodClass, null, methodName, retFieldAcsr, retMapAcsr);
     }
 
     @Override
+    public String expandedString(MethodContext methodContext) {
+        // TODO: something more than a stub/dummy
+        return this.rawString();
+    }
+
+    @Override
     public String rawString() {
         // TODO: something more than the empty tag
         return "<call-class-method/>";
     }
-    @Override
-    public String expandedString(MethodContext methodContext) {
-        // TODO: something more than a stub/dummy
-        return this.rawString();
+
+    public static final class CallClassMethodFactory implements Factory<CallClassMethod> {
+        public CallClassMethod createMethodOperation(Element element, SimpleMethod simpleMethod) {
+            return new CallClassMethod(element, simpleMethod);
+        }
+
+        public String getName() {
+            return "call-class-method";
+        }
     }
 }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallObjectMethod.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallObjectMethod.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallObjectMethod.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallObjectMethod.java Thu Apr 19 15:09:03 2012
@@ -18,120 +18,41 @@
  *******************************************************************************/
 package org.ofbiz.minilang.method.callops;
 
-import java.lang.reflect.*;
-import java.util.*;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Map;
 
 import javolution.util.FastList;
 import javolution.util.FastMap;
 
-import org.w3c.dom.*;
-import org.ofbiz.base.util.*;
-
-import org.ofbiz.minilang.*;
-import org.ofbiz.minilang.method.*;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilXml;
+import org.ofbiz.minilang.SimpleMethod;
+import org.ofbiz.minilang.method.ContextAccessor;
+import org.ofbiz.minilang.method.FieldObject;
+import org.ofbiz.minilang.method.MethodContext;
+import org.ofbiz.minilang.method.MethodObject;
+import org.ofbiz.minilang.method.MethodOperation;
+import org.ofbiz.minilang.method.StringObject;
+import org.w3c.dom.Element;
 
 /**
  * Calls a Java object method using the given fields as parameters
  */
 public class CallObjectMethod extends MethodOperation {
-    public static final class CallObjectMethodFactory implements Factory<CallObjectMethod> {
-        public CallObjectMethod createMethodOperation(Element element, SimpleMethod simpleMethod) {
-            return new CallObjectMethod(element, simpleMethod);
-        }
-
-        public String getName() {
-            return "call-object-method";
-        }
-    }
 
     public static final String module = CallClassMethod.class.getName();
 
-    ContextAccessor<Object> objFieldAcsr;
-    ContextAccessor<Map<String, ? extends Object>> objMapAcsr;
-    String methodName;
-    ContextAccessor<Object> retFieldAcsr;
-    ContextAccessor<Map<String, Object>> retMapAcsr;
-
-    /** A list of MethodObject objects to use as the method call parameters */
-    List<MethodObject<?>> parameters;
-
-    public CallObjectMethod(Element element, SimpleMethod simpleMethod) {
-        super(element, simpleMethod);
-        // the schema for this element now just has the "obj-field" attribute, though the old "obj-field-name" and "obj-map-name" pair is still supported
-        objFieldAcsr = new ContextAccessor<Object>(element.getAttribute("obj-field"), element.getAttribute("obj-field-name"));
-        objMapAcsr = new ContextAccessor<Map<String, ? extends Object>>(element.getAttribute("obj-map-name"));
-
-        methodName = element.getAttribute("method-name");
-
-        // the schema for this element now just has the "ret-field" attribute, though the old "ret-field-name" and "ret-map-name" pair is still supported
-        retFieldAcsr = new ContextAccessor<Object>(element.getAttribute("ret-field"), element.getAttribute("ret-field-name"));
-        retMapAcsr = new ContextAccessor<Map<String, Object>>(element.getAttribute("ret-map-name"));
-
-        List<? extends Element> parameterElements = UtilXml.childElementList(element);
-        if (parameterElements.size() > 0) {
-            parameters = FastList.newInstance();
-
-            for (Element parameterElement: parameterElements) {
-                MethodObject<?> methodObject = null;
-                if ("string".equals(parameterElement.getNodeName())) {
-                    methodObject = new StringObject(parameterElement, simpleMethod);
-                } else if ("field".equals(parameterElement.getNodeName())) {
-                    methodObject = new FieldObject<Object>(parameterElement, simpleMethod);
-                } else {
-                    //whoops, invalid tag here, print warning
-                    Debug.logWarning("Found an unsupported tag under the call-object-method tag: " + parameterElement.getNodeName() + "; ignoring", module);
-                }
-                if (methodObject != null) {
-                    parameters.add(methodObject);
-                }
-            }
-        }
-    }
-
-    @Override
-    public boolean exec(MethodContext methodContext) {
-        String methodName = methodContext.expandString(this.methodName);
-
-        Object methodObject = null;
-        if (!objMapAcsr.isEmpty()) {
-            Map<String, ? extends Object> fromMap = objMapAcsr.get(methodContext);
-            if (fromMap == null) {
-                Debug.logWarning("Map not found with name " + objMapAcsr + ", which should contain the object to execute a method on; not executing method, rerturning error.", module);
-
-                String errMsg = "ERROR: Could not complete the " + simpleMethod.getShortDescription() + " process [Map not found with name " + objMapAcsr + ", which should contain the object to execute a method on]";
-                methodContext.setErrorReturn(errMsg, simpleMethod);
-                return false;
-            }
-            methodObject = objFieldAcsr.get(fromMap, methodContext);
-        } else {
-            // no map name, try the env
-            methodObject = objFieldAcsr.get(methodContext);
-        }
-
-        if (methodObject == null) {
-            if (Debug.infoOn()) Debug.logInfo("Object not found to execute method on with name " + objFieldAcsr + " in Map with name " + objMapAcsr + ", not executing method, rerturning error.", module);
-
-            String errMsg = "ERROR: Could not complete the " + simpleMethod.getShortDescription() + " process [Object not found to execute method on with name " + objFieldAcsr + " in Map with name " + objMapAcsr + "]";
-            methodContext.setErrorReturn(errMsg, simpleMethod);
-            return false;
-        }
-
-        Class<?> methodClass = methodObject.getClass();
-        return CallObjectMethod.callMethod(simpleMethod, methodContext, parameters, methodClass, methodObject, methodName, retFieldAcsr, retMapAcsr);
-    }
-
     public static boolean callMethod(SimpleMethod simpleMethod, MethodContext methodContext, List<MethodObject<?>> parameters, Class<?> methodClass, Object methodObject, String methodName, ContextAccessor<Object> retFieldAcsr, ContextAccessor<Map<String, Object>> retMapAcsr) {
         Object[] args = null;
         Class<?>[] parameterTypes = null;
-
         if (parameters != null) {
             args = new Object[parameters.size()];
             parameterTypes = new Class<?>[parameters.size()];
-
             int i = 0;
-            for (MethodObject<?> methodObjectDef: parameters) {
+            for (MethodObject<?> methodObjectDef : parameters) {
                 args[i] = methodObjectDef.getObject(methodContext);
-
                 Class<?> typeClass = methodObjectDef.getTypeClass(methodContext.getLoader());
                 if (typeClass == null) {
                     String errMsg = "ERROR: Could not complete the " + simpleMethod.getShortDescription() + " process [Parameter type not found with name " + methodObjectDef.getTypeName() + "]";
@@ -139,22 +60,18 @@ public class CallObjectMethod extends Me
                     methodContext.setErrorReturn(errMsg, simpleMethod);
                     return false;
                 }
-
                 parameterTypes[i] = typeClass;
                 i++;
             }
         }
-
         try {
             Method method = methodClass.getMethod(methodName, parameterTypes);
             try {
                 Object retValue = method.invoke(methodObject, args);
-
-                //if retFieldAcsr is empty, ignore return value
+                // if retFieldAcsr is empty, ignore return value
                 if (!retFieldAcsr.isEmpty()) {
                     if (!retMapAcsr.isEmpty()) {
                         Map<String, Object> retMap = retMapAcsr.get(methodContext);
-
                         if (retMap == null) {
                             retMap = FastMap.newInstance();
                             retMapAcsr.put(methodContext, retMap);
@@ -192,18 +109,95 @@ public class CallObjectMethod extends Me
             methodContext.setErrorReturn(errMsg, simpleMethod);
             return false;
         }
-
         return true;
     }
 
+    String methodName;
+    ContextAccessor<Object> objFieldAcsr;
+    ContextAccessor<Map<String, ? extends Object>> objMapAcsr;
+    /** A list of MethodObject objects to use as the method call parameters */
+    List<MethodObject<?>> parameters;
+    ContextAccessor<Object> retFieldAcsr;
+    ContextAccessor<Map<String, Object>> retMapAcsr;
+
+    public CallObjectMethod(Element element, SimpleMethod simpleMethod) {
+        super(element, simpleMethod);
+        // the schema for this element now just has the "obj-field" attribute, though the
+        // old "obj-field-name" and "obj-map-name" pair is still supported
+        objFieldAcsr = new ContextAccessor<Object>(element.getAttribute("obj-field"), element.getAttribute("obj-field-name"));
+        objMapAcsr = new ContextAccessor<Map<String, ? extends Object>>(element.getAttribute("obj-map-name"));
+        methodName = element.getAttribute("method-name");
+        // the schema for this element now just has the "ret-field" attribute, though the
+        // old "ret-field-name" and "ret-map-name" pair is still supported
+        retFieldAcsr = new ContextAccessor<Object>(element.getAttribute("ret-field"), element.getAttribute("ret-field-name"));
+        retMapAcsr = new ContextAccessor<Map<String, Object>>(element.getAttribute("ret-map-name"));
+        List<? extends Element> parameterElements = UtilXml.childElementList(element);
+        if (parameterElements.size() > 0) {
+            parameters = FastList.newInstance();
+            for (Element parameterElement : parameterElements) {
+                MethodObject<?> methodObject = null;
+                if ("string".equals(parameterElement.getNodeName())) {
+                    methodObject = new StringObject(parameterElement, simpleMethod);
+                } else if ("field".equals(parameterElement.getNodeName())) {
+                    methodObject = new FieldObject<Object>(parameterElement, simpleMethod);
+                } else {
+                    // whoops, invalid tag here, print warning
+                    Debug.logWarning("Found an unsupported tag under the call-object-method tag: " + parameterElement.getNodeName() + "; ignoring", module);
+                }
+                if (methodObject != null) {
+                    parameters.add(methodObject);
+                }
+            }
+        }
+    }
+
     @Override
-    public String rawString() {
-        // TODO: something more than the empty tag
-        return "<call-object-method/>";
+    public boolean exec(MethodContext methodContext) {
+        String methodName = methodContext.expandString(this.methodName);
+        Object methodObject = null;
+        if (!objMapAcsr.isEmpty()) {
+            Map<String, ? extends Object> fromMap = objMapAcsr.get(methodContext);
+            if (fromMap == null) {
+                Debug.logWarning("Map not found with name " + objMapAcsr + ", which should contain the object to execute a method on; not executing method, rerturning error.", module);
+                String errMsg = "ERROR: Could not complete the " + simpleMethod.getShortDescription() + " process [Map not found with name " + objMapAcsr + ", which should contain the object to execute a method on]";
+                methodContext.setErrorReturn(errMsg, simpleMethod);
+                return false;
+            }
+            methodObject = objFieldAcsr.get(fromMap, methodContext);
+        } else {
+            // no map name, try the env
+            methodObject = objFieldAcsr.get(methodContext);
+        }
+        if (methodObject == null) {
+            if (Debug.infoOn())
+                Debug.logInfo("Object not found to execute method on with name " + objFieldAcsr + " in Map with name " + objMapAcsr + ", not executing method, rerturning error.", module);
+            String errMsg = "ERROR: Could not complete the " + simpleMethod.getShortDescription() + " process [Object not found to execute method on with name " + objFieldAcsr + " in Map with name " + objMapAcsr + "]";
+            methodContext.setErrorReturn(errMsg, simpleMethod);
+            return false;
+        }
+        Class<?> methodClass = methodObject.getClass();
+        return CallObjectMethod.callMethod(simpleMethod, methodContext, parameters, methodClass, methodObject, methodName, retFieldAcsr, retMapAcsr);
     }
+
     @Override
     public String expandedString(MethodContext methodContext) {
         // TODO: something more than a stub/dummy
         return this.rawString();
     }
+
+    @Override
+    public String rawString() {
+        // TODO: something more than the empty tag
+        return "<call-object-method/>";
+    }
+
+    public static final class CallObjectMethodFactory implements Factory<CallObjectMethod> {
+        public CallObjectMethod createMethodOperation(Element element, SimpleMethod simpleMethod) {
+            return new CallObjectMethod(element, simpleMethod);
+        }
+
+        public String getName() {
+            return "call-object-method";
+        }
+    }
 }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java?rev=1327981&r1=1327980&r2=1327981&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallScript.java Thu Apr 19 15:09:03 2012
@@ -23,7 +23,7 @@ import java.util.Map;
 
 import javolution.util.FastList;
 
-import org.ofbiz.base.util.*;
+import org.ofbiz.base.util.ScriptUtil;
 import org.ofbiz.minilang.MiniLangException;
 import org.ofbiz.minilang.SimpleMethod;
 import org.ofbiz.minilang.method.ContextAccessor;
@@ -32,55 +32,58 @@ import org.ofbiz.minilang.method.MethodO
 import org.w3c.dom.Element;
 
 public class CallScript extends MethodOperation {
-    public static final class CallScriptFactory implements Factory<CallScript> {
-        public CallScript createMethodOperation(Element element, SimpleMethod simpleMethod) {
-            return new CallScript(element, simpleMethod);
+
+    public static final String module = CallScript.class.getName();
+
+    private static String getScriptLocation(String combinedName) {
+        int pos = combinedName.lastIndexOf("#");
+        if (pos == -1) {
+            return combinedName;
         }
+        return combinedName.substring(0, pos);
+    }
 
-        public String getName() {
-            return "script";
+    private static String getScriptMethodName(String combinedName) {
+        int pos = combinedName.lastIndexOf("#");
+        if (pos == -1) {
+            return null;
         }
+        return combinedName.substring(pos + 1);
     }
-    
-    public static final String module = CallScript.class.getName();
 
     private ContextAccessor<List<Object>> errorListAcsr;
     private String location;
     private String method;
 
     public CallScript(Element element, SimpleMethod simpleMethod) {
-        super(element, simpleMethod);        
+        super(element, simpleMethod);
         String scriptLocation = element.getAttribute("location");
         this.location = getScriptLocation(scriptLocation);
         this.method = getScriptMethodName(scriptLocation);
         this.errorListAcsr = new ContextAccessor<List<Object>>(element.getAttribute("error-list-name"), "error_list");
     }
-    
+
     @Override
-    public boolean exec(MethodContext methodContext) {        
+    public boolean exec(MethodContext methodContext) {
         String location = methodContext.expandString(this.location);
         String method = methodContext.expandString(this.method);
-        
         List<Object> messages = errorListAcsr.get(methodContext);
         if (messages == null) {
             messages = FastList.newInstance();
             errorListAcsr.put(methodContext, messages);
         }
-
-        Map<String, Object> context = methodContext.getEnvMap();        
+        Map<String, Object> context = methodContext.getEnvMap();
         if (location.endsWith(".xml")) {
             try {
-                SimpleMethod.runSimpleMethod(location, method, methodContext);                
+                SimpleMethod.runSimpleMethod(location, method, methodContext);
             } catch (MiniLangException e) {
                 messages.add("Error running simple method at location [" + location + "]: " + e.getMessage());
             }
         } else {
             ScriptUtil.executeScript(this.location, this.method, context);
         }
-        
         // update the method environment
         methodContext.putAllEnv(context);
-        
         // always return true, error messages just go on the error list
         return true;
     }
@@ -94,20 +97,14 @@ public class CallScript extends MethodOp
     public String rawString() {
         return "<script/>";
     }
-    
-    private static String getScriptLocation(String combinedName) {
-        int pos = combinedName.lastIndexOf("#");
-        if (pos == -1) {
-            return combinedName;
+
+    public static final class CallScriptFactory implements Factory<CallScript> {
+        public CallScript createMethodOperation(Element element, SimpleMethod simpleMethod) {
+            return new CallScript(element, simpleMethod);
         }
-        return combinedName.substring(0, pos);
-    }
-    
-    private static String getScriptMethodName(String combinedName) {
-        int pos = combinedName.lastIndexOf("#");
-        if (pos == -1) {
-            return null;
+
+        public String getName() {
+            return "script";
         }
-        return combinedName.substring(pos + 1);
     }
 }