001: package org.tigris.scarab.services.email;
002:
003: /* ====================================================================
004: * The Apache Software License, Version 1.1
005: *
006: * Copyright (c) 2001 The Apache Software Foundation. All rights
007: * reserved.
008: *
009: * Redistribution and use in source and binary forms, with or without
010: * modification, are permitted provided that the following conditions
011: * are met:
012: *
013: * 1. Redistributions of source code must retain the above copyright
014: * notice, this list of conditions and the following disclaimer.
015: *
016: * 2. Redistributions in binary form must reproduce the above copyright
017: * notice, this list of conditions and the following disclaimer in
018: * the documentation and/or other materials provided with the
019: * distribution.
020: *
021: * 3. The end-user documentation included with the redistribution,
022: * if any, must include the following acknowledgment:
023: * "This product includes software developed by the
024: * Apache Software Foundation (http://www.apache.org/)."
025: * Alternately, this acknowledgment may appear in the software itself,
026: * if and wherever such third-party acknowledgments normally appear.
027: *
028: * 4. The names "Apache" and "Apache Software Foundation" and
029: * "Apache Turbine" must not be used to endorse or promote products
030: * derived from this software without prior written permission. For
031: * written permission, please contact apache@apache.org.
032: *
033: * 5. Products derived from this software may not be called "Apache",
034: * "Apache Turbine", nor may "Apache" appear in their name, without
035: * prior written permission of the Apache Software Foundation.
036: *
037: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
038: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
039: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
040: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
041: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
042: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
043: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
044: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
045: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
046: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
047: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
048: * SUCH DAMAGE.
049: * ====================================================================
050: *
051: * This software consists of voluntary contributions made by many
052: * individuals on behalf of the Apache Software Foundation. For more
053: * information on the Apache Software Foundation, please see
054: * <http://www.apache.org/>.
055: */
056:
057: import java.io.OutputStream;
058: import java.io.Writer;
059: import org.apache.fulcrum.TurbineServices;
060: import org.apache.fulcrum.ServiceException;
061: import org.apache.velocity.context.Context;
062:
063: /**
064: * This is a simple static accessor to common Velocity tasks such as
065: * getting an instance of a context as well as handling a request for
066: * processing a template.
067: * <pre>
068: * Context context = TurbineVelocity.getContext(data);
069: * context.put("message", "Hello from Turbine!");
070: * String results = TurbineVelocity.handleRequest(context, "helloWorld.vm");
071: * data.getPage().getBody().addElement(results);
072: * </pre>
073: *
074: * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a>
075: * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
076: * @author <a href="mailto:jvanzyl@zenplex.com">Jason van Zyl</a>
077: * @author <a href="mailto:stack@collab.net">Michael Stack</a>
078: * @version $Id: VelocityEmail.java 7859 2003-05-03 22:12:58Z jon $
079: */
080: public abstract class VelocityEmail {
081: /**
082: * Utility method for accessing the service
083: * implementation
084: *
085: * @return a VelocityEmailService implementation instance
086: */
087: protected static VelocityEmailService getService() {
088: return (VelocityEmailService) TurbineServices.getInstance()
089: .getService(EmailService.SERVICE_NAME);
090: }
091:
092: /**
093: * This allows you to pass in a context and a path to a template
094: * file and then grabs an instance of the velocity service and
095: * processes the template and returns the results as a String
096: * object.
097: *
098: * @param context A Context.
099: * @param template The path to the template file.
100: * @return The processed template.
101: * @exception Exception Error processing template.
102: */
103: public static String handleRequest(Context context, String template)
104: throws Exception {
105: return getService().handleRequest(context, template);
106: }
107:
108: /**
109: * @see org.tigris.scarab.services.email.VelocityEmailService#handleRequest(Context,
110: * String, String, String)
111: */
112: public String handleRequest(Context context, String template,
113: String charset, String encoding) throws Exception {
114: return getService().handleRequest(context, template, charset,
115: encoding);
116: }
117:
118: /**
119: * Process the request and fill in the template with the values
120: * you set in the Context.
121: *
122: * @param context A Context.
123: * @param filename A String with the filename of the template.
124: * @param out A OutputStream where we will write the process template as
125: * a String.
126: *
127: * @exception Exception Error processing template.
128: *
129: * @see org.tigris.scarab.services.email.VelocityEmailService#handleRequest(Context,
130: * String, OutputStream)
131: */
132: public static void handleRequest(Context context, String template,
133: OutputStream out) throws Exception {
134: getService().handleRequest(context, template, out);
135: }
136:
137: /**
138: * Process the request and fill in the template with the values
139: * you set in the Context.
140: *
141: * @param context A Context.
142: * @param template The path to the template file.
143: * @param out A OutputStream where we will write the process template as
144: * a String.
145: * @param charset The character set to use when writing the result.
146: * @param encoding The encoding to use when merging context and template.
147: *
148: * @exception Exception Error processing template.
149: *
150: * @see org.tigris.scarab.services.email.VelocityEmailService#handleRequest(Context,
151: * String, OutputStream)
152: */
153: public static void handleRequest(Context context, String template,
154: OutputStream out, String charset, String encoding)
155: throws Exception {
156: getService().handleRequest(context, template, out, charset,
157: encoding);
158: }
159:
160: /**
161: * @see org.tigris.scarab.services.email.VelocityEmailService#handleRequest(Context,
162: * String, Writer)
163: */
164: public static void handleRequest(Context context, String filename,
165: Writer writer) throws ServiceException {
166: getService().handleRequest(context, filename, writer, null);
167: }
168:
169: /**
170: * @see org.tigris.scarab.services.email.VelocityEmailService#handleRequest(Context,
171: * String, Writer, String)
172: */
173: public static void handleRequest(Context context, String filename,
174: Writer writer, String encoding) throws ServiceException {
175: getService().handleRequest(context, filename, writer, encoding);
176: }
177: }
|