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