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