blob: 9690dda13fa2b6c4080c1a9f51a2ac98b07cd75b [file] [log] [blame]
:jbake-type: page
:jbake-status: published
= Apache Tamaya -- Extension: Integration with Apache Camel
toc::[]
[[Optional]]
== Integration with Apache Camel (Extension Module)
=== Overview
The Tamaya Camel integration module provides different artifacts which allows integration of Apachae Tamaya
configuration with Apache Camel.
=== Compatibility
The module is based on Java 7, so it will not run on Java 7 and beyond.
=== Installation
To benefit from configuration builder support you only must add the corresponding dependency to your module:
[source, xml]
-----------------------------------------------
<dependency>
<groupId>org.apache.tamaya.ext</groupId>
<artifactId>tamaya-camel</artifactId>
<version>{tamaya_version}</version>
</dependency>
-----------------------------------------------
=== The Extensions Provided
Camel integration comes basically with three artifacts:
* A Camel +ResolverFunction+ implementation adding explicit property resolution
(+org.apache.tamaya.integration.camel.TamayaPropertyResolver+).
* A Camel +PropertiesComponent+ implementation, which allows implicitly preconfigures the resolvers from above and
additionally allows using Tamaya configuration as Camel _overrides_
(+org.apache.tamaya.integration.camel.TamayaPropertiesComponent+).
=== Configuring using Camel Java DSL
Camel integration using Java DSL is basically simple:
[source, java]
-----------------------------------------------
import org.apache.tamaya.integration.camel.TamayaPropertiesComponent;
camelContext.addComponent("properties", new TamayaPropertiesComponent());
-----------------------------------------------
Given so you can then use +cfg+ or +tamaya+ as prefix for resolving entries with Tamaya as follows:
[source, java]
-----------------------------------------------
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("direct:hello1").transform().simple("{{cfg:message}}");
}
};
camelContext.addRoutes(builder);
builder = new RouteBuilder() {
public void configure() {
from("direct:hello2").transform().simple("{{tamaya:message}}");
}
};
camelContext.addRoutes(builder);
-----------------------------------------------
Optionally you can also configure +TamayaPropertiesComponent+ that all currently known Tamaya properties are used
as Camel overrides, meaning they are evaluated prior to all other available resolver functions in the Camel
+PropertiesComponent+:
[source, java]
-----------------------------------------------
TamayaPropertiesComponent props = new TamayaPropertiesComponent();
props.setTamayaOverrides(true);
-----------------------------------------------
=== Configuring using Camel XML DSL
Camel integration using XML DSL is basically very similar. You just have to add the +properties+ component as bean
as well. All other configuration parameters (e.g. file URIs are similar supported). In the example code below we
again use Tamaya as the main configuration solutions only using Camel's default behaviour as a fallback:
[source, xml]
-----------------------------------------------
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
">
<routeContext id="myCoolRoutes" xmlns="http://camel.apache.org/schema/spring">
<route id="r1">
<from uri="direct:hello1"/>
<transform>
<simple>{{message}}</simple>
</transform>
</route>
<route id="r2">
<from uri="direct:hello2"/>
<transform>
<simple>{{cfg:message}}</simple>
</transform>
</route>
<route id="r3">
<from uri="direct:hello3"/>
<transform>
<simple>{{tamaya:message}}</simple>
</transform>
</route>
</routeContext>
<bean id="properties" class="org.apache.tamaya.integration.camel.TamayaPropertiesComponent">
<property name="tamayaOverrides" value="true"/>
</bean>
</beans>
-----------------------------------------------