svn commit: r1214212 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallService.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1214212 - /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallService.java

sascharodekamp
Author: sascharodekamp
Date: Wed Dec 14 12:31:19 2011
New Revision: 1214212

URL: http://svn.apache.org/viewvc?rev=1214212&view=rev
Log:
Wrong errorMessage output from minilang event (https://issues.apache.org/jira/browse/OFBIZ-3461) A patch from Dimitri Unruh: when a service returns an errormessagelist to a simple method event, the message list is formatted just as a string.

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

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallService.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallService.java?rev=1214212&r1=1214211&r2=1214212&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallService.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/callops/CallService.java Wed Dec 14 12:31:19 2011
@@ -26,6 +26,7 @@ import javolution.util.FastList;
 import javolution.util.FastMap;
 
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
@@ -321,11 +322,28 @@ public class CallService extends MethodO
         String messagePrefixStr = messagePrefix.getMessage(methodContext.getLoader(), methodContext);
         String messageSuffixStr = messageSuffix.getMessage(methodContext.getLoader(), methodContext);
 
-        String errorMessage = ServiceUtil.makeErrorMessage(result, messagePrefixStr, messageSuffixStr, errorPrefixStr, errorSuffixStr);
-        if (UtilValidate.isNotEmpty(errorMessage) && breakOnError) {
-            errorMessage += UtilProperties.getMessage(resource, "simpleMethod.error_show_service_name", UtilMisc.toMap("serviceName", serviceName, "methodName", simpleMethod.getMethodName()), locale);
+        String errorMessage = null;
+        List<String> errorMessageList = null;
+        // See if there is a single message
+        if (result.containsKey(ModelService.ERROR_MESSAGE)) {
+            errorMessage = ServiceUtil.makeErrorMessage(result, messagePrefixStr, messageSuffixStr, errorPrefixStr, errorSuffixStr);
+        } else if (result.containsKey(ModelService.ERROR_MESSAGE_LIST)) {
+            errorMessageList = UtilGenerics.checkList(result.get(ModelService.ERROR_MESSAGE_LIST));
+        }
+
+        if ((UtilValidate.isNotEmpty(errorMessage) || UtilValidate.isNotEmpty(errorMessageList)) && breakOnError) {
             if (methodContext.getMethodType() == MethodContext.EVENT) {
-                methodContext.putEnv(simpleMethod.getEventErrorMessageName(), errorMessage);
+                if (UtilValidate.isNotEmpty(errorMessage)){
+                    if (Debug.verboseOn()){
+                        errorMessage += UtilProperties.getMessage(resource, "simpleMethod.error_show_service_name", UtilMisc.toMap("serviceName", serviceName, "methodName", simpleMethod.getMethodName()), locale);
+                    }
+                    methodContext.putEnv(simpleMethod.getEventErrorMessageName(), errorMessage);
+                } else {
+                    if (Debug.verboseOn()){
+                        errorMessageList.add(UtilProperties.getMessage(resource, "simpleMethod.error_show_service_name", UtilMisc.toMap("serviceName", serviceName, "methodName", simpleMethod.getMethodName()), locale));
+                    }
+                    methodContext.putEnv(simpleMethod.getEventErrorMessageListName(), errorMessageList);
+                }
             } else if (methodContext.getMethodType() == MethodContext.SERVICE) {
                 ServiceUtil.addErrors(UtilMisc.<String, String>getListFromMap(methodContext.getEnvMap(), this.simpleMethod.getServiceErrorMessageListName()),
                         UtilMisc.<String, String, Object>getMapFromMap(methodContext.getEnvMap(), this.simpleMethod.getServiceErrorMessageMapName()), result);
@@ -344,7 +362,7 @@ public class CallService extends MethodO
         }
 
         String defaultMessageStr = defaultMessage.getMessage(methodContext.getLoader(), methodContext);
-        if (UtilValidate.isEmpty(errorMessage) && UtilValidate.isEmpty(successMessage) && UtilValidate.isNotEmpty(defaultMessageStr)) {
+        if (UtilValidate.isEmpty(errorMessage) && UtilValidate.isEmpty(errorMessageList) && UtilValidate.isEmpty(successMessage) && UtilValidate.isNotEmpty(defaultMessageStr)) {
             if (methodContext.getMethodType() == MethodContext.EVENT) {
                 methodContext.putEnv(simpleMethod.getEventEventMessageName(), defaultMessageStr);
             } else if (methodContext.getMethodType() == MethodContext.SERVICE) {