Oops, I missed two lines while changing it back. Fixed in rev 1337103.

-Adrian

On 5/11/2012 10:56 AM, Adrian Crum wrote:
Fixed in revision 1337092. Thanks Scott!

The <add-error> + <check-errors> element combination and interaction was very confusing to me. In some places it is used as you described, and in other places the <add-error> element was used to simply create a list of messages. Plus, in the original code, the <check-errors> element completely ignores any errors generated internally by the script engine. In my previous commits I was trying to bring some consistency to the behavior, but that appears to have broken things, so I restored the original behavior.

-Adrian

On 5/11/2012 6:21 AM, Scott Gray wrote:
Hi Adrian,

<add-error> +<check-errors/> doesn't seem to be working for minilang events anymore. For example:
https://demo-trunk.ofbiz.apache.org:8443/ecommerce/control/AnonContactus

Submitting that form while completely empty returns successfully even though the event has validation for the required fields. I think add-error is adding to a differently list than what check-errors is looking at.

Thanks
Scott

On 29/04/2012, at 7:25 AM, [email protected] wrote:

Author: adrianc
Date: Sat Apr 28 19:25:48 2012
New Revision: 1331811

URL: http://svn.apache.org/viewvc?rev=1331811&view=rev
Log:
Reverting changes to the Mini-language<add-error> element. Too much code depends on the "error_list" name.

Modified:
ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/AddError.java

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=1331811&r1=1331810&r2=1331811&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 Sat Apr 28 19:25:48 2012
@@ -22,118 +22,78 @@ import java.util.List;

import javolution.util.FastList;

-import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.base.util.UtilXml;
-import org.ofbiz.base.util.string.FlexibleStringExpander;
import org.ofbiz.minilang.MiniLangException;
-import org.ofbiz.minilang.MiniLangUtil;
-import org.ofbiz.minilang.MiniLangValidate;
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 an error message to the error message list.
+ * Adds the fail-message or fail-property value to the error-list.
  */
-public final class AddError extends MethodOperation {
+public class AddError extends MethodOperation {

-    // This method is needed only during the v1 to v2 transition
-    private static boolean autoCorrect(Element element) {
- String errorListAttr = element.getAttribute("error-list-name");
-        if (errorListAttr.length()>  0) {
-            element.removeAttribute("error-list-name");
-            return true;
-        }
-        return false;
-    }
-
-    private final FlexibleStringExpander messageFse;
-    private final String propertykey;
-    private final String propertyResource;
+    ContextAccessor<List<Object>>  errorListAcsr;
+    boolean isProperty = false;
+    String message = null;
+    String propertyResource = null;

public AddError(Element element, SimpleMethod simpleMethod) throws MiniLangException {
         super(element, simpleMethod);
-        if (MiniLangValidate.validationOn()) {
- MiniLangValidate.childElements(simpleMethod, element, "fail-message", "fail-property"); - MiniLangValidate.requireAnyChildElement(simpleMethod, element, "fail-message", "fail-property"); + 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;
+        } else if (failProperty != null) {
+ this.propertyResource = failProperty.getAttribute("resource");
+            this.message = failProperty.getAttribute("property");
+            this.isProperty = true;
         }
-        boolean elementModified = autoCorrect(element);
-        if (elementModified&&  MiniLangUtil.autoCorrectOn()) {
-            MiniLangUtil.flagDocumentAsCorrected(element);
-        }
- Element childElement = UtilXml.firstChildElement(element, "fail-message");
-        if (childElement != null) {
-            if (MiniLangValidate.validationOn()) {
- MiniLangValidate.attributeNames(simpleMethod, childElement, "message"); - MiniLangValidate.requiredAttributes(simpleMethod, childElement, "message"); - MiniLangValidate.constantPlusExpressionAttributes(simpleMethod, childElement, "message");
-            }
- this.messageFse = FlexibleStringExpander.getInstance(childElement.getAttribute("message"));
-            this.propertykey = null;
-            this.propertyResource = null;
-        } else {
- childElement = UtilXml.firstChildElement(element, "fail-property");
-            if (childElement != null) {
-                if (MiniLangValidate.validationOn()) {
- MiniLangValidate.attributeNames(simpleMethod, childElement, "property", "resource"); - MiniLangValidate.requiredAttributes(simpleMethod, childElement, "property", "resource"); - MiniLangValidate.constantAttributes(simpleMethod, childElement, "property", "resource");
-                }
- this.messageFse = FlexibleStringExpander.getInstance(null); - this.propertykey = childElement.getAttribute("property"); - this.propertyResource = childElement.getAttribute("resource");
+    }
+
+ 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);
+ } else if (isProperty&& propertyResource != null&& message != null) { + 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 {
- this.messageFse = FlexibleStringExpander.getInstance(null);
-                this.propertykey = null;
-                this.propertyResource = null;
+                messages.add(methodContext.expandString(propMsg));
             }
+        } else {
+ messages.add("Simple Method error occurred, but no message was found, sorry.");
         }
     }

     @Override
public boolean exec(MethodContext methodContext) throws MiniLangException {
-        String message = null;
-        if (!this.messageFse.isEmpty()) {
- message = this.messageFse.expandString(methodContext.getEnvMap());
-        } else if (this.propertyResource != null) {
- message = UtilProperties.getMessage(this.propertyResource, this.propertykey, methodContext.getEnvMap(), methodContext.getLocale());
-        }
-        if (message != null) {
-            List<String>  messages = null;
- if (methodContext.getMethodType() == MethodContext.EVENT) { - messages = methodContext.getEnv(this.simpleMethod.getEventErrorMessageListName());
-                if (messages == null) {
-                    messages = FastList.newInstance();
- methodContext.putEnv(this.simpleMethod.getEventErrorMessageListName(), messages);
-                }
-            } else {
- messages = methodContext.getEnv(this.simpleMethod.getServiceErrorMessageListName());
-                if (messages == null) {
-                    messages = FastList.newInstance();
- methodContext.putEnv(this.simpleMethod.getServiceErrorMessageListName(), messages);
-                }
-            }
-            messages.add(message);
-            // TODO: Remove this line after tests are fixed
- Debug.logInfo("<add-error> message = " + message + ", location = " + this.simpleMethod.getLocationAndName() + ", line = " + this.getLineNumber(), this.getClass().getName());
+        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) {
- return FlexibleStringExpander.expandString(toString(), methodContext.getEnvMap());
+        // TODO: something more than a stub/dummy
+        return this.rawString();
     }

     @Override
     public String rawString() {
-        return toString();
-    }
-
-    @Override
-    public String toString() {
+        // TODO: something more than the empty tag
         return "<add-error/>";
     }



Reply via email to