camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Issue with Camel annotations not being processed [OSGi, Blueprint, Javaconfig]
Date Mon, 05 Nov 2012 15:09:41 GMT
On Fri, Nov 2, 2012 at 10:17 PM, Christopher Love
<chris@cnmconsulting.net> wrote:
> Claus and other
>
> I am just coming up to speed on blueprint / osgi, and I think I may be
> running into the same form of issue.  @Value with property place holder
> does not seem to be populating when the route is deployed inside of Karaf.
>  In unit test it populates the string correctly running inside of Karaf it
> does not.
>

I assume @Value is from Spring Framework? And when was this added to
Spring? Anyone knows?
Maybe Spring-DM 1.2.1 don't support it


> Here is some pertinent code:
>
> @Component
> public class EdiTmpClaimRoute extends SpringRouteBuilder {
>
> private @Value("${file.path}")
> String filePath;
>
> @Override
> public void configure() throws Exception {
>     from("activemq:claim-queue?concurrentConsumers=50&asyncConsumer=true")
>     .routeId("edi-qsi-tmp-file-route")
>
> .to("file:"+filePath+"/?fileName=${date:now:yyyyMMdd}-qsi-${exchangeId}.txt");
> }
>
> }
>
> @Configuration
> @PropertySource("classpath:smilebrands-edi.properties")
> @ComponentScan(basePackages = { "com.smilebrands.edi.camel",
> "com.smilebrands.edi.core.qsi" })
> public class CamelServerConfig implements InitializingBean,
> BundleContextAware, ApplicationContextAware {
>
>   private BundleContext bundleContext;
>
>   public BundleContext getBundleContext() {
>     return bundleContext;
>   }
>
>   public void setBundleContext(BundleContext bundleContext) {
>     this.bundleContext = bundleContext;
>   }
>
>   private ApplicationContext applicationContext;
>
>   public void setApplicationContext(ApplicationContext ac) {
>     this.applicationContext = ac;
>   }
>
>   protected ApplicationContext getApplicationContext() {
>     return this.applicationContext;
>   }
>
>   @Bean
>   public ActiveMQComponent amq(@Value("${broker.url}") String brokerURL) {
>     ActiveMQComponent activeMQComponent = new ActiveMQComponent();
>     activeMQComponent.setBrokerURL(brokerURL);
>     return activeMQComponent;
>   }
>
>   @Override
>   public void afterPropertiesSet() throws Exception {
>     // TODO Auto-generated method stub
>
>   }
>
>   @Bean
>   public static PropertySourcesPlaceholderConfigurer
> propertySourcesPlaceholderConfigurer() {
>     return new PropertySourcesPlaceholderConfigurer();
>   }
>
> }
>
> camel-context.xml
>
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
>  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:context="http://www.springframework.org/schema/context"
>  xmlns:camel="http://camel.apache.org/schema/spring"
> xsi:schemaLocation="
>  http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
>  http://www.springframework.org/schema/context
> http://www.springframework.org/schema/context/spring-context.xsd
>    http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring.xsd"
>  >
>
>   <camelContext xmlns="http://camel.apache.org/schema/spring">
>     <contextScan/>
>   </camelContext>
>
>   <bean class="com.smilebrands.edi.config.CamelServerConfig"/>
>   <!-- be sure the configure class to be processed -->
>   <context:annotation-config/>
>
> </beans>
>
> What are your recommendations?  You are stating to use blueprint, but does
> blueprint have the same type of capabilities?
>
> Thanks
>
> Chris
>
> On Wed, Sep 5, 2012 at 7:42 AM, Claus Ibsen <claus.ibsen@gmail.com> wrote:
>
>> Hi
>>
>> Using Aries Blueprint should work fine.
>>
>> There is possible a need for a Gemini integration with Camel to make
>> this work out of the box.
>>
>> Fell free to help out, and take a look at camel-blueprint, which is
>> the component that integrates with Aries Blueprint.
>> Yeah that should maybe have been named camel-blueprint-aries, to leave
>> room for camel-blueprint-gemini,
>>
>>
>> On Tue, Sep 4, 2012 at 3:24 PM, ladoe00 <ladoe00@yahoo.com> wrote:
>> > Hi,
>> >
>> >   I used to have a working system using Spring-OSGi, XML configs and
>> Camel
>> > 2.5 and I thought it would be great to upgrade to the latest version for
>> all
>> > those components.  So I am now using Gemini Blueprint (replacement for
>> > Spring-OSGi), Spring Java config to get rid of XML and Camel 2.10.1.  I
>> have
>> > converted every XML file to be @Configuration classes with RouteBuilders,
>> > which I think is great, but now I am having problems injecting a
>> > CamelContext and ProducerTemplates.  That will just not work at all.  I
>> must
>> > be missing something...
>> >
>> > For example:
>> > public class MyConfig extends SingleRouteCamelConfiguration implements
>> > CamelContextAware
>> > {
>> >     @Value("input")
>> >     private String input;
>> >
>> >     @Autowired
>> >     private Factory myFactory;
>> >
>> >     @EndpointInject(uri="seda:aQueue")
>> >     private ProducerTemplate producer1;
>> >
>> >     @Produce(uri="seda:aQueue")
>> >     private ProducerTemplate producer2;
>> >
>> >     private CamelContext camelContext;  //  with appropriate
>> getter/setter
>> > ...
>> > }
>> >
>> > input and myFactory are injected with values, but producer1, producer2
>> and
>> > camelContext are not.
>> >
>> > I am using Equinox and Eclipse Gemini Blueprint Extender, camel-core,
>> > camel-spring, camel-spring-javaconfig as well as one XML support file
>> (that
>> > does get loaded):
>> > <beans>
>> >     <context:annotation-config/>
>> >     <context:component-scan base-package="*"/>
>> >     <context:property-placeholder
>> location="classpath:config.properties"/>
>> > </beans>
>> >
>> > I have no camelContext declared anywhere.  My routes are declared and
>> > created with @Configuration classes returning RouteBuilders (this part
>> works
>> > well).
>> >
>> > In summary, everything works well beside Camel annotations (@Produce,
>> > @EndpointInject and CamelContextAware interface, which should inject a
>> > CamelContext from my understanding).  What am I not declaring/not
>> starting
>> > right?
>> >
>> > Thanks!
>> >
>> >
>> >
>> > --
>> > View this message in context:
>> http://camel.465427.n5.nabble.com/Issue-with-Camel-annotations-not-being-processed-OSGi-Blueprint-Javaconfig-tp5718606.html
>> > Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> FuseSource
>> Email: cibsen@fusesource.com
>> Web: http://fusesource.com
>> Twitter: davsclaus, fusenews
>> Blog: http://davsclaus.com
>> Author of Camel in Action: http://www.manning.com/ibsen
>>
>
>
>
> --
> Chris Love
> clove@cnmconsulting.net
> (303) 929-8509
> http://www.cnmconsulting.net
> Calendar: http://j.mp/cnmCalendar
> Follow me on twitter: @chrislovecnm



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Mime
View raw message