[
https://issues.apache.org/jira/browse/CAMEL-3547?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dan Checkoway updated CAMEL-3547:
---------------------------------
Description:
I find Camel's property placeholder support clumsy. I already use Spring's
PropertyPlaceholderConfigurer, and I feel like Camel should be able to harness
that. I realize Spring doesn't make it easy to access those properties, but I
have come up with a way to enable Camel to use them...
By simply extending PropertyPlaceholderConfigurer, we will be able to intercept
and absorb the properties that Spring has access to:
{{
import java.util.Properties;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
public class CamelPropertyPlaceholderConfigurer extends
PropertyPlaceholderConfigurer {
private final Properties properties = new Properties();
@Override
protected void processProperties(ConfigurableListableBeanFactory
beanFactory, Properties props) {
super.processProperties(beanFactory, props);
// "Absorb" all properties that pass through so we can expose them later
properties.putAll(props);
}
/** Expose all absorbed properties */
public final Properties getProperties() {
return properties;
}
}
}}
It means users who want to take advantage of this would need to instantiate
this instead of the stock PropertyPlaceholderConfigurer, but that's no problem:
<bean class="org.apache.camel.impl.CamelPropertyPlaceholderConfigurer">
<p:location="..."/>
</bean>
That way, you wouldn't need to declare a "duplicating" <propertyPlaceholer> in
the CamelContext. What do you think, is this feasible?
was:
I find Camel's property placeholder support clumsy. I already use Spring's
PropertyPlaceholderConfigurer, and I feel like Camel should be able to harness
that. I realize Spring doesn't make it easy to access those properties, but I
have come up with a way to enable Camel to use them...
By simply extending PropertyPlaceholderConfigurer, we will be able to intercept
and absorb the properties that Spring has access to:
import java.util.Properties;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
public class CamelPropertyPlaceholderConfigurer extends
PropertyPlaceholderConfigurer {
private final Properties properties = new Properties();
@Override
protected void processProperties(ConfigurableListableBeanFactory
beanFactory, Properties props) {
super.processProperties(beanFactory, props);
// "Absorb" all properties that pass through so we can expose them later
properties.putAll(props);
}
/** Expose all absorbed properties */
public final Properties getProperties() {
return properties;
}
}
It means users who want to take advantage of this would need to instantiate
this instead of the stock PropertyPlaceholderConfigurer, but that's no problem:
<bean class="org.apache.camel.impl.CamelPropertyPlaceholderConfigurer">
<p:location="..."/>
</bean>
That way, you wouldn't need to declare a "duplicating" <propertyPlaceholer> in
the CamelContext. What do you think, is this feasible?
> Custom "absorbing" PropertyPlaceholderConfigurer
> ------------------------------------------------
>
> Key: CAMEL-3547
> URL: https://issues.apache.org/jira/browse/CAMEL-3547
> Project: Camel
> Issue Type: Improvement
> Components: camel-core
> Reporter: Dan Checkoway
> Priority: Minor
>
> I find Camel's property placeholder support clumsy. I already use Spring's
> PropertyPlaceholderConfigurer, and I feel like Camel should be able to
> harness that. I realize Spring doesn't make it easy to access those
> properties, but I have come up with a way to enable Camel to use them...
> By simply extending PropertyPlaceholderConfigurer, we will be able to
> intercept and absorb the properties that Spring has access to:
> {{
> import java.util.Properties;
> import
> org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
> import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
> public class CamelPropertyPlaceholderConfigurer extends
> PropertyPlaceholderConfigurer {
> private final Properties properties = new Properties();
>
> @Override
> protected void processProperties(ConfigurableListableBeanFactory
> beanFactory, Properties props) {
> super.processProperties(beanFactory, props);
> // "Absorb" all properties that pass through so we can expose them
> later
> properties.putAll(props);
> }
> /** Expose all absorbed properties */
> public final Properties getProperties() {
> return properties;
> }
> }
> }}
> It means users who want to take advantage of this would need to instantiate
> this instead of the stock PropertyPlaceholderConfigurer, but that's no
> problem:
> <bean class="org.apache.camel.impl.CamelPropertyPlaceholderConfigurer">
> <p:location="..."/>
> </bean>
> That way, you wouldn't need to declare a "duplicating" <propertyPlaceholer>
> in the CamelContext. What do you think, is this feasible?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.