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);