Thanks A LOT for the answer mr. Claus, i used
<bean beanType="com.mycompany.MyPojo" method="getHtmlCode"/>
And works great!!!. I do have a follow up question if you don't mind, it's
also about data injection. My route class currently looks like this:
MyRouteClass extends RouteBuilder{
private String myVar1;
//getter and setter for myVar1
public void configure() throws Exception {
FileInputStream fis = new
FileInputStream("myroute.xml");
RoutesDefinition routes =
getContext().loadRoutesDefinition(fis);
}
}
And in my xml file i have this:
<from uri="quartz://fetchUrl?cron=0+0/1+*+*+*+?"/>
<setProperty propertyName="coolProperty">
<simple>myVar1</simple>
</setProperty>
Obviously the property is getting the literal value "myVar1" which is
something i don't want. I need to send the value contained on
the instance member myVar1, is there any way i could achieve this??
Thanks A LOT in advance
2011/7/28 Claus Ibsen <[email protected]>
> Camel is not a bean container. You have to have the bean installed already.
> For example in the spring xml file.
>
> However you can tell Camel the FQN of the bean class and it can invoke
> it directly, in case it has a default ctr.
>
> In the camel route do something like:
> <bean type="com.foo.MyBean"/>
>
> The attribute may have a slightly different name, than type.
>
>
> On Thu, Jul 28, 2011 at 5:08 PM, rogelio_sevilla1
> <[email protected]> wrote:
> > I think i was wrong, the info on this page:
> >
> > http://camel.apache.org/loading-routes-from-xml-files.html
> >
> > is the right answer, however, i think i'm missing something. Currently, i
> > have a camel route that looks like this:
> >
> > public void configure() throws Exception {
> > FileInputStream fis = new
> FileInputStream("myroute.xml");
> > RoutesDefinition routes =
> > getContext().loadRoutesDefinition(fis);
> > }
> >
> >
> > And my myroute.xml file looks like this:
> >
> >
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <routes xmlns="http://camel.apache.org/schema/spring">
> > <bean id="myPojo" class="com.mycompany.MyPojo"/>
> > <route>
> > <from uri="quartz://fetchUrl?cron=0+0/1+*+*+*+?"/>
> > <setProperty propertyName="contract">
> > <simple>contract</simple>
> > </setProperty>
> > <setProperty propertyName="dataFeedSource">
> > <simple>dataFeedSource</simple>
> > </setProperty>
> > <setProperty propertyName="dataFeedType">
> > <simple>dataFeedType</simple>
> > </setProperty>
> > <setProperty propertyName="url">
> > <simple>url</simple>
> > </setProperty>
> > <bean ref="myPojo" method="getHtmlCode"/>
> > <bean ref="myPojo" method="getUrls"/>
> > <split>
> > <tokenize token="\n"/>
> > <to uri="seda:theUrls"/>
> > </split>
> > </route>
> > <route>
> > <from uri="seda:theUrls?concurrentConsumers=8"/>
> > <bean ref="myPojo" method="setUrl"/>
> > <to uri="http://dummyhost" />
> > <bean ref="myPojo" method="processContent"/>
> > </route>
> > </routes>
> >
> >
> >
> > As you can see, i'm declaring a bean using this:
> >
> > <bean id="myPojo" class="com.mycompany.MyPojo"/>
> >
> > However, at the moment of running this code, i'm getting this exception:
> >
> >
> > Failed to create route route1 at: >>> Bean[ref:myPojo method:
> getHtmlCode]
> > because of No bean could be found in the registry for: myPojo
> >
> > Caused by: org.apache.camel.NoSuchBeanException: No bean could be found
> in
> > the registry for: myPojo
> > at
> >
> org.apache.camel.component.bean.RegistryBean.getBean(RegistryBean.java:68)
> > at
> >
> org.apache.camel.model.BeanDefinition.createProcessor(BeanDefinition.java:155)
> > at
> >
> org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:433)
> > at
> >
> org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:181)
> > at
> >
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:815)
> >
> >
> >
> > Am i missing another step on the process??
> >
> > --
> > View this message in context:
> http://camel.465427.n5.nabble.com/Injecting-data-to-routes-loaded-from-xml-file-tp4639765p4643056.html
> > Sent from the Camel - Users mailing list archive at Nabble.com.
> >
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: [email protected]
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>