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

Willem Jiang commented on CAMEL-7488:
-------------------------------------

Camel PropertyComponent will use the  
PropertiesResolver(bridgePropertyPlaceHolder) to lookup the properties, so you 
can get the exception by default, as bridgePropertyPlaceHolder cannot find the 
resource file. 

You can define the propertyPlaceholder to override the default feature like 
this.
{code}
 <camel:propertyPlaceholder id="propertiesOverride" 
ignoreMissingLocation="true"/>
{code}

> PropertiesComponent gets initialized by util:constant
> -----------------------------------------------------
>
>                 Key: CAMEL-7488
>                 URL: https://issues.apache.org/jira/browse/CAMEL-7488
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core, camel-spring
>    Affects Versions: 2.13.0, 2.13.1
>            Reporter: Sven Nold
>
> Using BridgePropertyPlaceholderConfigurer & Spring util constant namespace  
> to reference a static field, the Properties Component gets initialized with 
> this constant.
> {code:xml|title=camelContext.xml }
> <util:constant static-field="anypackage.CONSTANT_1"/>
> <bean id="bridgePropertyPlaceHolder" 
> class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
>     <property name="locations">
>       <list>
>         <value>classpath:test.properties</value>
>       </list>
>     </property>
> </bean>
> <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
>     <camel:route>
>       <camel:from uri="direct://ignore" />
>       <camel:setBody>
>         <camel:simple>{{testProperty}}</camel:simple>
>       </camel:setBody>
>       <camel:to uri="mock://ignore" />
>     </camel:route>
> </camel:camelContext>   
> {code}
> Will produce following Stacktrace (constant contained '>>This will be loaded 
> as location; but I am simply a constant<<'):
> {noformat}
> Caused by: java.io.FileNotFoundException: Properties file >>This will be 
> loaded as location; but I am simply a constant<< not found in classpath
>       at 
> org.apache.camel.component.properties.DefaultPropertiesResolver.loadPropertiesFromClasspath(DefaultPropertiesResolver.java:96)
>       at 
> org.apache.camel.component.properties.DefaultPropertiesResolver.resolveProperties(DefaultPropertiesResolver.java:55)
>       at 
> org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer.resolveProperties(BridgePropertyPlaceholderConfigurer.java:118)
>       at 
> org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:131)
>       at 
> org.apache.camel.component.properties.PropertiesComponent.parseUri(PropertiesComponent.java:117)
>       at 
> org.apache.camel.impl.DefaultCamelContext.resolvePropertyPlaceholders(DefaultCamelContext.java:1223)
>       at 
> org.apache.camel.model.ProcessorDefinition.resolvePropertyPlaceholders(ProcessorDefinition.java:571)
> {noformat}
> My current workaround was to specify propertyPlaceholder with empty location 
> in  camelContext ...
> {code:xml|title=camelContext.xml }
> <!-- same as above -->
> <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
>     <!-- location and id are mandatory -->
>     <camel:propertyPlaceholder id="stupidMandatoryId" location=""/>
>     <camel:route>
>       <camel:from uri="direct://ignore" />
>       <camel:setBody>
>         <camel:simple>{{testProperty}}</camel:simple>
>       </camel:setBody>
>       <camel:to uri="mock://ignore" />
>     </camel:route>
> </camel:camelContext>   
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to