...
Attribute |
Type |
Value |
context |
org.apache.camel.CamelContext |
The Camel Context ( It cannot be used in groovy) |
camelContext |
org.apache.camel.CamelContext |
The Camel Context |
exchange |
org.apache.camel.Exchange |
The current Exchange |
request |
org.apache.camel.Message |
The IN message |
response |
org.apache.camel.Message |
The OUT message |
properties |
org.apache.camel.builder.script.PropertiesFunction |
Camel 2.9: Function with a resolve method to make it easier to use Camels Properties component from scripts. See further below for example. |
...
If you need to use the Properties component from a script to lookup property placeholders, then its a bit cumbersome to do so.
For example to set a header name myHeader with a value from a property placeholder, which key is provided in a header named "foo".
Code Block |
.setHeader("myHeader").groovy("context.resolvePropertyPlaceholders('{{' + request.headers.get('foo') + '}}')")
|
From Camel 2.9 onwards you can now use the properties function and the same example is simpler:
Code Block |
|
.setHeader("myHeader").groovy("properties.resolve(request.headers.get('foo'))")
|
...
You can externalize the script and have Camel load it from a resource such as "classpath:"
, "file:"
, or "http:"
.
This is done using the following syntax: "resource:scheme:location"
, eg to refer to a file on the classpath you can do:
Code Block |
|
.setHeader("myHeader").groovy("resource:classpath:mygroovy.groovy")
|
...
If you use maven you could just add the following to your pom.xml, substituting the version number for the latest & greatest release (see the download page for the latest versions).
Code Block |
|
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-script</artifactId>
<version>x.x.x</version>
</dependency>
|