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; } } |
Free forum by Nabble | Edit this page |