[ 
https://issues.apache.org/jira/browse/CAMEL-11235?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16000377#comment-16000377
 ] 

Pascal Schumacher edited comment on CAMEL-11235 at 5/8/17 7:43 AM:
-------------------------------------------------------------------

As a workaround I tried to use this simple expression:

{code}${headers.materialnumbers.isEmpty()} != true{code}

This fails with:

{noformat}2017-05-08 09:32:07,322 ERR [main] 
org.apache.camel.processor.DefaultErrorHandler - Failed delivery for 
(MessageId: ID-RDDE102Y-62492-1494228726331-0-1 on ExchangeId: 
ID-RDDE102Y-62492-1494228726331-0-2). Exhausted after delivery attempt: 1 
caught: org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed 
to invoke method: isEmpty() on null due to: 
org.apache.camel.component.bean.MethodNotFoundException: Method with name: 
isEmpty() (with no parameters) not found on bean: [89784409, 89784410] of type: 
com.google.common.collect.RegularImmutableSet. Exchange[]

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                             
                                           Elapsed (ms)
[Read Textbaustein ] [Read Textbaustein ] [                                     
                                         ] [        67]
[Read Textbaustein ] [choice1           ] [when[simple{Simple: 
${headers.Materialnummern.isEmpty()} != true}]choice[]    ] [        62]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to invoke 
method: isEmpty() on null due to: 
org.apache.camel.component.bean.MethodNotFoundException: Method with name: 
isEmpty() (with no parameters) not found on bean: [89784409, 89784410] of type: 
com.google.common.collect.RegularImmutableSet. Exchange[]
        at 
org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:327)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:115) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:139) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:126)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:118)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.builder.ExpressionBuilder$KeyedOgnlExpressionAdapter.evaluate(ExpressionBuilder.java:2490)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.builder.BinaryPredicateSupport.matchesReturningFailureMessage(BinaryPredicateSupport.java:60)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.builder.BinaryPredicateSupport.matches(BinaryPredicateSupport.java:50)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.language.simple.ast.BinaryExpression$5.evaluate(BinaryExpression.java:233)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.util.ExpressionToPredicateAdapter.matches(ExpressionToPredicateAdapter.java:37)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.builder.SimpleBuilder.matches(SimpleBuilder.java:85) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.FilterProcessor.matches(FilterProcessor.java:65) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:93) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:529) 
[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:497) 
[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:365) 
[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:497) 
[camel-core-2.19.0.jar:2.19.0]
        at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:209) 
[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:139)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:374)
 [camel-core-2.19.0.jar:2.19.0]
Caused by: org.apache.camel.component.bean.MethodNotFoundException: Method with 
name: isEmpty() (with no parameters) not found on bean: [89784409, 89784410] of 
type: com.google.common.collect.RegularImmutableSet. Exchange[]
        at 
org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:273) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:189) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:160) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:69) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.language.bean.BeanExpression$InvokeProcessor.process(BeanExpression.java:212)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:323)
 ~[camel-core-2.19.0.jar:2.19.0]
{noformat}

but com.google.common.collect.RegularImmutableSet has an isEmpty method 
(inherited from java.util.AbstractCollection).



was (Author: pascalschumacher):
As a workaround I tried to use this simple expression:

{code}${headers.materialnumbers.isEmpty()} != true}

This fails with:

{no-format}2017-05-08 09:32:07,322 ERR [main] 
org.apache.camel.processor.DefaultErrorHandler - Failed delivery for 
(MessageId: ID-RDDE102Y-62492-1494228726331-0-1 on ExchangeId: 
ID-RDDE102Y-62492-1494228726331-0-2). Exhausted after delivery attempt: 1 
caught: org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed 
to invoke method: isEmpty() on null due to: 
org.apache.camel.component.bean.MethodNotFoundException: Method with name: 
isEmpty() (with no parameters) not found on bean: [89784409, 89784410] of type: 
com.google.common.collect.RegularImmutableSet. Exchange[]

Message History
---------------------------------------------------------------------------------------------------------------------------------------
RouteId              ProcessorId          Processor                             
                                           Elapsed (ms)
[Read Textbaustein ] [Read Textbaustein ] [                                     
                                         ] [        67]
[Read Textbaustein ] [choice1           ] [when[simple{Simple: 
${headers.Materialnummern.isEmpty()} != true}]choice[]    ] [        62]

Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to invoke 
method: isEmpty() on null due to: 
org.apache.camel.component.bean.MethodNotFoundException: Method with name: 
isEmpty() (with no parameters) not found on bean: [89784409, 89784410] of type: 
com.google.common.collect.RegularImmutableSet. Exchange[]
        at 
org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:327)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:115) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:139) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:126)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:118)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.builder.ExpressionBuilder$KeyedOgnlExpressionAdapter.evaluate(ExpressionBuilder.java:2490)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.builder.BinaryPredicateSupport.matchesReturningFailureMessage(BinaryPredicateSupport.java:60)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.builder.BinaryPredicateSupport.matches(BinaryPredicateSupport.java:50)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.language.simple.ast.BinaryExpression$5.evaluate(BinaryExpression.java:233)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.util.ExpressionToPredicateAdapter.matches(ExpressionToPredicateAdapter.java:37)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.builder.SimpleBuilder.matches(SimpleBuilder.java:85) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.FilterProcessor.matches(FilterProcessor.java:65) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:93) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:529) 
[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:497) 
[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:365) 
[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:497) 
[camel-core-2.19.0.jar:2.19.0]
        at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:209) 
[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:139)
 [camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:374)
 [camel-core-2.19.0.jar:2.19.0]
Caused by: org.apache.camel.component.bean.MethodNotFoundException: Method with 
name: isEmpty() (with no parameters) not found on bean: [89784409, 89784410] of 
type: com.google.common.collect.RegularImmutableSet. Exchange[]
        at 
org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:273) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:189) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:160) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:69) 
~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.language.bean.BeanExpression$InvokeProcessor.process(BeanExpression.java:212)
 ~[camel-core-2.19.0.jar:2.19.0]
        at 
org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:323)
 ~[camel-core-2.19.0.jar:2.19.0]
{no-format}

but com.google.common.collect.RegularImmutableSet has an isEmpty method 
(inherited from java.util.AbstractCollection).


> Simple Language: Set#size fails with AmbiguousMethodCallException
> -----------------------------------------------------------------
>
>                 Key: CAMEL-11235
>                 URL: https://issues.apache.org/jira/browse/CAMEL-11235
>             Project: Camel
>          Issue Type: Bug
>    Affects Versions: 2.19.0
>            Reporter: Pascal Schumacher
>
> After updating from 2.18.3 to 2.19.0 the following simple expression:
> {code}${headers.materialnumbers.size} != 0{code}
> (materialnumbers is a HashSet) fails with:
> {noformat}
> 2017-05-08 09:10:17,143 ERR [main] 
> org.apache.camel.processor.DefaultErrorHandler - Failed delivery for 
> (MessageId: ID-RDDE102Y-57877-1494227416153-0-1 on ExchangeId: 
> ID-RDDE102Y-57877-1494227416153-0-2). Exhausted after delivery attempt: 1 
> caught: org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed 
> to invoke method: size on null due to: 
> org.apache.camel.component.bean.AmbiguousMethodCallException: Ambiguous 
> method invocations possible: [public abstract int java.util.Set.size(), 
> public abstract int java.util.AbstractCollection.size()]. Exchange[]
> Message History
> ---------------------------------------------------------------------------------------------------------------------------------------
> RouteId    ProcessorId          Processor                                     
>                                    Elapsed (ms)
> [Read TB ] [Read TB           ] [                                             
>                                  ] [        67]
> [Read TB ] [choice1           ] [when[simple{Simple: 
> ${headers.materialnumbers.size} != 0}]choice[]            ] [        62]
> Stacktrace
> ---------------------------------------------------------------------------------------------------------------------------------------
> org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to 
> invoke method: size on null due to: 
> org.apache.camel.component.bean.AmbiguousMethodCallException: Ambiguous 
> method invocations possible: [public abstract int java.util.Set.size(), 
> public abstract int java.util.AbstractCollection.size()]. Exchange[]
>       at 
> org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:327)
>       at 
> org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:115)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:139)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:126)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:118)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.builder.ExpressionBuilder$KeyedOgnlExpressionAdapter.evaluate(ExpressionBuilder.java:2490)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.builder.BinaryPredicateSupport.matchesReturningFailureMessage(BinaryPredicateSupport.java:60)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.builder.BinaryPredicateSupport.matches(BinaryPredicateSupport.java:50)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.language.simple.ast.BinaryExpression$5.evaluate(BinaryExpression.java:233)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.util.ExpressionToPredicateAdapter.matches(ExpressionToPredicateAdapter.java:37)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.builder.SimpleBuilder.matches(SimpleBuilder.java:85) 
> ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.processor.FilterProcessor.matches(FilterProcessor.java:65) 
> ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:93) 
> ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:541)
>  [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
>  [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
>  [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
>  [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:198)
>  [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97)
>  [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:529) 
> [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:497) 
> [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:365) 
> [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:497) 
> [camel-core-2.19.0.jar:2.19.0]
>       at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:209) 
> [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:139)
>  [camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:374)
>  [camel-core-2.19.0.jar:2.19.0]
> Caused by: org.apache.camel.component.bean.AmbiguousMethodCallException: 
> Ambiguous method invocations possible: [public abstract int 
> java.util.Set.size(), public abstract int 
> java.util.AbstractCollection.size()]. Exchange[]
>       at 
> org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:278) 
> ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:189) 
> ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:160) 
> ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:69) 
> ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.language.bean.BeanExpression$InvokeProcessor.process(BeanExpression.java:212)
>  ~[camel-core-2.19.0.jar:2.19.0]
>       at 
> org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:323)
>  ~[camel-core-2.19.0.jar:2.19.0]
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to