View Javadoc
1 package org.apache.turbine.util.template; 2 3 /* ==================================================================== 4 * The Apache Software License, Version 1.1 5 * 6 * Copyright (c) 2001 The Apache Software Foundation. All rights 7 * reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 16 * 2. Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in 18 * the documentation and/or other materials provided with the 19 * distribution. 20 * 21 * 3. The end-user documentation included with the redistribution, 22 * if any, must include the following acknowledgment: 23 * "This product includes software developed by the 24 * Apache Software Foundation (http://www.apache.org/)." 25 * Alternately, this acknowledgment may appear in the software itself, 26 * if and wherever such third-party acknowledgments normally appear. 27 * 28 * 4. The names "Apache" and "Apache Software Foundation" and 29 * "Apache Turbine" must not be used to endorse or promote products 30 * derived from this software without prior written permission. For 31 * written permission, please contact apache@apache.org. 32 * 33 * 5. Products derived from this software may not be called "Apache", 34 * "Apache Turbine", nor may "Apache" appear in their name, without 35 * prior written permission of the Apache Software Foundation. 36 * 37 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 38 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 39 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 40 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 41 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 43 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 44 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 45 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 47 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 48 * SUCH DAMAGE. 49 * ==================================================================== 50 * 51 * This software consists of voluntary contributions made by many 52 * individuals on behalf of the Apache Software Foundation. For more 53 * information on the Apache Software Foundation, please see 54 * <http://www.apache.org/>;. 55 */ 56 57 import org.apache.turbine.services.pull.ApplicationTool; 58 import org.apache.turbine.util.RelativeDynamicURI; 59 import org.apache.turbine.util.RunData; 60 61 /*** 62 * A customized version of the RelativeDynamicURI to be used in Templates. 63 * Here's an example of its Velocity/WebMacro use: 64 * 65 * <p><code> 66 * $link.setPage("index.wm").addPathInfo("hello","world") 67 * This would return: /myapp/servlet/myapp/template/index.wm/hello/world 68 * </code> 69 * 70 * @author <a href="jmcnally@collab.net">John D. McNally</a> 71 * @author see the authors of TemplateLink 72 * @version $Id: RelativeTemplateLink.java,v 1.2 2002/07/11 16:53:20 mpoeschl Exp $ 73 */ 74 public class RelativeTemplateLink 75 extends RelativeDynamicURI 76 implements ApplicationTool 77 { 78 /*** the pathinfo key stored in the DynamicURI */ 79 private static final String TEMPLATE_KEY = "template"; 80 /*** cache of the template name for getPage() */ 81 private String template = null; 82 83 /*** 84 * Default constructor 85 * <p> 86 * The init method must be called before use. 87 */ 88 public RelativeTemplateLink() 89 { 90 } 91 92 /*** 93 * Constructor. 94 * 95 * @param data a Turbine RunData object. 96 */ 97 public RelativeTemplateLink(RunData data) 98 { 99 super(data); 100 } 101 102 /*** 103 * This will initialise a TemplateLink object that was 104 * constructed with the default constructor (ApplicationTool 105 * method). 106 * 107 * @param data assumed to be a RunData object 108 */ 109 public void init(Object data) 110 { 111 // we just blithely cast to RunData as if another object 112 // or null is passed in we'll throw an appropriate runtime 113 // exception. 114 super.init((RunData) data); 115 } 116 117 /*** 118 * Refresh method - does nothing 119 */ 120 public void refresh() 121 { 122 // empty 123 } 124 125 /*** 126 * This will turn off the execution of res.encodeURL() 127 * by making res == null. This is a hack for cases 128 * where you don't want to see the session information 129 */ 130 public RelativeTemplateLink setEncodeURLOff() 131 { 132 this.res = null; 133 return this; 134 } 135 136 /*** 137 * Sets the template variable used by the Template Service. 138 * 139 * @param t A String with the template name. 140 * @return A TemplateLink. 141 */ 142 public RelativeTemplateLink setPage(String t) 143 { 144 template = t; 145 addPathInfo(TEMPLATE_KEY,t); 146 return this; 147 } 148 149 /*** 150 * Gets the template variable used by the Template Service. 151 * It is only available after setPage() has been called. 152 * 153 * @return The template name. 154 */ 155 public String getPage() 156 { 157 return template; 158 } 159 160 /*** 161 * Returns the URI. After rendering the URI, it clears the 162 * pathInfo and QueryString portions of the DynamicURI. 163 * 164 * @return A String with the URI in the form 165 * http://foo.com/Turbine/template/index.wm/hello/world 166 */ 167 public String toString() 168 { 169 String output = super.toString(); 170 171 // This was added to allow multilple $link variables in one 172 // template. 173 removePathInfo(); 174 removeQueryData(); 175 176 return output; 177 } 178 179 /*** 180 * Returns the URI leaving the source intact. Wraps directly to the 181 * <code>DynamicURI.toString</code> method of the superclass 182 * (avoiding the local toString implementation). 183 * 184 * @return A String with the URI in the form 185 * http://foo.com/Turbine/template/index.wm/hello/world 186 */ 187 public String getURI() 188 { 189 return super.toString(); 190 } 191 }

This page was automatically generated by Maven