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 2014/03/11 18:04:35 UTC

svn commit: r1576430 - in /ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method: conditional/CompareCondition.java envops/SetOperation.java

Author: adrianc
Date: Tue Mar 11 17:04:35 2014
New Revision: 1576430

URL: http://svn.apache.org/r1576430
Log:
Fixed a bug in Mini-language where numeric constants were localized and converted wrong - https://issues.apache.org/jira/browse/OFBIZ-5281

Modified:
    ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/conditional/CompareCondition.java
    ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/conditional/CompareCondition.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/conditional/CompareCondition.java?rev=1576430&r1=1576429&r2=1576430&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/conditional/CompareCondition.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/conditional/CompareCondition.java Tue Mar 11 17:04:35 2014
@@ -20,6 +20,7 @@ package org.ofbiz.minilang.method.condit
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Locale;
 
 import org.ofbiz.base.util.ObjectType;
 import org.ofbiz.base.util.UtilValidate;
@@ -113,7 +114,8 @@ public final class CompareCondition exte
         String value = valueFse.expandString(methodContext.getEnvMap());
         String format = formatFse.expandString(methodContext.getEnvMap());
         try {
-            return this.compare.doCompare(fieldVal, value, targetClass, methodContext.getLocale(), methodContext.getTimeZone(), format);
+            // We use en locale here so constant (literal) values are converted properly.
+            return this.compare.doCompare(fieldVal, value, targetClass, Locale.ENGLISH, methodContext.getTimeZone(), format);
         } catch (Exception e) {
             simpleMethod.addErrorMessage(methodContext, e.getMessage());
         }

Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java?rev=1576430&r1=1576429&r2=1576430&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/envops/SetOperation.java Tue Mar 11 17:04:35 2014
@@ -20,6 +20,7 @@ package org.ofbiz.minilang.method.envops
 
 import java.util.HashMap;
 import java.util.LinkedList;
+import java.util.Locale;
 
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.ObjectType;
@@ -133,6 +134,7 @@ public final class SetOperation extends 
 
     @Override
     public boolean exec(MethodContext methodContext) throws MiniLangException {
+        boolean isConstant = false;
         Object newValue = null;
         if (this.scriptlet != null) {
             try {
@@ -146,10 +148,12 @@ public final class SetOperation extends 
                 Debug.logVerbose("In screen getting value for field from [" + this.fromFma.toString() + "]: " + newValue, module);
         } else if (!this.valueFse.isEmpty()) {
             newValue = this.valueFse.expand(methodContext.getEnvMap());
+            isConstant = true;
         }
         // If newValue is still empty, use the default value
         if (ObjectType.isEmpty(newValue) && !this.defaultFse.isEmpty()) {
             newValue = this.defaultFse.expand(methodContext.getEnvMap());
+            isConstant = true;
         }
         if (!setIfNull && newValue == null) {
             if (Debug.verboseOn())
@@ -176,7 +180,12 @@ public final class SetOperation extends 
                     if (targetClass == null) {
                         targetClass = MiniLangUtil.getObjectClassForConversion(newValue);
                     }
-                    newValue = MiniLangUtil.convertType(newValue, targetClass, methodContext.getLocale(), methodContext.getTimeZone(), format);
+                    if (isConstant) {
+                        // We use en locale here so constant (literal) values are converted properly.
+                        newValue = MiniLangUtil.convertType(newValue, targetClass, Locale.ENGLISH, methodContext.getTimeZone(), format);
+                    } else {
+                        newValue = MiniLangUtil.convertType(newValue, targetClass, methodContext.getLocale(), methodContext.getTimeZone(), format);
+                    }
                 } catch (Exception e) {
                     String errMsg = "Could not convert field value for the field: [" + this.fieldFma.toString() + "] to the [" + this.type + "] type for the value [" + newValue + "]: " + e.getMessage();
                     Debug.logWarning(e, errMsg, module);