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, <conflue...@apache.org> wrote:

>    Scalate Page *removed* by Daniel 
> Kulp<https://cwiki.apache.org/confluence/display/~dkulp>
>  Scalate
>
> *Available as of Camel 2.3*
>
> The *scalate:* component allows you to process a message using 
> Scalate<http://scalate.fusesource.org/>template, which supports either SSP or 
> Scaml format templates. This can be
> ideal when using 
> Templating<https://cwiki.apache.org/confluence/display/CAMEL/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
> org.springframework.core.io.Resource 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<https://cwiki.apache.org/confluence/display/CAMEL/Configuring+Camel>
>    - Component<https://cwiki.apache.org/confluence/display/CAMEL/Component>
>    - Endpoint <https://cwiki.apache.org/confluence/display/CAMEL/Endpoint>
>    - Getting 
> Started<https://cwiki.apache.org/confluence/display/CAMEL/Getting+Started>
>
>


-- 
James
-------
FuseSource
Email: ja...@fusesource.com
Web: http://fusesource.com
Twitter: jstrachan, fusenews
Blog: http://macstrac.blogspot.com/

Open Source Integration and Messaging

Reply via email to