View Javadoc

    1   package org.apache.turbine.services.velocity;
    2
    3
    4   /*
    5    * Licensed to the Apache Software Foundation (ASF) under one
    6    * or more contributor license agreements.  See the NOTICE file
    7    * distributed with this work for additional information
    8    * regarding copyright ownership.  The ASF licenses this file
    9    * to you under the Apache License, Version 2.0 (the
    10   * "License"); you may not use this file except in compliance
    11   * with the License.  You may obtain a copy of the License at
    12   *
    13   *   http://www.apache.org/licenses/LICENSE-2.0
    14   *
    15   * Unless required by applicable law or agreed to in writing,
    16   * software distributed under the License is distributed on an
    17   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    18   * KIND, either express or implied.  See the License for the
    19   * specific language governing permissions and limitations
    20   * under the License.
    21   */
    22
    23
    24  import java.io.OutputStream;
    25  import java.io.Writer;
    26
    27  import org.apache.turbine.pipeline.PipelineData;
    28  import org.apache.turbine.services.TurbineServices;
    29  import org.apache.velocity.context.Context;
    30
    31  /**
    32   * This is a simple static accessor to common Velocity tasks such as
    33   * getting an instance of a context as well as handling a request for
    34   * processing a template.
    35   * <pre>
    36   * Context context = TurbineVelocity.getContext(data);
    37   * context.put("message", "Hello from Turbine!");
    38   * String results = TurbineVelocity.handleRequest(context, "helloWorld.vm");
    39   * data.getPage().getBody().addElement(results);
    40   * </pre>
    41   *
    42   * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a>
    43   * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
    44   * @author <a href="mailto:jvanzyl@periapt.com.com">Jason van Zyl</a>
    45   * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
    46   * @version $Id: TurbineVelocity.java 1695634 2015-08-13 00:35:47Z tv $
    47   */
    48  public abstract class TurbineVelocity
    49  {
    50      /**
    51       * Utility method for accessing the service
    52       * implementation
    53       *
    54       * @return a VelocityService implementation instance
    55       */
    56      public static VelocityService getService()
    57      {
    58          return (VelocityService) TurbineServices
    59                  .getInstance().getService(VelocityService.SERVICE_NAME);
    60      }
    61
    62      /**
    63       * This allows you to pass in a context and a path to a template
    64       * file and then grabs an instance of the velocity service and
    65       * processes the template and returns the results as a String
    66       * object.
    67       *
    68       * @param context A Context.
    69       * @param template The path for the template files.
    70       * @return A String.
    71       * @exception Exception a generic exception.
    72       */
    73      public static String handleRequest(Context context, String template)
    74              throws Exception
    75      {
    76          return getService().handleRequest(context, template);
    77      }
    78
    79      /**
    80       * Process the request and fill in the template with the values
    81       * you set in the Context.
    82       *
    83       * @param context A Context.
    84       * @param template A String with the filename of the template.
    85       * @param out A OutputStream where we will write the process template as
    86       * a String.
    87       * @exception Exception a generic exception.
    88       */
    89      public static void handleRequest(Context context, String template,
    90                                       OutputStream out)
    91              throws Exception
    92      {
    93          getService().handleRequest(context, template, out);
    94      }
    95
    96      /**
    97       * Process the request and fill in the template with the values
    98       * you set in the Context.
    99       *
    100      * @param context A Context.
    101      * @param template A String with the filename of the template.
    102      * @param writer A Writer where we will write the process template as
    103      * a String.
    104      * @exception Exception a generic exception.
    105      */
    106     public static void handleRequest(Context context,
    107                                      String template,
    108                                      Writer writer)
    109             throws Exception
    110     {
    111         getService().handleRequest(context, template, writer);
    112     }
    113
    114     /**
    115      * This returns a Context that you can pass into handleRequest
    116      * once you have populated it with information that the template
    117      * will know about.
    118      *
    119      * @param pipelineData A Turbine PipelineData.
    120      * @return A Context.
    121      */
    122     public static Context getContext(PipelineData pipelineData)
    123     {
    124         return getService().getContext(pipelineData);
    125     }
    126
    127     /**
    128      * This method returns a blank Context object, which
    129      * also contains the global context object. Do not use
    130      * this method if you need an empty context object! Use
    131      * getNewContext for this.
    132      *
    133      * @return A WebContext.
    134      */
    135     public static Context getContext()
    136     {
    137         return getService().getContext();
    138     }
    139
    140     /**
    141      * This method returns a new, empty Context object.
    142      *
    143      * @return A WebContext.
    144      */
    145     public static Context getNewContext()
    146     {
    147         return getService().getNewContext();
    148     }
    149
    150     /**
    151      * Performs post-request actions (releases context
    152      * tools back to the object pool).
    153      *
    154      * @param context a Velocity Context
    155      */
    156     public static void requestFinished(Context context)
    157     {
    158         getService().requestFinished(context);
    159     }
    160 }