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 2008/12/29 01:43:06 UTC
svn commit: r729819 - in /ofbiz/trunk/framework/base/src/org/ofbiz/base/util:
collections/FlexibleMapAccessor.java string/UelUtil.java
Author: adrianc
Date: Sun Dec 28 16:43:05 2008
New Revision: 729819
URL: http://svn.apache.org/viewvc?rev=729819&view=rev
Log:
Fixed problem with OFBiz script syntax versus UEL syntax. UEL identifiers cannot start with a digit, so identifiers created from IDs would generate syntax errors. This commit fixes that by converting ID identifiers internally by prefixing them with an underscore.
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/collections/FlexibleMapAccessor.java
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelUtil.java
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/collections/FlexibleMapAccessor.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/collections/FlexibleMapAccessor.java?rev=729819&r1=729818&r2=729819&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/collections/FlexibleMapAccessor.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/collections/FlexibleMapAccessor.java Sun Dec 28 16:43:05 2008
@@ -59,7 +59,7 @@
name = name.substring(1);
}
if (name.contains(FlexibleStringExpander.openBracket)) {
- fse = FlexibleStringExpander.getInstance(UelUtil.prepareExpression(name));
+ fse = FlexibleStringExpander.getInstance(name);
} else {
bracketedOriginal = FlexibleStringExpander.openBracket.concat(UelUtil.prepareExpression(name).concat(FlexibleStringExpander.closeBracket));
}
@@ -189,7 +189,7 @@
protected String getExpression(Map<String, ? extends Object> base) {
String expression = null;
if (this.fse != null) {
- expression = FlexibleStringExpander.openBracket.concat(this.fse.expandString(base).concat(FlexibleStringExpander.closeBracket));
+ expression = FlexibleStringExpander.openBracket.concat(UelUtil.prepareExpression(this.fse.expandString(base)).concat(FlexibleStringExpander.closeBracket));
} else {
expression = this.bracketedOriginal;
}
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelUtil.java?rev=729819&r1=729818&r2=729819&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelUtil.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/string/UelUtil.java Sun Dec 28 16:43:05 2008
@@ -322,15 +322,24 @@
* @return Converted expression
*/
public static String prepareExpression(String expression) {
+ String result = expression;
int openBrace = expression.indexOf("[+");
int closeBrace = (openBrace == -1 ? -1 : expression.indexOf(']', openBrace));
if (closeBrace != -1) {
String base = expression.substring(0, openBrace);
String property = expression.substring(openBrace+2, closeBrace).trim();
String end = expression.substring(closeBrace + 1);
- expression = base + "['insert@" + property + "']" + end;
+ result = base + "['insert@" + property + "']" + end;
}
- expression = expression.replace("[]", "['add']");
- return expression;
+ result = result.replace("[]", "['add']");
+ int pos = result.indexOf(".");
+ while (pos != -1) {
+ char c = result.charAt(pos + 1);
+ if (c >= '0' && c <= '9') {
+ result = result.substring(0, pos) + "._" + result.substring(pos + 1);
+ }
+ pos = result.indexOf(".", pos + 1);
+ }
+ return result;
}
}