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/10/04 14:52:48 UTC
svn commit: r1629382 - in
/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang:
method/serviceops/FieldToResult.java test/MiniLangTests.java
Author: adrianc
Date: Sat Oct 4 12:52:48 2014
New Revision: 1629382
URL: http://svn.apache.org/r1629382
Log:
Fixed a bug in Mini-language <field-to-result> element where nested expressions were not evaluated correctly. Reported by Jacopo on the dev mailing list.
Modified:
ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/serviceops/FieldToResult.java
ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/test/MiniLangTests.java
Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/serviceops/FieldToResult.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/serviceops/FieldToResult.java?rev=1629382&r1=1629381&r2=1629382&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/serviceops/FieldToResult.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/serviceops/FieldToResult.java Sat Oct 4 12:52:48 2014
@@ -18,7 +18,8 @@
*******************************************************************************/
package org.ofbiz.minilang.method.serviceops;
-import org.ofbiz.base.util.collections.FlexibleMapAccessor;
+import org.ofbiz.base.util.string.FlexibleStringExpander;
+import org.ofbiz.base.util.collections.*;
import org.ofbiz.minilang.MiniLangException;
import org.ofbiz.minilang.MiniLangValidate;
import org.ofbiz.minilang.SimpleMethod;
@@ -60,7 +61,14 @@ public final class FieldToResult extends
Object fieldVal = this.fieldFma.get(methodContext.getEnvMap());
if (fieldVal != null) {
if (this.resultFma.containsNestedExpression()) {
- String expression = (String) this.resultFma.get(methodContext.getEnvMap());
+ /*
+ * Replace FMA nested expression functionality with our own.
+ * The nested expression must be evaluated once using the
+ * method context, [methodContext.getEnvMap()] then again to
+ * place the value in the result Map [methodContext.getResults()].
+ */
+ FlexibleStringExpander fse = FlexibleStringExpander.getInstance(this.resultFma.getOriginalName());
+ String expression = fse.expandString(methodContext.getEnvMap());
FlexibleMapAccessor<Object> resultFma = FlexibleMapAccessor.getInstance(expression);
resultFma.put(methodContext.getResults(), fieldVal);
} else {
Modified: ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/test/MiniLangTests.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/test/MiniLangTests.java?rev=1629382&r1=1629381&r2=1629382&view=diff
==============================================================================
--- ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/test/MiniLangTests.java (original)
+++ ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/test/MiniLangTests.java Sat Oct 4 12:52:48 2014
@@ -102,7 +102,7 @@ public class MiniLangTests extends OFBiz
MethodContext context = createServiceMethodContext();
String result = methodToTest.exec(context);
assertEquals("testFieldToResult success result", methodToTest.getDefaultSuccessCode(), result);
- assertEquals("Constant result name set", "someResultValue", context.getResult("constantResultName"));
- //assertEquals("Dynamic result name set", "someResultValue", context.getResult("dynamicResultName")); This one fails!
+ assertEquals("Plain expression result name set", "someResultValue", context.getResult("constantResultName"));
+ assertEquals("Nested expression result name set", "someResultValue", context.getResult("dynamicResultName"));
}
}