On Sep 26, 2014, at 5:02 PM, Adrian Crum <adrian.c...@sandglass-software.com> wrote:
> The change should be self-explanatory. If the attribute contains a nested > expression, then use FSE to expand the nested expression before using FMA to > retrieve the value. Like this: <field-to-result field="total" result-name="${result}"/> ? > > Adrian Crum > Sandglass Software > www.sandglass-software.com > > On 9/26/2014 1:11 PM, Jacopo Cappellato wrote: >> Adrian, >> >> this is still related to the issue related to the field-to-result operation >> with an ${} value in the result name. >> This is the modification you did a couple of years ago trying to fix the >> issue I reported at that time. >> Could you help me to understand what is the effect of this enhancement? An >> example of intended usage of the <field-to-result/> element would be enough. >> >> Jacopo >> >> >> >> On May 14, 2012, at 10:49 PM, adri...@apache.org wrote: >> >>> Author: adrianc >>> Date: Mon May 14 20:49:01 2012 >>> New Revision: 1338394 >>> >>> URL: http://svn.apache.org/viewvc?rev=1338394&view=rev >>> Log: >>> Fixed a bug in Mini-language <field-to-result> element where nested >>> expressions were not evaluated correctly. >>> >>> Modified: >>> >>> ofbiz/trunk/framework/minilang/src/org/ofbiz/minilang/method/serviceops/FieldToResult.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=1338394&r1=1338393&r2=1338394&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 >>> Mon May 14 20:49:01 2012 >>> @@ -28,7 +28,7 @@ import org.ofbiz.minilang.method.MethodO >>> import org.w3c.dom.Element; >>> >>> /** >>> - * Copies a field to a service OUT attribute. >>> + * Copies a field to the simple-method result Map. >>> */ >>> public final class FieldToResult extends MethodOperation { >>> >>> @@ -58,9 +58,13 @@ public final class FieldToResult extends >>> public boolean exec(MethodContext methodContext) throws >>> MiniLangException { >>> Object fieldVal = this.fieldFma.get(methodContext.getEnvMap()); >>> if (fieldVal != null) { >>> - // FIXME: Needs special handling for nested expressions. >>> - // The result attribute might contain a reference to an >>> environment (not result Map) variable. >>> - this.resultFma.put(methodContext.getResults(), fieldVal); >>> + if (this.resultFma.containsNestedExpression()) { >>> + String expression = (String) >>> this.resultFma.get(methodContext.getEnvMap()); >>> + FlexibleMapAccessor<Object> resultFma = >>> FlexibleMapAccessor.getInstance(expression); >>> + resultFma.put(methodContext.getResults(), fieldVal); >>> + } else { >>> + this.resultFma.put(methodContext.getResults(), fieldVal); >>> + } >>> } >>> return true; >>> } >>> >>> >>