1 package org.apache.turbine.services.velocity;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 import java.io.OutputStream;
58 import java.io.Writer;
59
60 import org.apache.turbine.pipeline.PipelineData;
61 import org.apache.turbine.services.TurbineServices;
62 import org.apache.turbine.util.RunData;
63
64 import org.apache.velocity.context.Context;
65
66 /***
67 * This is a simple static accessor to common Velocity tasks such as
68 * getting an instance of a context as well as handling a request for
69 * processing a template.
70 * <pre>
71 * Context context = TurbineVelocity.getContext(data);
72 * context.put("message", "Hello from Turbine!");
73 * String results = TurbineVelocity.handleRequest(context, "helloWorld.vm");
74 * data.getPage().getBody().addElement(results);
75 * </pre>
76 *
77 * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a>
78 * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
79 * @author <a href="mailto:jvanzyl@periapt.com.com">Jason van Zyl</a>
80 * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
81 * @version $Id: TurbineVelocity.java,v 1.8 2004/08/02 08:57:31 epugh Exp $
82 */
83 public abstract class TurbineVelocity
84 {
85 /***
86 * Utility method for accessing the service
87 * implementation
88 *
89 * @return a VelocityService implementation instance
90 */
91 public static VelocityService getService()
92 {
93 return (VelocityService) TurbineServices
94 .getInstance().getService(VelocityService.SERVICE_NAME);
95 }
96
97 /***
98 * This allows you to pass in a context and a path to a template
99 * file and then grabs an instance of the velocity service and
100 * processes the template and returns the results as a String
101 * object.
102 *
103 * @param context A Context.
104 * @param template The path for the template files.
105 * @return A String.
106 * @exception Exception a generic exception.
107 */
108 public static String handleRequest(Context context, String template)
109 throws Exception
110 {
111 return getService().handleRequest(context, template);
112 }
113
114 /***
115 * Process the request and fill in the template with the values
116 * you set in the Context.
117 *
118 * @param context A Context.
119 * @param template A String with the filename of the template.
120 * @param out A OutputStream where we will write the process template as
121 * a String.
122 * @exception Exception a generic exception.
123 */
124 public static void handleRequest(Context context, String template,
125 OutputStream out)
126 throws Exception
127 {
128 getService().handleRequest(context, template, out);
129 }
130
131 /***
132 * Process the request and fill in the template with the values
133 * you set in the Context.
134 *
135 * @param context A Context.
136 * @param template A String with the filename of the template.
137 * @param writer A Writer where we will write the process template as
138 * a String.
139 * @exception Exception a generic exception.
140 */
141 public static void handleRequest(Context context,
142 String template,
143 Writer writer)
144 throws Exception
145 {
146 getService().handleRequest(context, template, writer);
147 }
148
149 /***
150 * This returns a Context that you can pass into handleRequest
151 * once you have populated it with information that the template
152 * will know about.
153 * @deprecated Use the PipelineData version instead.
154 * @param data A Turbine RunData.
155 * @return A Context.
156 */
157 public static Context getContext(RunData data)
158 {
159 return getService().getContext(data);
160 }
161
162 /***
163 * This returns a Context that you can pass into handleRequest
164 * once you have populated it with information that the template
165 * will know about.
166 *
167 * @param data A Turbine RunData.
168 * @return A Context.
169 */
170 public static Context getContext(PipelineData pipelineData)
171 {
172 return getService().getContext(pipelineData);
173 }
174
175 /***
176 * This method returns a blank Context object, which
177 * also contains the global context object. Do not use
178 * this method if you need an empty context object! Use
179 * getNewContext for this.
180 *
181 * @return A WebContext.
182 */
183 public static Context getContext()
184 {
185 return getService().getContext();
186 }
187
188 /***
189 * This method returns a new, empty Context object.
190 *
191 * @return A WebContext.
192 */
193 public static Context getNewContext()
194 {
195 return getService().getNewContext();
196 }
197
198 /***
199 * Performs post-request actions (releases context
200 * tools back to the object pool).
201 *
202 * @param context a Velocity Context
203 */
204 public static void requestFinished(Context context)
205 {
206 getService().requestFinished(context);
207 }
208 }