Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Attribute

Type

Value

context

org.apache.camel.CamelContext

The Camel Context ( It cannot be used in groovy)

camelContextorg.apache.camel.CamelContextThe 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
languagejava

.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
languagejava

.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
xml
xml

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-script</artifactId>
  <version>x.x.x</version>
</dependency>