Repository: camel Updated Branches: refs/heads/master 2e42b1c20 -> aabb88c42
CAMEL-6062: Camel properties now support property placeholder Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/aabb88c4 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/aabb88c4 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/aabb88c4 Branch: refs/heads/master Commit: aabb88c42732c5f8892f56e81a89ed3307ed5a5c Parents: 2e42b1c Author: Claus Ibsen <davscl...@apache.org> Authored: Wed Aug 12 14:37:13 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Wed Aug 12 14:37:13 2015 +0200 ---------------------------------------------------------------------- .../apache/camel/impl/DefaultCamelContext.java | 18 +++++++++++++++++- .../apache/camel/model/PropertiesDefinition.java | 3 --- .../properties/PropertiesComponentTest.java | 9 +++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/aabb88c4/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java index 10fbff9..3cfa60e 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java @@ -39,7 +39,6 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; - import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.naming.Context; @@ -2664,6 +2663,23 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon private void doStartCamel() throws Exception { + // custom properties may use property placeholders so resolve those early on + if (properties != null && !properties.isEmpty()) { + for (Map.Entry<String, String> entry : properties.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + if (value != null) { + String replaced = resolvePropertyPlaceholders(value); + if (!value.equals(replaced)) { + if (log.isDebugEnabled()) { + log.debug("Camel property with key {} replaced value from {} -> {}", new Object[]{key, value, replaced}); + } + entry.setValue(replaced); + } + } + } + } + if (classResolver instanceof CamelContextAware) { ((CamelContextAware) classResolver).setCamelContext(this); } http://git-wip-us.apache.org/repos/asf/camel/blob/aabb88c4/camel-core/src/main/java/org/apache/camel/model/PropertiesDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/PropertiesDefinition.java b/camel-core/src/main/java/org/apache/camel/model/PropertiesDefinition.java index 1ad1095..419e4b9 100644 --- a/camel-core/src/main/java/org/apache/camel/model/PropertiesDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/PropertiesDefinition.java @@ -50,9 +50,6 @@ public class PropertiesDefinition { return properties; } - /*** - * @return A Map of the contained DataFormatType's indexed by id. - */ public Map<String, String> asMap() { Map<String, String> propertiesAsMap = new HashMap<String, String>(); for (PropertyDefinition propertyType : getProperties()) { http://git-wip-us.apache.org/repos/asf/camel/blob/aabb88c4/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentTest.java b/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentTest.java index 94bf5bb..96d5723 100644 --- a/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentTest.java +++ b/camel-core/src/test/java/org/apache/camel/component/properties/PropertiesComponentTest.java @@ -572,10 +572,19 @@ public class PropertiesComponentTest extends ContextTestSupport { System.clearProperty("beer"); } + public void testCamelProperties() throws Exception { + context.start(); + + assertEquals("Hello Camel", context.getProperties().get("foo")); + assertEquals("cool.name", context.getProperties().get("bar")); + } + @Override protected CamelContext createCamelContext() throws Exception { CamelContext context = super.createCamelContext(); context.addComponent("properties", new PropertiesComponent("classpath:org/apache/camel/component/properties/myproperties.properties")); + context.getProperties().put("foo", "Hello {{cool.name}}"); + context.getProperties().put("bar", "cool.name"); return context; }