After being unsuccessful at my effort to make the above route to work, I created the necessary inbox and outbox folders and my new route looks like below:
from("file://Users/jothi/Desktop/inbox/filename=my.xml").unmarshal(jaxb).bean(new ProcessorBean()).to("file://Users/jothi/Desktop/inbox/filename=my.xml"); Why does this not work either? What else should I tell Camel so that he writes the my.xml to the outbox? Regards, Jothi On Fri, Aug 17, 2012 at 12:47 PM, Joe San <codeintheo...@gmail.com> wrote: > Thanks for the pointer. I made the necessary changes to my route but still > unable to make it work! > > from("file:.?fileName=my.xml").unmarshal(jaxb).bean(new > ProcessorBean()).to("file:.?fileName=my1.xml"); > > For convenient sake, I changed the name of the target file (my1.xml). Why > would my ProcessorBean not invoked? Also how can I see that my.xml was > picked up by Camel in the from clause? > > Regards, > Jothi > > > On Fri, Aug 17, 2012 at 12:19 PM, Claus Ibsen <claus.ib...@gmail.com>wrote: > >> On Fri, Aug 17, 2012 at 11:26 AM, Joe San <codeintheo...@gmail.com> >> wrote: >> > Thanks! That solved the problem. >> > >> > Now I'm able to successfully get my example running. But I'm not getting >> > Camel do what I wanted. Here is how my route definition looks like! >> > >> > context.addRoutes(new RouteBuilder() { >> > public void configure() { >> > from("file:my.xml").unmarshal(jaxb).bean(new >> > ProcessorBean()).to("file:my.xml"); >> > } >> > }); >> > >> > The my.xml is in the same folder where the class containing the above >> route >> > definition exists. What I'm trying to do is to read the xml, change the >> > value for the name attribute using a processor and write the new xml to >> the >> > same file. >> > >> >> The file component in Camel >> http://camel.apache.org/file2 >> >> Requires to be configured with a *starting directory*. If you want to >> pickup a single file by its name, you need to use the fileName option >> for that >> >> from("file:startingDir?fileName=my.xml")... >> >> You may use dot as starting directory to say current dir (a bit odd >> though) >> from("file:.?fileName=my.xml")... >> >> >> > Regards, >> > Jothi >> > >> > On Fri, Aug 17, 2012 at 10:57 AM, Claus Ibsen <claus.ib...@gmail.com> >> wrote: >> > >> >> On Fri, Aug 17, 2012 at 10:46 AM, Joe San <codeintheo...@gmail.com> >> wrote: >> >> > So here comes the next bump! >> >> > >> >> > javax.xml.bind.JAXBException: "com.example.filexml" doesnt contain >> >> > ObjectFactory.class or jaxb.index >> >> > >> >> > Do I have to add a jaxb.index file to my package? >> >> > >> >> >> >> Yes, see for example p77 in Camel in Action book. >> >> Or google a bit on how to use JAXB with Java. >> >> >> >> Basically you need to drop a jaxb.index file in the JAR with your JAXB >> >> annotated classes. >> >> The file should contain a line per class that has JAXB annotations. >> >> >> >> >> >> >> >> > Regards, >> >> > Jothi >> >> > >> >> > On Fri, Aug 17, 2012 at 10:24 AM, Joe San <codeintheo...@gmail.com> >> >> wrote: >> >> > >> >> >> Just managed to get rid of this issue and I was about to post my >> >> solution >> >> >> and saw your message. Added the following as a dependency and it >> worked! >> >> >> >> >> >> <dependency> >> >> >> <groupId>org.slf4j</groupId> >> >> >> <artifactId>slf4j-api</artifactId> >> >> >> <version>1.6.6</version> >> >> >> </dependency> >> >> >> >> >> >> Regards, >> >> >> Jothi >> >> >> >> >> >> >> >> >> On Fri, Aug 17, 2012 at 10:18 AM, Claus Ibsen < >> claus.ib...@gmail.com >> >> >wrote: >> >> >> >> >> >>> On Fri, Aug 17, 2012 at 10:06 AM, Joe San <codeintheo...@gmail.com >> > >> >> >>> wrote: >> >> >>> > I've tried to get rid of this issue but unfortunately could not. >> >> What I >> >> >>> do >> >> >>> > not understand is the following: >> >> >>> > >> >> >>> > The Error says: >> >> >>> > >> >> >>> > Exception in thread "main" java.lang.NoClassDefFoundError: >> >> >>> > org/slf4j/LoggerFactory >> >> >>> > at >> >> >>> > >> >> >> org.apache.camel.support.ServiceSupport.<clinit>(ServiceSupport.java:38) >> >> >>> > at >> >> >>> > >> >> >>> >> >> >> org.example.filexml.CamelWithFileAndXML.main(CamelWithFileAndXML.java:23) >> >> >>> > Caused by: java.lang.ClassNotFoundException: >> org.slf4j.LoggerFactory >> >> >>> > >> >> >>> > I have a dependency as: >> >> >>> > >> >> >>> > <dependency> >> >> >>> > <groupId>org.slf4j</groupId> >> >> >>> > <artifactId>slf4j-log4j12</artifactId> >> >> >>> > <version>1.6.6</version> >> >> >>> > </dependency> >> >> >>> > >> >> >>> > When I checked the slf4j jar file, the package structure is >> different >> >> >>> from >> >> >>> > what the error says. There is no org.slf4j.LoggerFactory but >> rather >> >> >>> > org\slf4j\impl\Log4jLoggerFactory. Am I using wrong libraries? >> >> >>> > >> >> >>> >> >> >>> And you got slf4j-api JAR as well? Its needed as dependency. >> >> >>> >> >> >>> > Regards, >> >> >>> > Jothi >> >> >>> > >> >> >>> > On Thu, Aug 16, 2012 at 5:37 PM, Claus Ibsen < >> claus.ib...@gmail.com> >> >> >>> wrote: >> >> >>> > >> >> >>> >> On Thu, Aug 16, 2012 at 4:08 PM, Joe San < >> codeintheo...@gmail.com> >> >> >>> wrote: >> >> >>> >> > Even with the al4j-log4j dependecy added in the libraries, I >> get >> >> this >> >> >>> >> error. >> >> >>> >> > >> >> >>> >> >> >> >>> >> Are you sure they are on the classpath when you run the app form >> >> within >> >> >>> >> Eclipse. >> >> >>> >> >> >> >>> >> And you may want to add slf4j-log4j12 or some other logging >> bridge >> >> so >> >> >>> >> you can use log4j, or maybe some other log kit to log. >> >> >>> >> Then you can see logs in the console in eclipse etc, if you >> >> configure >> >> >>> >> logging to output to std out. >> >> >>> >> >> >> >>> >> If you create a new Camel project using the maven archetypes it >> does >> >> >>> that. >> >> >>> >> camel.apache.org/camel-maven-archetypes.html >> >> >>> >> >> >> >>> >> Or see some of the Camel examples in the examples dir >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> > Regards, >> >> >>> >> > Jothi >> >> >>> >> > >> >> >>> >> > On Thu, Aug 16, 2012 at 3:59 PM, Claus Ibsen < >> >> claus.ib...@gmail.com> >> >> >>> >> wrote: >> >> >>> >> > >> >> >>> >> >> Hi >> >> >>> >> >> >> >> >>> >> >> See this FAQ >> >> >>> >> >> http://camel.apache.org/what-jars-do-i-need.html >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> On Thu, Aug 16, 2012 at 3:50 PM, Joe San < >> >> codeintheo...@gmail.com> >> >> >>> >> wrote: >> >> >>> >> >> > Exception in thread "main" java.lang.NoClassDefFoundError: >> >> >>> >> >> > org/slf4j/LoggerFactory >> >> >>> >> >> > at >> >> >>> >> >> > >> >> >>> >> >> >> >>> >> >> >> org.apache.camel.support.ServiceSupport.<clinit>(ServiceSupport.java:38) >> >> >>> >> >> > at >> >> >>> >> >> > >> >> >>> >> >> >> >>> >> >> >> org.example.filexml.CamelWithFileAndXML.main(CamelWithFileAndXML.java:23) >> >> >>> >> >> > Caused by: java.lang.ClassNotFoundException: >> >> >>> org.slf4j.LoggerFactory >> >> >>> >> >> > at java.net.URLClassLoader$1.run(Unknown Source) >> >> >>> >> >> > at java.security.AccessController.doPrivileged(Native >> >> Method) >> >> >>> >> >> > at java.net.URLClassLoader.findClass(Unknown Source) >> >> >>> >> >> > at java.lang.ClassLoader.loadClass(Unknown Source) >> >> >>> >> >> > at sun.misc.Launcher$AppClassLoader.loadClass(Unknown >> >> Source) >> >> >>> >> >> > at java.lang.ClassLoader.loadClass(Unknown Source) >> >> >>> >> >> > ... 2 more >> >> >>> >> >> > >> >> >>> >> >> > My simple route fails with the above exception. All I have >> in >> >> my >> >> >>> >> pom.xml >> >> >>> >> >> > defined is: >> >> >>> >> >> > >> >> >>> >> >> > <dependency> >> >> >>> >> >> > <groupId>org.apache.camel</groupId> >> >> >>> >> >> > <artifactId>camel-core</artifactId> >> >> >>> >> >> > <version>2.9.2</version> >> >> >>> >> >> > </dependency> >> >> >>> >> >> > <dependency> >> >> >>> >> >> > <groupId>org.apache.camel</groupId> >> >> >>> >> >> > <artifactId>camel-jaxb</artifactId> >> >> >>> >> >> > <version>2.9.2</version> >> >> >>> >> >> > </dependency> >> >> >>> >> >> > >> >> >>> >> >> > Do I need additional dependencies to be added other than >> this? >> >> >>> >> >> > >> >> >>> >> >> > Regards, >> >> >>> >> >> > Jothi >> >> >>> >> >> > >> >> >>> >> >> > On Thu, Aug 16, 2012 at 3:34 PM, Joe San < >> >> codeintheo...@gmail.com >> >> >>> > >> >> >>> >> >> wrote: >> >> >>> >> >> > >> >> >>> >> >> >> I just found that out from Chapter 4. I would have >> expected >> >> this >> >> >>> hint >> >> >>> >> >> that >> >> >>> >> >> >> "when the bean has only one method, camel invokes it >> >> >>> automagically >> >> >>> >> >> without >> >> >>> >> >> >> having to explicitly specifying it" in Chapter 3 itself. >> >> >>> >> >> >> >> >> >>> >> >> >> Regards, >> >> >>> >> >> >> Jothi >> >> >>> >> >> >> >> >> >>> >> >> >> >> >> >>> >> >> >> On Thu, Aug 16, 2012 at 3:32 PM, Claus Ibsen < >> >> >>> claus.ib...@gmail.com >> >> >>> >> >> >wrote: >> >> >>> >> >> >> >> >> >>> >> >> >>> On Thu, Aug 16, 2012 at 3:16 PM, Joe San < >> >> >>> codeintheo...@gmail.com> >> >> >>> >> >> wrote: >> >> >>> >> >> >>> > Thanks for pointing me to toe documentation. My actual >> >> >>> question >> >> >>> >> got >> >> >>> >> >> >>> > clarified once I had a look into the documentation. >> >> >>> >> >> >>> > >> >> >>> >> >> >>> > From the Camel in Action book: >> >> >>> >> >> >>> > >> >> >>> >> >> >>> > from("quartz://report?cron=0+0+6+*+*+?") >> >> >>> >> >> >>> > .to(" >> http://riders.com/orders/cmd=received&date=yesterday >> >> ") >> >> >>> >> >> >>> > .bean(new OrderToCsvBean()) >> >> >>> >> >> >>> > >> >> >>> .to("file://riders/orders?fileName=report-${header.Date}.csv"); >> >> >>> >> >> >>> > >> >> >>> >> >> >>> > How does Camel know which method in the >> OrderToCsvBean() >> >> >>> class to >> >> >>> >> >> >>> invoke. >> >> >>> >> >> >>> > Unfortunately the book does not mentions this in >> Chapter 3. >> >> >>> Not >> >> >>> >> sure >> >> >>> >> >> if >> >> >>> >> >> >>> it >> >> >>> >> >> >>> > is mentioned in Chapter 4 as I'm yet to start with >> Chapter >> >> 4. >> >> >>> >> >> >>> > >> >> >>> >> >> >>> >> >> >>> >> >> >>> Yep chapter 4 is all about using beans/pojos with Camel; >> see >> >> for >> >> >>> >> >> >>> example page 105. >> >> >>> >> >> >>> >> >> >>> >> >> >>> But basically if the pojo/bean has 1 method, then Camel >> knows >> >> >>> that >> >> >>> >> it >> >> >>> >> >> >>> should invoke that method. >> >> >>> >> >> >>> Its when you have 2+ methods it gets more complicated. >> You >> >> can >> >> >>> of >> >> >>> >> >> >>> course tell Camel the method name to use etc. >> >> >>> >> >> >>> >> >> >>> >> >> >>> But its all covered as well in chapter 4, as well you can >> >> find >> >> >>> >> pieces >> >> >>> >> >> >>> of details scattered online in the Camel docs. >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> > Regards, >> >> >>> >> >> >>> > Jothi >> >> >>> >> >> >>> > >> >> >>> >> >> >>> > On Thu, Aug 16, 2012 at 2:46 PM, Babak Vahdat >> >> >>> >> >> >>> > <babak.vah...@swissonline.ch>wrote: >> >> >>> >> >> >>> > >> >> >>> >> >> >>> >> Check the documentation for this: >> >> >>> >> >> >>> >> >> >> >>> >> >> >>> >> http://camel.apache.org/bean-binding.html >> >> >>> >> >> >>> >> >> >> >>> >> >> >>> >> Babak >> >> >>> >> >> >>> >> >> >> >>> >> >> >>> >> Am 16.08.12 14:32 schrieb "Joe San" unter < >> >> >>> >> codeintheo...@gmail.com >> >> >>> >> >> >: >> >> >>> >> >> >>> >> >> >> >>> >> >> >>> >> >I have decided to use JAXB instead of xStream. My >> route >> >> >>> >> definition >> >> >>> >> >> >>> looks >> >> >>> >> >> >>> >> >like this: >> >> >>> >> >> >>> >> > >> >> >>> >> >> >>> >> > final JaxbDataFormat jaxb = new >> >> >>> >> >> >>> >> >JaxbDataFormat("com.example.filexml"); >> >> >>> >> >> >>> >> > context.addRoutes(new RouteBuilder() { >> >> >>> >> >> >>> >> > public void configure() { >> >> >>> >> >> >>> >> > >> >> >>> from("file://my.xml").unmarshal(jaxb).bean(new >> >> >>> >> >> >>> >> >ProcessorBean()).to("file://my.xml"); >> >> >>> >> >> >>> >> > } >> >> >>> >> >> >>> >> > }); >> >> >>> >> >> >>> >> > >> >> >>> >> >> >>> >> >How do I get hold of the UnMarshalled Java Object >> (say >> >> >>> >> Person.java) >> >> >>> >> >> >>> in my >> >> >>> >> >> >>> >> >ProcessorBean. Also, when I use a bean for >> Processing, >> >> how >> >> >>> does >> >> >>> >> >> Camel >> >> >>> >> >> >>> know >> >> >>> >> >> >>> >> >which method to invoke in that bean? >> >> >>> >> >> >>> >> > >> >> >>> >> >> >>> >> >Regards, >> >> >>> >> >> >>> >> >Jothi >> >> >>> >> >> >>> >> > >> >> >>> >> >> >>> >> >On Thu, Aug 16, 2012 at 1:56 PM, Joe San < >> >> >>> >> codeintheo...@gmail.com> >> >> >>> >> >> >>> wrote: >> >> >>> >> >> >>> >> > >> >> >>> >> >> >>> >> >> Guys, >> >> >>> >> >> >>> >> >> >> >> >>> >> >> >>> >> >> I have a route which is defined as below: >> >> >>> >> >> >>> >> >> >> >> >>> >> >> >>> >> >> >> >> from("file://my.xml").marshal().xstream("UTF-8").bean(new >> >> >>> >> >> >>> >> >> ProcessorBean()).to("file://my.xml"); >> >> >>> >> >> >>> >> >> >> >> >>> >> >> >>> >> >> All I want to do is access the my.xml in my >> >> ProcessorBean. >> >> >>> >> Where >> >> >>> >> >> >>> and how >> >> >>> >> >> >>> >> >> do I specify the Java object which will be filled >> with >> >> the >> >> >>> >> values >> >> >>> >> >> >>> in the >> >> >>> >> >> >>> >> >> xml file? >> >> >>> >> >> >>> >> >> >> >> >>> >> >> >>> >> >> Regards, >> >> >>> >> >> >>> >> >> Jothi >> >> >>> >> >> >>> >> >> >> >> >>> >> >> >>> >> >> >> >>> >> >> >>> >> >> >> >>> >> >> >>> >> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> -- >> >> >>> >> >> >>> Claus Ibsen >> >> >>> >> >> >>> ----------------- >> >> >>> >> >> >>> FuseSource >> >> >>> >> >> >>> Email: cib...@fusesource.com >> >> >>> >> >> >>> Web: http://fusesource.com >> >> >>> >> >> >>> Twitter: davsclaus, fusenews >> >> >>> >> >> >>> Blog: http://davsclaus.com >> >> >>> >> >> >>> Author of Camel in Action: http://www.manning.com/ibsen >> >> >>> >> >> >>> >> >> >>> >> >> >> >> >> >>> >> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> >> >> -- >> >> >>> >> >> Claus Ibsen >> >> >>> >> >> ----------------- >> >> >>> >> >> FuseSource >> >> >>> >> >> Email: cib...@fusesource.com >> >> >>> >> >> Web: http://fusesource.com >> >> >>> >> >> Twitter: davsclaus, fusenews >> >> >>> >> >> Blog: http://davsclaus.com >> >> >>> >> >> Author of Camel in Action: http://www.manning.com/ibsen >> >> >>> >> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> -- >> >> >>> >> Claus Ibsen >> >> >>> >> ----------------- >> >> >>> >> FuseSource >> >> >>> >> Email: cib...@fusesource.com >> >> >>> >> Web: http://fusesource.com >> >> >>> >> Twitter: davsclaus, fusenews >> >> >>> >> Blog: http://davsclaus.com >> >> >>> >> Author of Camel in Action: http://www.manning.com/ibsen >> >> >>> >> >> >> >>> >> >> >>> >> >> >>> >> >> >>> -- >> >> >>> Claus Ibsen >> >> >>> ----------------- >> >> >>> FuseSource >> >> >>> Email: cib...@fusesource.com >> >> >>> Web: http://fusesource.com >> >> >>> Twitter: davsclaus, fusenews >> >> >>> Blog: http://davsclaus.com >> >> >>> Author of Camel in Action: http://www.manning.com/ibsen >> >> >>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> Claus Ibsen >> >> ----------------- >> >> FuseSource >> >> Email: cib...@fusesource.com >> >> Web: http://fusesource.com >> >> Twitter: davsclaus, fusenews >> >> Blog: http://davsclaus.com >> >> Author of Camel in Action: http://www.manning.com/ibsen >> >> >> >> >> >> -- >> Claus Ibsen >> ----------------- >> FuseSource >> Email: cib...@fusesource.com >> Web: http://fusesource.com >> Twitter: davsclaus, fusenews >> Blog: http://davsclaus.com >> Author of Camel in Action: http://www.manning.com/ibsen >> > >