-
Language:
English
-
Language:
English
Red Hat Training
A Red Hat training course is available for Red Hat Fuse
Chapter 17. JavaScript
Overview
JavaScript, also known as ECMAScript is a Java-based scripting language that allows quick parsing of object. The JavaScript support is part of the
camel-script module.
Adding the script module
To use JavaScript in your routes you need to add a dependency on
camel-script to your project as shown in Example 17.1, “Adding the camel-script dependency”.
Example 17.1. Adding the camel-script dependency
<!-- Maven POM File -->
<properties>
<camel-version>2.12.0.redhat-610379</camel-version>
...
</properties>
<dependencies>
...
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-script</artifactId>
<version>${camel-version}</version>
</dependency>
...
</dependencies>Static import
To use the
javaScript() static method in your application code, include the following import statement in your Java source files:
import static org.apache.camel.builder.camel.script.ScriptBuilder.*;
Built-in attributes
Table 17.1, “JavaScript attributes” lists the built-in attributes that are accessible when using JavaScript.
Table 17.1. JavaScript attributes
| Attribute | Type | Value |
|---|---|---|
context | 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 | Function with a resolve method to make it easier to use the properties component inside scripts. |
The attributes all set at
ENGINE_SCOPE.
Example
Example 17.2, “Route using JavaScript” shows a route that uses JavaScript.
Example 17.2. Route using JavaScript
<camelContext>
<route>
<from uri="direct:start"/>
<choice>
<when>
<langauge langauge="javaScript">request.headers.get('user') == 'admin'</langauge>
<to uri="seda:adminQueue"/>
</when>
<otherwise>
<to uri="seda:regularQueue"/>
</otherwise>
</choice>
</route>
</camelContext>Using the properties component
To access a property value from the properties component, invoke the
resolve method on the built-in properties attribute, as follows:
.setHeader("myHeader").javaScript("properties.resolve(PropKey)")
Where PropKey is the key of the property you want to resolve, where the key value is of
String type.