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. 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 >