Hi

You can use the Camel @Xpath annotation on a 2nd parameter in that
method signature

 public boolean match(String username, @XPath("/Example/User") String user) {

You may have to fiddle a bit to get the xpath expression working.
Also sometimes you may have to use /text() to tell it to return the
text content of the xml node.



On Wed, Feb 1, 2012 at 3:05 PM, Gershaw, Geoffrey
<[email protected]> wrote:
> Thanks for the reply. Could you give me an example for 1c? I mocked up an 
> example. Assume the below  XML comes from the ftp site. The XMLFilter's match 
> method accepts the username. How can I use XPath to pass the user to the 
> match method?
>
>
>  <Example>
>
>                <User>joe</User>
>
>  </Example>
>
> Class XMLFilter{
>
>        public boolean match(String username){
>                //check db for user
>                //if found return true/else false
>        }
> }
>
>        <route>
>                
> <from>"ftp://rider.com/orders?username=rider&password=secret";</from>
>                <filter>
>                        <simple>${bean:xmlFilter?method=match}</simple>
>                        <to uri="log:worked"/>
>                </filter>
>        </route>
>
> Thanks
>
> -----Original Message-----
> From: Claus Ibsen [mailto:[email protected]]
> Sent: Wednesday, February 01, 2012 3:20 AM
> To: [email protected]
> Subject: Re: Passing parameter values to bean methods via spring
>
> Hi
>
> On Tue, Jan 31, 2012 at 5:10 PM, Gershaw, Geoffrey
> <[email protected]> wrote:
>> Hello,
>>
>>
>>
>> I am a newbie to Camel. I've read a bunch of docs, but have not found an
>> answer to this specific use case.
>>
>
> Welcome to the community.
>
>>
>>
>> 1.       Assume the following.
>>
>> a.       I have the belown XML msg in the body of my Message.
>>
>> <Example>
>>
>>                <User>joe</User>
>>
>> </Example>
>>
>> b.      I am using a bean as a Filter. The method signature is
>>
>>                                                               i.
>> public boolean validateUser(String user)
>>
>> c.       Ideally I would like to user xpath in the config file to pass
>> "Joe" to the validateUser method
>>
>
> Yes xpath works fine for grabbing content from a XML doc.
> However  where it get tricky is if your XML uses namespaces. If so
> your XPath expression *must* also use namespaces.
>
>
>> d.      If the method returns false, I would like the route to stop.
>> Don't know how to do this.
>>
>
> You can use a Content Based Router, and in the otherwise leg, you can
> use the stop DSL.
>
>
>> e.      If the method returns true, I would like to pass the original
>> XML msg to a processor and finish the route.
>>
>
> Yes this happens already, the filter predicate is just for determine
> true | false
>
>> f.        Is this possible?
>>
>>
>
> Yes, something a like
>
> from X
>  choice
>     when bean (myFilterBean)
>       to Y
>    otherwise
>      stop
>
>
>
>>
>>
>>
>> Thanks
>>
>> Geoff Gershaw
>>
>>
>> ===============================================================================
>> Please access the attached hyperlink for an important electronic 
>> communications disclaimer:
>> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
>> ===============================================================================
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: [email protected]
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>
> ===============================================================================
> Please access the attached hyperlink for an important electronic 
> communications disclaimer:
> http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
> ===============================================================================
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: [email protected]
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to