camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Willem Jiang (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CAMEL-7488) PropertiesComponent gets initialized by util:constant
Date Mon, 09 Jun 2014 03:41:01 GMT

    [ 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)

Mime
View raw message