You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Chris Wolf <cw...@gmail.com> on 2013/06/11 16:12:30 UTC
Cannot get filter() to work with "mandatoryBodyAs"
I want to impose a filter such that only messages whose body is of
type RemoteFile get through,
So per the documentation:
http://camel.apache.org/message-filter.html
http://camel.apache.org/predicate.html
http://camel.apache.org/simple.html
I have:
.filter(simple("${mandatoryBodyAs(RemoteFile.class)}"))
But I get:
org.apache.camel.CamelExecutionException: Exception occurred during
execution on the exchange: Exchange[Message: {}]
at org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1332)
at org.apache.camel.builder.ExpressionBuilder$33.evaluate(ExpressionBuilder.java:781)
at org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
at org.apache.camel.support.ExpressionSupport.matches(ExpressionSupport.java:32)
at org.apache.camel.util.ExpressionToPredicateAdapter.matches(ExpressionToPredicateAdapter.java:32)
at org.apache.camel.builder.SimpleBuilder.matches(SimpleBuilder.java:75)
at org.apache.camel.processor.FilterProcessor.process(FilterProcessor.java:47)
[....]
Caused by: java.lang.ClassNotFoundException: RemoteFile.class
at org.apache.camel.impl.DefaultClassResolver.resolveMandatoryClass(DefaultClassResolver.java:52)
at org.apache.camel.builder.ExpressionBuilder$33.evaluate(ExpressionBuilder.java:779)
... 67 more
...even though I imported RemoteFile. So then I tried:
.filter(simple("${mandatoryBodyAs(org.apache.camel.component.file.remote.RemoteFile.class)}"))
and I get the same ClassNotFoundException, but with the full classname.
How can I filter messages, such that only messages whose in-body is
non-null and of a certain type get through?
Thanks,
Chris
Re: Cannot get filter() to work with "mandatoryBodyAs"
Posted by Chris Wolf <cw...@gmail.com>.
Christian - this was a "user error" on my part and I forgot that I
could/should just overwrite and replace the "in" body of the
exchange, in which case, I didn't need to filter out the
no-longer-needed upstream message body.
Thanks,
Chris
On Tue, Jun 11, 2013 at 11:19 AM, Christian Müller
<ch...@gmail.com> wrote:
> Can you try
> ".filter(simple("${mandatoryBodyAs(org.apache.camel.component.file.remote.RemoteFile)}"))"?
>
> Best,
>
> Christian Müller
> -----------------
>
> Software Integration Specialist
>
> Apache Camel committer: https://camel.apache.org/team
> V.P. Apache Camel: https://www.apache.org/foundation/
> Apache Member: https://www.apache.org/foundation/members.html
>
> https://www.linkedin.com/pub/christian-mueller/11/551/642
>
>
> On Tue, Jun 11, 2013 at 4:12 PM, Chris Wolf <cw...@gmail.com> wrote:
>
>> I want to impose a filter such that only messages whose body is of
>> type RemoteFile get through,
>> So per the documentation:
>>
>> http://camel.apache.org/message-filter.html
>> http://camel.apache.org/predicate.html
>> http://camel.apache.org/simple.html
>>
>> I have:
>>
>> .filter(simple("${mandatoryBodyAs(RemoteFile.class)}"))
>>
>> But I get:
>>
>> org.apache.camel.CamelExecutionException: Exception occurred during
>> execution on the exchange: Exchange[Message: {}]
>> at
>> org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1332)
>> at
>> org.apache.camel.builder.ExpressionBuilder$33.evaluate(ExpressionBuilder.java:781)
>> at
>> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
>> at
>> org.apache.camel.support.ExpressionSupport.matches(ExpressionSupport.java:32)
>> at
>> org.apache.camel.util.ExpressionToPredicateAdapter.matches(ExpressionToPredicateAdapter.java:32)
>> at
>> org.apache.camel.builder.SimpleBuilder.matches(SimpleBuilder.java:75)
>> at
>> org.apache.camel.processor.FilterProcessor.process(FilterProcessor.java:47)
>> [....]
>> Caused by: java.lang.ClassNotFoundException: RemoteFile.class
>> at
>> org.apache.camel.impl.DefaultClassResolver.resolveMandatoryClass(DefaultClassResolver.java:52)
>> at
>> org.apache.camel.builder.ExpressionBuilder$33.evaluate(ExpressionBuilder.java:779)
>> ... 67 more
>>
>> ...even though I imported RemoteFile. So then I tried:
>>
>>
>> .filter(simple("${mandatoryBodyAs(org.apache.camel.component.file.remote.RemoteFile.class)}"))
>>
>> and I get the same ClassNotFoundException, but with the full classname.
>>
>> How can I filter messages, such that only messages whose in-body is
>> non-null and of a certain type get through?
>>
>> Thanks,
>>
>> Chris
>>
Re: Cannot get filter() to work with "mandatoryBodyAs"
Posted by Christian Müller <ch...@gmail.com>.
Can you try
".filter(simple("${mandatoryBodyAs(org.apache.camel.component.file.remote.RemoteFile)}"))"?
Best,
Christian Müller
-----------------
Software Integration Specialist
Apache Camel committer: https://camel.apache.org/team
V.P. Apache Camel: https://www.apache.org/foundation/
Apache Member: https://www.apache.org/foundation/members.html
https://www.linkedin.com/pub/christian-mueller/11/551/642
On Tue, Jun 11, 2013 at 4:12 PM, Chris Wolf <cw...@gmail.com> wrote:
> I want to impose a filter such that only messages whose body is of
> type RemoteFile get through,
> So per the documentation:
>
> http://camel.apache.org/message-filter.html
> http://camel.apache.org/predicate.html
> http://camel.apache.org/simple.html
>
> I have:
>
> .filter(simple("${mandatoryBodyAs(RemoteFile.class)}"))
>
> But I get:
>
> org.apache.camel.CamelExecutionException: Exception occurred during
> execution on the exchange: Exchange[Message: {}]
> at
> org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1332)
> at
> org.apache.camel.builder.ExpressionBuilder$33.evaluate(ExpressionBuilder.java:781)
> at
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
> at
> org.apache.camel.support.ExpressionSupport.matches(ExpressionSupport.java:32)
> at
> org.apache.camel.util.ExpressionToPredicateAdapter.matches(ExpressionToPredicateAdapter.java:32)
> at
> org.apache.camel.builder.SimpleBuilder.matches(SimpleBuilder.java:75)
> at
> org.apache.camel.processor.FilterProcessor.process(FilterProcessor.java:47)
> [....]
> Caused by: java.lang.ClassNotFoundException: RemoteFile.class
> at
> org.apache.camel.impl.DefaultClassResolver.resolveMandatoryClass(DefaultClassResolver.java:52)
> at
> org.apache.camel.builder.ExpressionBuilder$33.evaluate(ExpressionBuilder.java:779)
> ... 67 more
>
> ...even though I imported RemoteFile. So then I tried:
>
>
> .filter(simple("${mandatoryBodyAs(org.apache.camel.component.file.remote.RemoteFile.class)}"))
>
> and I get the same ClassNotFoundException, but with the full classname.
>
> How can I filter messages, such that only messages whose in-body is
> non-null and of a certain type get through?
>
> Thanks,
>
> Chris
>