On Sep 27, 2014, at 10:12 AM, Adrian Crum <adrian.c...@sandglass-software.com> wrote:
> Yes. To be clear: > > <field-to-result field="total" result-name="someField"/> > > someField is an expression, and > > <field-to-result field="total" result-name="${result}"/> > > ${result} is a nested expression (an expression within an expression). Ok, this was my understanding as well. Based on this, the fix you did in 1338394 *should* make it possible to set: <field-to-result field="total" result-name="${result}"/> and so the documentation on the xsd grammar should be updated. However the code in commit 1338394 doesn't work as the test I have committed recently demonstrate. > > I can take another look at the Mini-language code next weekend if you are > willing to wait until then. This would be great, thank you. In the meantime I have fixed the code that was using this feature to prevent errors, so I don't have any rush. Take all the time you need. Regards, Jacopo > > Adrian Crum > Sandglass Software > www.sandglass-software.com > > On 9/26/2014 4:09 PM, Jacopo Cappellato wrote: >> >> 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; >>>>> } >>>>> >>>>> >>>> >>