Class TurbineVelocityService

  • All Implemented Interfaces:
    Initable, Service, TemplateEngineService, VelocityService, org.apache.velocity.app.event.EventHandler, org.apache.velocity.app.event.MethodExceptionEventHandler

    public class TurbineVelocityService
    extends BaseTemplateEngineService
    implements VelocityService, org.apache.velocity.app.event.MethodExceptionEventHandler
    This is a Service that can process Velocity templates from within a Turbine Screen. It is used in conjunction with the templating service as a Templating Engine for templates ending in "vm". It registers itself as translation engine with the template service and gets accessed from there. After configuring it in your properties, it should never be necessary to call methods from this service directly. Here's an example of how you might use it from a screen:
    Context context = TurbineVelocity.getContext(data);
    context.put("message", "Hello from Turbine!");
    String results = TurbineVelocity.handleRequest(context,"helloWorld.vm");
    data.getPage().getBody().addElement(results);
    Version:
    $Id$
    Author:
    Dave Bryson, Rafal Krzewski, Jason van Zyl, Sean Legassick, Daniel Rall, Henning P. Schmiedehausen, Eric Pugh, Peter Courcoux
    • Method Detail

      • getContext

        public org.apache.velocity.context.Context getContext()
        Create a Context object that also contains the globalContext.
        Specified by:
        getContext in interface VelocityService
        Returns:
        A Context object.
      • getNewContext

        public org.apache.velocity.context.Context getNewContext()
        This method returns a new, empty Context object.
        Specified by:
        getNewContext in interface VelocityService
        Returns:
        A Context Object.
      • methodException

        public Object methodException​(org.apache.velocity.context.Context context,
                                      Class clazz,
                                      String method,
                                      Exception e,
                                      org.apache.velocity.util.introspection.Info info)
        MethodException Event Cartridge handler for Velocity. It logs an exception thrown by the velocity processing on error level into the log file
        Specified by:
        methodException in interface org.apache.velocity.app.event.MethodExceptionEventHandler
        Parameters:
        context - The current context
        clazz - The class that threw the exception
        method - The Method name that threw the exception
        e - The exception that would've been thrown
        info - Information about the template, line and column the exception occurred
        Returns:
        A valid value to be used as Return value
      • getContext

        public org.apache.velocity.context.Context getContext​(PipelineData pipelineData)
        Create a Context from the PipelineData object. Adds a pointer to the PipelineData object to the VelocityContext so that PipelineData is available in the templates.
        Specified by:
        getContext in interface VelocityService
        Parameters:
        pipelineData - The Turbine PipelineData object.
        Returns:
        A clone of the WebContext needed by Velocity.
      • handleRequest

        public String handleRequest​(org.apache.velocity.context.Context context,
                                    String filename)
                             throws TurbineException
        Process the request and fill in the template with the values you set in the Context.
        Specified by:
        handleRequest in interface VelocityService
        Parameters:
        context - The populated context.
        filename - The file name of the template.
        Returns:
        The process template as a String.
        Throws:
        TurbineException - Any exception thrown while processing will be wrapped into a TurbineException and rethrown.
      • handleRequest

        public void handleRequest​(org.apache.velocity.context.Context context,
                                  String filename,
                                  OutputStream output)
                           throws TurbineException
        Process the request and fill in the template with the values you set in the Context.
        Specified by:
        handleRequest in interface VelocityService
        Parameters:
        context - A Context.
        filename - A String with the filename of the template.
        output - A OutputStream where we will write the process template as a String.
        Throws:
        TurbineException - Any exception thrown while processing will be wrapped into a TurbineException and rethrown.
      • handleRequest

        public void handleRequest​(org.apache.velocity.context.Context context,
                                  String filename,
                                  Writer writer)
                           throws TurbineException
        Process the request and fill in the template with the values you set in the Context.
        Specified by:
        handleRequest in interface VelocityService
        Parameters:
        context - A Context.
        filename - A String with the filename of the template.
        writer - A Writer where we will write the process template as a String.
        Throws:
        TurbineException - Any exception thrown while processing will be wrapped into a TurbineException and rethrown.
      • setVelocityProperties

        protected void setVelocityProperties​(org.apache.velocity.app.VelocityEngine velocity,
                                             org.apache.commons.configuration2.Configuration conf)
                                      throws Exception
        This method generates the Properties object necessary for the initialization of Velocity. It also converts the various resource loader pathes into webapp relative pathes. It also
        Parameters:
        velocity - The Velocity engine
        conf - The Velocity Service configuration
        Throws:
        Exception - If a problem occurred while converting the properties.
      • requestFinished

        public void requestFinished​(org.apache.velocity.context.Context context)
        Performs post-request actions (releases context tools back to the object pool).
        Specified by:
        requestFinished in interface VelocityService
        Parameters:
        context - a Velocity Context