Ok, I am debugging it and the problem is actually in the method 
FlexibleMapAccessor.put at line:

UelUtil.setValue(base, getExpression(base), value == null ? Object.class : 
value.getClass(), value);

The problem is that the "base" map is the map containing the results and not 
the "context" of the method.
For example:

<set field="total" value="10" type="BigDecimal"/>
<set field="result1" value="totalOrders"/>
<field-to-result field="total" result-name="${result1}"/>

This should add to the output the entry: ["totalOrders": 10]

It instead throws the error because the ${result1} is expanded using the 
"result" map rather than the "context" map where the "result1" field is set.

Jacopo


On May 14, 2012, at 12:34 PM, Adrian Crum wrote:

> It must be an old bug. As far as I know, the expression parsing hasn't 
> changed recently (with the exception of the recent security fix).
> 
> -Adrian
> 
> On 5/14/2012 11:27 AM, Jacopo Cappellato wrote:
>> Ok, I will try to look at it and find a fix... do you have any idea about 
>> why the content of the brackets is removed during parsing? Is it related to 
>> recent changes or it is an old bug? They may be silly questions but I 
>> actually don't know much about this code.
>> 
>> Jacopo
>> 
>> On May 14, 2012, at 12:03 PM, Adrian Crum wrote:
>> 
>>> That is a nested expression: The result name is contained in the variable 
>>> named "key".
>>> 
>>> UEL does not support nested expressions, but we make it work in 
>>> FlexibleStringExpander by pre-parsing the String and extracting nested 
>>> expressions.
>>> 
>>> In addition, FlexibleMapAccessor contains some code to handle nested 
>>> expressions (line 66 and 192). So, maybe that code can be improved to be 
>>> smarter.
>>> 
>>> -Adrian
>>> 
>>> On 5/14/2012 10:37 AM, Jacopo Cappellato wrote:
>>>> Hi Adrian,
>>>> 
>>>> we have noticed that the following instruction:
>>>> 
>>>>             <field-to-result field="val" result-name="${key}"/>
>>>> 
>>>> (from ContentServices.xml) returns an error in the console:
>>>> 
>>>> 2012-05-14 14:12:02,679 (default-invoker-Thread-11) 
>>>> [FlexibleMapAccessor.java:163:ERROR] UEL exception while setting value: 
>>>> javax.el.ELException: Error parsing '${}': syntax error at position 2, 
>>>> encountered '}', 
>>>> expected<IDENTIFIER>|<STRING>|<FLOAT>|<INTEGER>|'true'|'false'|'null'|'-'|'!'|'not'|'empty'|'(',
>>>>  original = ${key}
>>>> 
>>>> However it seems that the value is still returned properly. Any idea of 
>>>> how we could fix it?
>>>> 
>>>> Thanks,
>>>> 
>>>> Jacopo
>>>> 
>>>> 
>>>> 

Reply via email to