String Template
The string-template:
component allows you to process a message using a String Template. This can be ideal when using Templating to generate responses for requests.
Maven users will need to add the following dependency to their pom.xml
for this component:
Code Block |
---|
|
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stringtemplate</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
|
...
Code Block |
---|
string-template:templateName[?options]
|
Where Where templateName
is the classpath-local URI of the template to invoke; or the complete URL of the remote template.
You can append query options to the URI in the following format, ?option=value&option=value&...
Options
Div |
---|
class | confluenceTableSmall |
---|
|
Option | Default | Description |
---|
contentCache
| false
| Cache for the resource content when its loaded. Note: as of Camel 2.9 cached resource content can be cleared via JMX using the endpoint's clearContentCache operation. | delimiterStart
| null
| Since Camel 2.11.1, configuring the variable start delimiter | delimiterStop
| null
| Since Camel 2.11.1, configuring the variable end delimiter |
|
...
Camel will store a reference to the resource in the message header with key, org.apache.camel.stringtemplate.resource
. The Resource is an org.springframework.core.io.Resource
object.
Hot reloading
The string template resource is by default hot-reloadable for both file and classpath resources (expanded jar). If you set contentCache=true
, Camel loads the resource only once and hot-reloading is not possible. This scenario can be used in production when the resource never changes.
...
Camel will provide exchange information as attributes (just a java.util.Map
) to the string template. The Exchange is transfered transferred as:
Div |
---|
class | confluenceTableSmall |
---|
|
key | value |
---|
exchange
| The Exchange itself. | headers
| The headers of the In message. | camelContext
| The Camel Context. | request
| The In The IN message. | in
| The In The IN message. | body
| The In The IN message body. | out
| The Out The OUT message (only for for InOut message exchange pattern). | response
| The Out The OUT message (only for for InOut message exchange pattern). |
|
Since From Camel 2.14, you can define the custom context map by setting the message header "header CamelStringTemplateVariableMap
" just like the below code.
Code Block |
---|
|
Map<String, Object> variableMap = new HashMap<String, Object>();
Map<String, Object> headersMap = new HashMap<String, Object>();
headersMap.put("name", "Willem");
variableMap.put("headers", headersMap);
variableMap.put("body", "Monday");
variableMap.put("exchange", exchange);
exchange.getIn().setHeader("CamelStringTemplateVariableMap", variableMap);
|
...
In this sample we want to use a string template to send an order confirmation email. The email template is laid out in StringTemplate
as:
This example works for camel 2.11.0. If your camel version is less than 2.11.0, the variables should be started and ended with $
.
Code Block |
---|
Dear <headers.lastName>, <headers.firstName>
Thanks for the order of <headers.item>.
Regards Camel Riders Bookstore
<body>
|
And the java code is as follows:
Wiki Markup |
---|
{snippet:id=e1|lang=java|url=camel/trunk/components/camel-stringtemplate/src/test/java/org/apache/camel/component/stringtemplate/StringTemplateLetterTest.java} |
Include Page |
---|
| Endpoint See Also |
---|
| Endpoint See Also |
---|
|