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 }