[
https://issues.apache.org/jira/browse/CAMEL-7488?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Willem Jiang reassigned CAMEL-7488:
-----------------------------------
Assignee: Willem Jiang
> 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
> Assignee: Willem Jiang
>
> 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)