You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Hadrian Zbarcea (JIRA)" <ji...@apache.org> on 2009/11/28 03:00:55 UTC

[jira] Resolved: (CAMEL-1567) Upgrading to JUEL 2.1.1 - Beware of API changes in JUEL

     [ https://issues.apache.org/activemq/browse/CAMEL-1567?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hadrian Zbarcea resolved CAMEL-1567.
------------------------------------

    Resolution: Fixed

Upgrade to juel 2.1.2 as both the latest version (plus 2.1.1 was not available in the maven repos).  juel 2.1.2 is also available as an OSGi bundle, which should take care of the incompatibility with the geronimo-el_1.0_spec.

> Upgrading to JUEL 2.1.1 - Beware of API changes in JUEL
> -------------------------------------------------------
>
>                 Key: CAMEL-1567
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1567
>             Project: Apache Camel
>          Issue Type: Task
>          Components: camel-juel
>    Affects Versions: 1.6.0, 2.0-M1
>            Reporter: Claus Ibsen
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.1.0
>
>
> Hi Claus,
> Here is an explanation of the API change from Christopher Beck at JUEL:
> Hello Yogesh,
> the API to resolve methods has changed in 2.1.1. Camel's method resolver
> is breaks with JUEL 2.1.1. Generally, methods are still resolved via
> ELResolver.getValue(context, base, property), but
> - in 2.1.0, the method name was passed as a property
> - in 2.1.1, an instance of de.odysseus.el.misc.MethodInvocation is passed
> as a property
> The reason for this is to provide more detailed information about the
> method invocation to the resolver (i.e the method name, number of arguments
> and whether vararg calls are supported).
> Now, camel-juel uses its BeanAndMethodELResolver to resolve methods.
> There, findMethod(context, base, property) only handles a property
> parameter of type string. That's why it doesn't work. When migrating to
> juel 2.1.1, the BeanAndMethodELResolver class needs to be updated to work
> with MethodInvocation objects as properties.
> The JUEL 2.1.1 distribution contains a sample resolver. Taking the sample
> code, updating camel's resolver should be pretty straightforward. When
> doing so, you may also want to add property "javax.el.varArgs" in
> JuelExpression.populateDefaultExpressionProperties(..). That way you would
> take real profit by invoking vararg methods from within EL expressions.
> There's also a way to quickly modify your resolver to work with both, JUEL
> 2.1.0 and 2.1.1. Just don't ask for "property instanceof String" but use
> property.toString() as a candidate method name: the MethodInvocation's
> toString() will answer the method name.
> See nabble:
> http://www.nabble.com/Camel-JUEL-expression-weirdness-in-1.6.0-td23177119s22882.html

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.