Jacopo,
I committed a fix in rev 1338394. Let me know if that solves your problem.
-Adrian
On 5/14/2012 1:54 PM, Adrian Crum wrote:
Then that seems to be a flaw in the <field-to-result> logic. I will
look into it.
-Adrian
On 5/14/2012 1:51 PM, Jacopo Cappellato wrote:
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