On Sun, Aug 19, 2012 at 12:14 PM, Joe San <codeintheo...@gmail.com> wrote: > What is wondering me is that I do not see any exception at all. > Thread.sleep(10000) sleeps for 10 seconds and I think that is ample time to > copy a simple 4 line xml to the outbox. Is there a way that I could debug a > bit here to understand what is happening behind the scenes? >
It does not copy to the outbox directory. You have configured the route to write the file to the same input file. If you want to write to a different directory. Then this to("file://Users/jothi/Desktop/inbox/filename=my.xml"); Should possible be changed to to("file://Users/jothi/Desktop/outbox/filename=my.xml"); And you dont have to specify file name as Camel can reuse the input name to("file://Users/jothi/Desktop/outbox"); Also you have a typo in the option. Its fileName, with a capital N. See the options names here http://camel.apache.org/file2 They must be spelled in the right case. > Regards, > Jothi > > On Sun, Aug 19, 2012 at 11:14 AM, Joe San <codeintheo...@gmail.com> wrote: > >> 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 >>>> >>> >>> >> -- 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