[
https://issues.apache.org/jira/browse/CAMEL-8307?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Siarhei Krukau updated CAMEL-8307:
----------------------------------
Description:
When whitespaces or newlines are used in {{location}} attribute of
{{propertyPlaceholder}} (XML):
{code:xml}
<propertyPlaceholder id="camelPropertyPlaceholderConfigurer"
location="classpath:a/b/c/environments/base.properties,
classpath:a/b/c/environments/${env:ENV}/env.properties,
classpath:a/b/c/environments/${ENV}/env.properties"
ignoreMissingLocation="true"/>
{code}
, the properties are loaded only from the first source ({{base.properties}}) in
this case. The problem may be in
{{org.apache.camel.component.properties.DefaultPropertiesResolver#loadPropertiesFromClasspath}}:
{code:java}
protected Properties loadPropertiesFromClasspath(CamelContext context,
boolean ignoreMissingLocation, String path) throws IOException {
Properties answer = new Properties();
if (path.startsWith("classpath:")) {
path = ObjectHelper.after(path, "classpath:");
}
InputStream is = context.getClassResolver().loadResourceAsStream(path);
if (is == null) {
...
} else {...}
return answer;
}
{code}
{{startsWith}} returns false as the path are splitted around {{,}}. Trimming
the path somewhere around those calls may help.
was:
When whitespaces are used in {{location}} attribute of {{propertyPlaceholder}}
(XML):
{code:xml}
<propertyPlaceholder id="camelPropertyPlaceholderConfigurer"
location="classpath:a/b/c/environments/base.properties,
classpath:a/b/c/environments/${env:ENV}/env.properties,
classpath:a/b/c/environments/${ENV}/env.properties"
ignoreMissingLocation="true"/>
{code}
, the properties are loaded only from the first source ({{base.properties}}) in
this case. The problem may be in
{{org.apache.camel.component.properties.DefaultPropertiesResolver#loadPropertiesFromClasspath}}:
{code:java}
protected Properties loadPropertiesFromClasspath(CamelContext context,
boolean ignoreMissingLocation, String path) throws IOException {
Properties answer = new Properties();
if (path.startsWith("classpath:")) {
path = ObjectHelper.after(path, "classpath:");
}
InputStream is = context.getClassResolver().loadResourceAsStream(path);
if (is == null) {
...
} else {...}
return answer;
}
{code}
{{startsWith}} returns false as the path are splitted around {{,}}. Trimming
the path somewhere around those calls may help.
> Loaded properties are empty if whitespaces are used in
> propertyPlaceholder#location
> -----------------------------------------------------------------------------------
>
> Key: CAMEL-8307
> URL: https://issues.apache.org/jira/browse/CAMEL-8307
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.12.0
> Reporter: Siarhei Krukau
> Priority: Minor
>
> When whitespaces or newlines are used in {{location}} attribute of
> {{propertyPlaceholder}} (XML):
> {code:xml}
> <propertyPlaceholder id="camelPropertyPlaceholderConfigurer"
> location="classpath:a/b/c/environments/base.properties,
> classpath:a/b/c/environments/${env:ENV}/env.properties,
> classpath:a/b/c/environments/${ENV}/env.properties"
> ignoreMissingLocation="true"/>
> {code}
> , the properties are loaded only from the first source ({{base.properties}})
> in this case. The problem may be in
> {{org.apache.camel.component.properties.DefaultPropertiesResolver#loadPropertiesFromClasspath}}:
> {code:java}
> protected Properties loadPropertiesFromClasspath(CamelContext context,
> boolean ignoreMissingLocation, String path) throws IOException {
> Properties answer = new Properties();
> if (path.startsWith("classpath:")) {
> path = ObjectHelper.after(path, "classpath:");
> }
> InputStream is =
> context.getClassResolver().loadResourceAsStream(path);
> if (is == null) {
> ...
> } else {...}
> return answer;
> }
> {code}
> {{startsWith}} returns false as the path are splitted around {{,}}. Trimming
> the path somewhere around those calls may help.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)