[ 
https://issues.apache.org/jira/browse/CAMEL-18236?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17560997#comment-17560997
 ] 

Vincent Broucke commented on CAMEL-18236:
-----------------------------------------

I tried your solution but it doesn't work... It seems that camelContext doesn't 
take into account the "depends-on" attribute.

 

It works if I put the camelContext and the cm:property-placeholder in the same 
file and if cm:property-placeholder is declared first, like this :

 

 
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:camel="http://camel.apache.org/schema/blueprint";
           
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0";
           xsi:schemaLocation="
             http://www.osgi.org/xmlns/blueprint/v1.0.0 
https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>    
    <cm:property-placeholder id="voo.esb.services.poc.camelproperty" 
persistent-id="voo.esb.services.poc.camelproperty">
        <cm:default-properties>
            <cm:property name="camel.context.trace" value="false"/>
            <cm:property name="configuration.path" 
value="${karaf.base}/etc/voo.esb.services.contactoccurence.sendemail.yml"/>
        </cm:default-properties>
    </cm:property-placeholder>
    
    <camel:camelContext id="camelPropertyPocCamelContext" 
trace="{{camel.context.trace}}" autoStartup="true">
        <camel:routeBuilder ref="simpleRoute"/>
    </camel:camelContext>
</blueprint> {code}
 

 

But in my case, I have two files, blueprint.xml and environment.xml like this :

 

+blueprint.xml+

 
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:camel="http://camel.apache.org/schema/blueprint";
           xsi:schemaLocation="
             http://www.osgi.org/xmlns/blueprint/v1.0.0 
https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>    
    
    <camel:camelContext id="camelPropertyPocCamelContext" 
trace="{{camel.context.trace}}" autoStartup="true">
        <camel:routeBuilder ref="simpleRoute"/>
    </camel:camelContext>

</blueprint>{code}
 

 

+environment.xml+

 
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";            
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";            
          xmlns:camel="http://camel.apache.org/schema/blueprint";                
  
          xsi:schemaLocation="
            http://www.osgi.org/xmlns/blueprint/v1.0.0 
https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>  

    <cm:property-placeholder id="voo.esb.services.poc.camelproperty" 
persistent-id="voo.esb.services.poc.camelproperty">
        <cm:default-properties>             
            <cm:property name="camel.context.trace" value="false"/>             
            <cm:property name="configuration.path" 
value="${karaf.base}/etc/voo.esb.services.contactoccurence.sendemail.yml"/>     
    
        </cm:default-properties>     
    </cm:property-placeholder>

</blueprint> {code}
That allows me to have a different environment.xml file with differents 
properties for my UnitTests.

 

 

> camel-karaf - camel property not resolved
> -----------------------------------------
>
>                 Key: CAMEL-18236
>                 URL: https://issues.apache.org/jira/browse/CAMEL-18236
>             Project: Camel
>          Issue Type: Bug
>    Affects Versions: 3.15.0
>         Environment: {code:java}
> {code}
>            Reporter: Vincent
>            Priority: Minor
>
> Hi,
>  
> I have a strange comportement with camel and beans containing properties. 
>  
> I have a route "SimpleRoute" in which a configurable processor is injected 
> "FakeProcessor" :
>  
>  
> {code:java}
> @Named
> public class SimpleRoute extends RouteBuilder {
>     private final FakeProcessor fakeProcessor;    
>     @Inject
>     public SimpleRoute(FakeProcessor fakeProcessor) {
>         this.fakeProcessor = fakeProcessor;
>     }    
>     @Override
>     public void configure() throws Exception {
>         from("direct:input")
>             .process(fakeProcessor)
>             .log("Input processed");
>     }
> }{code}
>  
> {code:java}
> @Named("fakeProcessor")
> @Singleton
> public class FakeProcessor implements Processor {
>     private String property;    
>     @Inject
>     public FakeProcessor(@ConfigProperty("${configuration.path}") String 
> property) {
>         this.property = property;
>     }
>     @Override
>     public void process(Exchange exchange) throws Exception {    } 
> }{code}
> {code:java}
> @Named("fakeProcessor2")
> @Singleton public class FakeProcessor2 implements Processor {
>      private String property; 
>    
>      @Inject     
>      public FakeProcessor2(@ConfigProperty("${configuration.path}") String 
> property) {         this.property = property;     }
>     
>      @Override     
>      public void process(Exchange exchange) throws Exception {    } 
> }
> {code}
> The property "${configuration.path}" is interpreted in bean FakeProcessor2 
> but not in bean FakeProcessor (which is injected to my route).
>  
> Here is the blueprint file :
>  
> {code:java}
> <?xml version="1.0" encoding="UTF-8"?>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>            xmlns:camel="http://camel.apache.org/schema/blueprint";
>            
> xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0";        
>     xsi:schemaLocation="
>              http://www.osgi.org/xmlns/blueprint/v1.0.0 
> https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>    
> <cm:property-placeholder id="voo.esb.services.contactoccurence.sendemail" 
> persistent-id="voo.esb.services.contactoccurence.sendemail">
>         <cm:default-properties>
>             <cm:property name="camel.context.trace" value="false"/>
>             <cm:property name="consumer.name" 
> value="ContactOccurenceSendEmail"/>
>             <cm:property name="configuration.path" 
> value="${karaf.base}/etc/voo.esb.services.contactoccurence.sendemail.yml"/>
>         </cm:default-properties>
>     </cm:property-placeholder>
> <camel:camelContext id="contactoccurenceSendEmailCamelContext" 
> trace="{{camel.context.trace}}" autoStartup="true">
>         <camel:propertyPlaceholder id="propertyPlaceholder" 
> location="blueprint:voo.esb.services.contactoccurence.sendemail"/>->
>         <camel:routeBuilder ref="simpleRoute"/>
>     </camel:camelContext>  
>    
>     <bean id="fakeProcessor" 
> class="be.voo.esb.services.contactoccurence.sendemail.processor.FakeProcessor">
>         <argument value="${configuration.path}"/>
>     </bean>
>     <bean id="fakeProcessor2" 
> class="be.voo.esb.services.contactoccurence.sendemail.processor.FakeProcessor2">
>         <argument value="${configuration.path}"/>
>     </bean> 
>     <bean id="simpleRoute" 
> class="be.voo.esb.services.contactoccurence.sendemail.SimpleRoute" 
> scope="prototype">
>         <argument ref="fakeProcessor"/>
>     </bean>
> </blueprint> {code}
>  
> Do you have any ideas? 
>  
> Thank you for your help!
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to