[ https://issues.apache.org/activemq/browse/CAMEL-1567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=56147#action_56147 ]
Claus Ibsen commented on CAMEL-1567: ------------------------------------ The SMX repo where the jule bundle is located http://repo2.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.juel/2.1.0_2/ {code} <feature name='camel-juel' version='${pom.version}'> <feature version='${pom.version}'>camel-core</feature> <bundle>mvn:org.apache.geronimo.specs/geronimo-el_1.0_spec/${geronimo-el-version}</bundle> <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.juel/${juel-bundle-version}</bundle> <bundle>mvn:org.apache.camel/camel-juel/${pom.version}</bundle> </feature> {code} There is a pom.xml that has the versions listed and it lists <juel-bundle-version>2.1.0_2</juel-bundle-version> > 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.