camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Strachan <>
Subject Re: [CONF] Apache Camel > Scalate
Date Wed, 20 Jul 2011 07:47:19 GMT
Dan could you please explain why you're deleting pages from the wiki which
describe open source camel components without first at least having a
discussion about it?

On 19 July 2011 18:54, <> wrote:

>    Scalate Page *removed* by Daniel Kulp<>
>  Scalate
> *Available as of Camel 2.3*
> The *scalate:* component allows you to process a message using Scalate<>template,
which supports either SSP or Scaml format templates. 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, and use the correct version of Scalate:
> <dependency>
>     <groupId>org.fusesource.scalate</groupId>
>     <artifactId>scalate-camel</artifactId>
>     <version>1.3.2</version></dependency>
>  URI format
> scalate:templateName[?options]
>  Where *templateName* is the classpath-local URI of the template to
> invoke; or the complete URL of the remote template (eg:
> file://folder/myfile.ssp).
> You can append query options to the URI in the following format,
> ?option=value&option=value&...
> Message Headers
> The scalate component sets a couple headers on the message (you can't set
> these yourself and from Camel 2.1 scalate component will not set these
> headers which will cause some side effect on the dynamic template support):
>   Header  Description   CamelScalateResource  The resource as an
> object.   CamelScalateResourceUri The
> *templateName* as a String object.
> Headers set during the Scalate evaluation are returned to the message and
> added as headers. Then its kinda possible to return values from Scalate to
> the Message.
> For example, to set the header value of fruit in the Scalate template .tm:
> <% in.setHeader('fruit', 'Apple') %>
>  The fruit header is now accessible from the message.out.headers.
> Scalate Context
> Camel will provide exchange information in the Scalate context (just a Map).
> The Exchange is transfered as:
>   key  value   exchange  The Exchange itself.   headers  The headers of
> the In message.   camelContext  The Camel Context intance.   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).
>  Hot reloading
> The Scalate template resource is, by default, hot reloadable for both file
> and classpath resources (expanded jar).
> Dynamic templates
> Camel provides two headers by which you can define a different resource
> location for a template or the template content itself. If any of these
> headers is set then Camel uses this over the endpoint configured resource.
> This allows you to provide a dynamic template at runtime.
>   Header  Type  Description   CamelScalateResourceUri  String  An URI for
> the template resource to use instead of the endpoint configured.  CamelScalateTemplate
String The template to use instead of the endpoint configured.
>  Samples
> For example you could use something like
> from("activemq:My.Queue").
>   to("scalate:com/acme/MyResponse.ssp");
>  To use a Scalate template to formulate a response to a message for InOut
> message exchanges (where there is a JMSReplyTo header).
> If you want to use InOnly and consume the message and send it to another
> destination, you could use the following route:
> from("activemq:My.Queue").
>   to("scalate:com/acme/MyResponse.scaml").
>   to("activemq:Another.Queue");
>  It's possible to specify what template the component should use
> dynamically via a header, so for example:
> from("direct:in").
>   setHeader("CamelScalateResourceUri").constant("path/to/my/template.scaml").
>   to("scalate:dummy");
>  It's possible to specify a template directly as a header the component
> should use dynamically via a header, so for example:
> from("direct:in").
>   setHeader("CamelScalateTemplate").constant("<%@ attribute body: Object %>\nHi
this is a scalate template that can do templating ${body}").
>   to("scalate:dummy");
>  The Email Sample
> In this sample we want to use Scalate templating for an order confirmation
> email. The email template is laid out in Scalate as:
> <%@ attribute in: org.apache.camel.scala.RichMessage %>
> Dear ${in("lastName"}, ${in("firstName")}
> Thanks for the order of ${in("item")}.
> Regards Camel Riders Bookstore
> ${in.body}
>  See Also
>    - Configuring Camel<>
>    - Component<>
>    - Endpoint <>
>    - Getting Started<>

Twitter: jstrachan, fusenews

Open Source Integration and Messaging

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message