001package org.apache.turbine.services.velocity; 002 003 004/* 005 * Licensed to the Apache Software Foundation (ASF) under one 006 * or more contributor license agreements. See the NOTICE file 007 * distributed with this work for additional information 008 * regarding copyright ownership. The ASF licenses this file 009 * to you under the Apache License, Version 2.0 (the 010 * "License"); you may not use this file except in compliance 011 * with the License. You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, 016 * software distributed under the License is distributed on an 017 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 018 * KIND, either express or implied. See the License for the 019 * specific language governing permissions and limitations 020 * under the License. 021 */ 022 023 024import java.io.OutputStream; 025import java.io.Writer; 026 027import org.apache.turbine.pipeline.PipelineData; 028import org.apache.turbine.services.TurbineServices; 029import org.apache.velocity.context.Context; 030 031/** 032 * This is a simple static accessor to common Velocity tasks such as 033 * getting an instance of a context as well as handling a request for 034 * processing a template. 035 * <pre> 036 * Context context = TurbineVelocity.getContext(data); 037 * context.put("message", "Hello from Turbine!"); 038 * String results = TurbineVelocity.handleRequest(context, "helloWorld.vm"); 039 * data.getPage().getBody().addElement(results); 040 * </pre> 041 * 042 * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a> 043 * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a> 044 * @author <a href="mailto:jvanzyl@periapt.com.com">Jason van Zyl</a> 045 * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a> 046 * @version $Id: TurbineVelocity.java 1695634 2015-08-13 00:35:47Z tv $ 047 */ 048public abstract class TurbineVelocity 049{ 050 /** 051 * Utility method for accessing the service 052 * implementation 053 * 054 * @return a VelocityService implementation instance 055 */ 056 public static VelocityService getService() 057 { 058 return (VelocityService) TurbineServices 059 .getInstance().getService(VelocityService.SERVICE_NAME); 060 } 061 062 /** 063 * This allows you to pass in a context and a path to a template 064 * file and then grabs an instance of the velocity service and 065 * processes the template and returns the results as a String 066 * object. 067 * 068 * @param context A Context. 069 * @param template The path for the template files. 070 * @return A String. 071 * @exception Exception a generic exception. 072 */ 073 public static String handleRequest(Context context, String template) 074 throws Exception 075 { 076 return getService().handleRequest(context, template); 077 } 078 079 /** 080 * Process the request and fill in the template with the values 081 * you set in the Context. 082 * 083 * @param context A Context. 084 * @param template A String with the filename of the template. 085 * @param out A OutputStream where we will write the process template as 086 * a String. 087 * @exception Exception a generic exception. 088 */ 089 public static void handleRequest(Context context, String template, 090 OutputStream out) 091 throws Exception 092 { 093 getService().handleRequest(context, template, out); 094 } 095 096 /** 097 * Process the request and fill in the template with the values 098 * you set in the Context. 099 * 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}