001 package org.apache.turbine.modules.navigations; 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 024 import org.apache.ecs.ConcreteElement; 025 import org.apache.ecs.StringElement; 026 import org.apache.turbine.modules.Navigation; 027 import org.apache.turbine.pipeline.PipelineData; 028 import org.apache.turbine.services.template.TurbineTemplate; 029 import org.apache.turbine.services.velocity.TurbineVelocity; 030 import org.apache.turbine.util.RunData; 031 import org.apache.velocity.context.Context; 032 033 /** 034 * VelocityNavigation. This screen relies on the VelocityPage 035 * being set as the default page. The doBuildTemplate() assumes the 036 * user has put the template filename in the RunData parameter and set 037 * it to the value of the template file to execute. Specialized 038 * Navigations screens should extend this class and override the 039 * doBuildTemplate( data , context) method. 040 * 041 * @author <a href="mailto:mbryson@mont.mindspring.com">Dave Bryson</a> 042 * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a> 043 * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a> 044 * @version $Id: VelocityNavigation.java 1078552 2011-03-06 19:58:46Z tv $ 045 */ 046 public class VelocityNavigation 047 extends TemplateNavigation 048 { 049 /** The prefix for lookup up navigation pages */ 050 private final String prefix = Navigation.PREFIX + "/"; 051 052 /** 053 * Velocity Navigations extending this class should overide this 054 * method to perform any particular business logic and add 055 * information to the context. 056 * 057 * @deprecated Use PipelineData version instead. 058 * @param data Turbine information. 059 * @param context Context for web pages. 060 * @exception Exception, a generic exception. 061 */ 062 @Deprecated 063 protected void doBuildTemplate(RunData data, 064 Context context) 065 throws Exception 066 { 067 // empty 068 } 069 070 /** 071 * Velocity Navigations extending this class should overide this 072 * method to perform any particular business logic and add 073 * information to the context. 074 * 075 * @param data Turbine information. 076 * @param context Context for web pages. 077 * @exception Exception, a generic exception. 078 */ 079 protected void doBuildTemplate(PipelineData pipelineData, 080 Context context) 081 throws Exception 082 { 083 // empty 084 } 085 086 /** 087 * Needs to be implemented to make TemplateNavigation like us. 088 * The actual method that you should override is the one with the 089 * context in the parameter list. 090 * 091 * @deprecated Use PipelineData version instead. 092 * @param data Turbine information. 093 * @exception Exception, a generic exception. 094 */ 095 @Deprecated 096 @Override 097 protected void doBuildTemplate(RunData data) 098 throws Exception 099 { 100 doBuildTemplate(data, TurbineVelocity.getContext(data)); 101 } 102 103 104 /** 105 * Needs to be implemented to make TemplateNavigation like us. 106 * The actual method that you should override is the one with the 107 * context in the parameter list. 108 * 109 * @param pipelineData Turbine information. 110 * @exception Exception, a generic exception. 111 */ 112 @Override 113 protected void doBuildTemplate(PipelineData pipelineData) 114 throws Exception 115 { 116 doBuildTemplate(pipelineData, TurbineVelocity.getContext(pipelineData)); 117 } 118 119 /** 120 * This Builds the Velocity template. 121 * 122 * @deprecated Use PipelineData version instead. 123 * @param data Turbine information. 124 * @return A ConcreteElement. 125 * @exception Exception, a generic exception. 126 */ 127 @Deprecated 128 @Override 129 public ConcreteElement buildTemplate(RunData data) 130 throws Exception 131 { 132 Context context = TurbineVelocity.getContext(data); 133 134 String navigationTemplate = data.getTemplateInfo().getNavigationTemplate(); 135 String templateName 136 = TurbineTemplate.getNavigationTemplateName(navigationTemplate); 137 138 StringElement output = new StringElement(); 139 output.setFilterState(false); 140 output.addElement(TurbineVelocity 141 .handleRequest(context, prefix + templateName)); 142 return output; 143 } 144 145 /** 146 * This Builds the Velocity template. 147 * 148 * @param data Turbine information. 149 * @return A ConcreteElement. 150 * @exception Exception, a generic exception. 151 */ 152 @Override 153 public ConcreteElement buildTemplate(PipelineData pipelineData) 154 throws Exception 155 { 156 RunData data = getRunData(pipelineData); 157 Context context = TurbineVelocity.getContext(pipelineData); 158 159 String navigationTemplate = data.getTemplateInfo().getNavigationTemplate(); 160 String templateName 161 = TurbineTemplate.getNavigationTemplateName(navigationTemplate); 162 163 StringElement output = new StringElement(); 164 output.setFilterState(false); 165 output.addElement(TurbineVelocity 166 .handleRequest(context, prefix + templateName)); 167 return output; 168 } 169 170 171 }