Wiki Markup |
---|
h2. String Template |
...
The *string-template:* component allows you to process a message using a [String Template|http://www.stringtemplate.org/]. 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 |
---|
{code:xml}
<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>
|
URI format
Code Block |
---|
{code} h3. URI format {code} string-template:templateName[?options] {code} 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
...
Option
...
Default
...
Description
...
contentCache
...
false
...
}} h3. Options {div:class=confluenceTableSmall} || Option || Default || Description || | {{contentCache}} | {{false}} | New option in Camel 1.4. Cache for the resource content when its loaded |
...
Headers
...
. | {div} h3. Headers 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. h3. |
...
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. |
...
h3. StringTemplate Attributes |
...
Camel will provide exchange information as attributes (just a {{java.util.Map}}) to the string template. The Exchange is transfered as: |
...
key | value |
---|---|
| The Exchange itself. |
| The headers of the In message. |
| The Camel Context. |
| The In message. |
| The In message. |
| The In message body. |
| The Out message (only for InOut message exchange pattern). |
| The Out message (only for InOut message exchange pattern). |
Samples
For example you could use a string template as follows in order to formulate a response to a message:
Code Block |
---|
|| key || value ||
| {{exchange}} | The Exchange itself. |
| {{headers}} | The headers of the In message. |
| {{camelContext}} | The Camel Context. |
| {{request}} | The In message. |
| {{in}} | The In message. |
| {{body}} | The In message body. |
| {{out}} | The Out message (only for InOut message exchange pattern). |
| {{response}} | The Out message (only for InOut message exchange pattern). |
h3. Samples
For example you could use a string template as follows in order to formulate a response to a message:
{code}
from("activemq:My.Queue").
to("string-template:com/acme/MyResponse.tm");
|
The Email Sample
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:
Code Block |
---|
{code} h3. The Email Sample 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: {code} Dear $headers.lastName$, $headers.firstName$ Thanks for the order of $headers.item$. Regards Camel Riders Bookstore $body$ {code} 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 |
...
:Endpoint See |
...
Also} |