1 package org.apache.turbine.modules.actions; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 import org.apache.turbine.modules.screens.TemplateScreen; 23 import org.apache.turbine.pipeline.PipelineData; 24 import org.apache.turbine.services.velocity.TurbineVelocity; 25 import org.apache.turbine.util.RunData; 26 import org.apache.turbine.util.velocity.VelocityActionEvent; 27 import org.apache.velocity.context.Context; 28 29 /** 30 * This class provides a convenience methods for Velocity Actions to use. Since 31 * this class is abstract, it should only be extended and not used directly. 32 * 33 * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a> 34 * @author <a href="mailto:jvanzyl@periapt.com">Jason van Zyl</a> 35 * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a> 36 * @version $Id: VelocityAction.java 1066529 2011-02-02 17:01:46Z ludwig $ 37 */ 38 public abstract class VelocityAction extends VelocityActionEvent 39 { 40 /** 41 * You SHOULD NOT override this method and implement it in your action. 42 * 43 * @deprecated Use PipelineData version instead. 44 * @param data Turbine information. 45 * @throws Exception a generic exception. 46 */ 47 @Override 48 @Deprecated 49 public void doPerform(RunData data) throws Exception 50 { 51 doPerform(data, getContext(data)); 52 } 53 54 /** 55 * You SHOULD NOT override this method and implement it in your action. 56 * 57 * @param data Turbine information. 58 * @throws Exception a generic exception. 59 */ 60 @Override 61 public void doPerform(PipelineData pipelineData) throws Exception 62 { 63 doPerform(pipelineData, getContext(pipelineData)); 64 } 65 66 /** 67 * Initialize the module. 68 * 69 * @throws Exception a generic exception. 70 */ 71 @Override 72 public void initialize() throws Exception 73 { 74 initialized = true; 75 } 76 77 /** 78 * You SHOULD override this method and implement it in your action. 79 * 80 * @deprecated Use PipelineData version instead. 81 * @param data Turbine information. 82 * @param context Context for web pages. 83 * @throws Exception a generic exception. 84 */ 85 @Deprecated 86 public abstract void doPerform(RunData data, Context context) 87 throws Exception; 88 89 /** 90 * You SHOULD override this method and implement it in your action. 91 * 92 * This should become abstract when the RunData version is removed. For 93 * compatibility reasons this method will default to using the RunData 94 * method unles it is overidden, which it should be. 95 * 96 * @param data Turbine information. 97 * @param context Context for web pages. 98 * @throws Exception a generic exception. 99 */ 100 public void doPerform(PipelineData pipelineData, Context context) 101 throws Exception 102 { 103 RunData data = getRunData(pipelineData); 104 doPerform(data, context); 105 } 106 107 /** 108 * Sets up the context and then calls super.perform(); thus, subclasses 109 * don't have to worry about getting a context themselves! If a subclass 110 * throws an exception then depending on whether 111 * action.event.bubbleexception is true, then it bubbles it farther up, or 112 * traps it there. 113 * 114 * @deprecated Use PipelineData version instead. 115 * @param data Turbine information. 116 * @throws Exception a generic exception. 117 */ 118 @Deprecated 119 @Override 120 protected void perform(RunData data) throws Exception 121 { 122 try 123 { 124 super.perform(data); 125 } catch (Exception e) 126 { 127 if (bubbleUpException) 128 { 129 throw e; 130 } 131 132 } 133 } 134 135 /** 136 * Sets up the context and then calls super.perform(); thus, subclasses 137 * don't have to worry about getting a context themselves! If a subclass 138 * throws an exception then depending on whether 139 * action.event.bubbleexception is true, then it bubbles it farther up, or 140 * traps it there. 141 * 142 * @param data Turbine information. 143 * @throws Exception a generic exception. 144 */ 145 @Override 146 protected void perform(PipelineData pipelineData) throws Exception 147 { 148 try 149 { 150 super.perform(pipelineData); 151 } catch (Exception e) 152 { 153 if (bubbleUpException) 154 { 155 throw e; 156 } 157 158 } 159 } 160 161 /** 162 * This method is used when you want to short circuit an Action and change 163 * the template that will be executed next. 164 * 165 * @deprecated Use PipelineData version instead. 166 * @param data Turbine information. 167 * @param template The template that will be executed next. 168 */ 169 @Deprecated 170 public void setTemplate(RunData data, String template) 171 { 172 TemplateScreen.setTemplate(data, template); 173 } 174 175 /** 176 * This method is used when you want to short circuit an Action and change 177 * the template that will be executed next. 178 * 179 * @param data Turbine information. 180 * @param template The template that will be executed next. 181 */ 182 public void setTemplate(PipelineData pipelineData, String template) 183 { 184 TemplateScreen.setTemplate(pipelineData, template); 185 } 186 187 /** 188 * Return the Context needed by Velocity. 189 * 190 * @deprecated Use PipelineData version instead. 191 * @param data Turbine information. 192 * @return Context, a context for web pages. 193 */ 194 @Deprecated 195 protected Context getContext(RunData data) 196 { 197 return TurbineVelocity.getContext(data); 198 } 199 200 /** 201 * Return the Context needed by Velocity. 202 * 203 * @param data Turbine information. 204 * @return Context, a context for web pages. 205 */ 206 protected Context getContext(PipelineData pipelineData) 207 { 208 return TurbineVelocity.getContext(pipelineData); 209 } 210 211 }