Thanks Claus, that works well.
----- Original message ----- From: "Claus Ibsen" <claus.ib...@gmail.com> To: users@camel.apache.org Date: Mon, 14 Dec 2009 16:11:25 +0100 Subject: Re: Filename based on XPath result On Mon, Dec 14, 2009 at 2:03 PM, Martin Gilday <martin.li...@imap.cc> wrote: > Hi, > > Yes that is how we thought it should be. However we have come across > the following issue. The first route works as desired. The second and > third do not compile. > > // Works > from("direct:test").setHeader("foo") > .xpath("/bar") > .to("cheese"); > > //The method to(String) is undefined for the type Object > from("direct:test") > .to("log:org.example.Incoming?level=INFO") > .setHeader("foo") > .xpath("/bar") > .to("cheese"); > > //The method to(String) is undefined for the type Object > from("direct:test") > .beanRef("myBean", "myMethod") > .setHeader("foo") > .xpath("/bar") > .to("cheese"); > > Is this a bug or are we doing something wrong here? > The Java language is maxed out with the builder pattern and generics. What you actually do is to kinda call a sub method (the xpath) and then want to go back to the scope used before (eg from setHeader) but that is not always possible with regular Java. That is why I prefer to pass in the xpath as a parameter to the setHeader method .setHeader("foo", xpath("/bar")) You then need to use static import import static org.apache.camel.builder.xml.XPathBuilder.xpath; > Could you elaborate on what you meant by "You can just set the file name > based on xpath and with some xpath concat magic you can assemble it in > one expression." > No :) That person wanted to set the filename based on parts of xpath. So if you want to extract from xpath and add .xml as file extension, and/or maybe have a fixed prefix for the file name, you can do that with some xpath concat magic. I am no xpath lover and cant remember the syntax for using those xpath functions. > Martin > > ----- Original message ----- > From: "Claus Ibsen" <claus.ib...@gmail.com> > To: users@camel.apache.org > Date: Mon, 14 Dec 2009 13:03:16 +0100 > Subject: Re: Filename based on XPath result > > On Mon, Dec 14, 2009 at 11:55 AM, Martin Gilday <martin.li...@imap.cc> > wrote: >> Hi, >> >> I have a StringMessage which contains and XML body. I would like to use >> a unique part of the body as the filename in conjunction with the file >> component. Is it possible to consume from JMS and send to file with the >> filename the result of an XPath match? >> > > Yeah this question came up last week > http://old.nabble.com/File-Component%3A-File-name-from-body-data-ts26708582.html > > >> Thanks, >> Martin. >> > > > > -- > Claus Ibsen > Apache Camel Committer > > Author of Camel in Action: http://www.manning.com/ibsen/ > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus > -- Claus Ibsen Apache Camel Committer Author of Camel in Action: http://www.manning.com/ibsen/ Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus