%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
org.apache.turbine.util.uri.TemplateURI |
|
|
1 | package org.apache.turbine.util.uri; |
|
2 | ||
3 | /* |
|
4 | * Copyright 2001-2005 The Apache Software Foundation. |
|
5 | * |
|
6 | * Licensed under the Apache License, Version 2.0 (the "License") |
|
7 | * you may not use this file except in compliance with the License. |
|
8 | * You may obtain a copy of the License at |
|
9 | * |
|
10 | * http://www.apache.org/licenses/LICENSE-2.0 |
|
11 | * |
|
12 | * Unless required by applicable law or agreed to in writing, software |
|
13 | * distributed under the License is distributed on an "AS IS" BASIS, |
|
14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
15 | * See the License for the specific language governing permissions and |
|
16 | * limitations under the License. |
|
17 | */ |
|
18 | ||
19 | import java.util.Iterator; |
|
20 | ||
21 | import org.apache.commons.lang.StringUtils; |
|
22 | ||
23 | import org.apache.turbine.util.RunData; |
|
24 | import org.apache.turbine.util.ServerData; |
|
25 | import org.apache.turbine.util.parser.ParameterParser; |
|
26 | ||
27 | /** |
|
28 | * This class allows you to keep all the information needed for a single |
|
29 | * link at one place. It keeps your query data, path info, the server |
|
30 | * scheme, name, port and the script path. It is tuned for usage with a |
|
31 | * Template System e.g. Velocity. |
|
32 | * |
|
33 | * If you must generate a Turbine Link in a Template System, use this class. |
|
34 | * |
|
35 | * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a> |
|
36 | * @version $Id: TemplateURI.java 264148 2005-08-29 14:21:04Z henning $ |
|
37 | */ |
|
38 | ||
39 | public class TemplateURI |
|
40 | extends TurbineURI |
|
41 | { |
|
42 | /** |
|
43 | * Empty C'tor. Uses Turbine.getDefaultServerData(). |
|
44 | * |
|
45 | */ |
|
46 | public TemplateURI() |
|
47 | { |
|
48 | 0 | super(); |
49 | 0 | } |
50 | ||
51 | /** |
|
52 | * Constructor with a RunData object |
|
53 | * |
|
54 | * @param runData A RunData object |
|
55 | */ |
|
56 | public TemplateURI(RunData runData) |
|
57 | { |
|
58 | 0 | super(runData); |
59 | 0 | } |
60 | ||
61 | /** |
|
62 | * Constructor, set explicit redirection |
|
63 | * |
|
64 | * @param runData A RunData object |
|
65 | * @param redirect True if redirection allowed. |
|
66 | */ |
|
67 | public TemplateURI(RunData runData, boolean redirect) |
|
68 | { |
|
69 | 0 | super(runData, redirect); |
70 | 0 | } |
71 | ||
72 | /** |
|
73 | * Constructor, set Template |
|
74 | * |
|
75 | * @param runData A RunData object |
|
76 | * @param template A Template Name |
|
77 | */ |
|
78 | public TemplateURI(RunData runData, String template) |
|
79 | { |
|
80 | 0 | super(runData); |
81 | 0 | setTemplate(template); |
82 | 0 | } |
83 | ||
84 | /** |
|
85 | * Constructor, set Template, set explicit redirection |
|
86 | * |
|
87 | * @param runData A RunData object |
|
88 | * @param template A Template Name |
|
89 | * @param redirect True if redirection allowed. |
|
90 | */ |
|
91 | public TemplateURI(RunData runData, String template, boolean redirect) |
|
92 | { |
|
93 | 0 | super(runData, redirect); |
94 | 0 | setTemplate(template); |
95 | 0 | } |
96 | ||
97 | /** |
|
98 | * Constructor, set Template and Action |
|
99 | * |
|
100 | * @param runData A RunData object |
|
101 | * @param template A Template Name |
|
102 | * @param action An Action Name |
|
103 | */ |
|
104 | public TemplateURI(RunData runData, String template, String action) |
|
105 | { |
|
106 | 0 | this(runData, template); |
107 | 0 | setAction(action); |
108 | 0 | } |
109 | ||
110 | /** |
|
111 | * Constructor, set Template and Action, set explicit redirection |
|
112 | * |
|
113 | * @param runData A RunData object |
|
114 | * @param template A Template Name |
|
115 | * @param action An Action Name |
|
116 | * @param redirect True if redirection allowed. |
|
117 | */ |
|
118 | public TemplateURI(RunData runData, String template, String action, boolean redirect) |
|
119 | { |
|
120 | 0 | this(runData, template, redirect); |
121 | 0 | setAction(action); |
122 | 0 | } |
123 | ||
124 | /** |
|
125 | * Constructor with a ServerData object |
|
126 | * |
|
127 | * @param serverData A ServerData object |
|
128 | */ |
|
129 | public TemplateURI(ServerData serverData) |
|
130 | { |
|
131 | 0 | super(serverData); |
132 | 0 | } |
133 | ||
134 | /** |
|
135 | * Constructor, set explicit redirection |
|
136 | * |
|
137 | * @param serverData A ServerData object |
|
138 | * @param redirect True if redirection allowed. |
|
139 | */ |
|
140 | public TemplateURI(ServerData serverData, boolean redirect) |
|
141 | { |
|
142 | 0 | super(serverData, redirect); |
143 | 0 | } |
144 | ||
145 | /** |
|
146 | * Constructor, set Template |
|
147 | * |
|
148 | * @param serverData A ServerData object |
|
149 | * @param template A Template Name |
|
150 | */ |
|
151 | public TemplateURI(ServerData serverData, String template) |
|
152 | { |
|
153 | 0 | super(serverData); |
154 | 0 | setTemplate(template); |
155 | 0 | } |
156 | ||
157 | /** |
|
158 | * Constructor, set Template, set explicit redirection |
|
159 | * |
|
160 | * @param serverData A ServerData object |
|
161 | * @param template A Template Name |
|
162 | * @param redirect True if redirection allowed. |
|
163 | */ |
|
164 | public TemplateURI(ServerData serverData, String template, boolean redirect) |
|
165 | { |
|
166 | 0 | super(serverData, redirect); |
167 | 0 | setTemplate(template); |
168 | 0 | } |
169 | ||
170 | /** |
|
171 | * Constructor, set Template and Action |
|
172 | * |
|
173 | * @param serverData A ServerData object |
|
174 | * @param template A Template Name |
|
175 | * @param action An Action Name |
|
176 | */ |
|
177 | public TemplateURI(ServerData serverData, String template, String action) |
|
178 | { |
|
179 | 0 | this(serverData, template); |
180 | 0 | setAction(action); |
181 | 0 | } |
182 | ||
183 | /** |
|
184 | * Constructor, set Template and Action, set explicit redirection |
|
185 | * |
|
186 | * @param serverData A ServerData object |
|
187 | * @param template A Template Name |
|
188 | * @param action An Action Name |
|
189 | * @param redirect True if redirection allowed. |
|
190 | */ |
|
191 | public TemplateURI(ServerData serverData, String template, String action, boolean redirect) |
|
192 | { |
|
193 | 0 | this(serverData, template, redirect); |
194 | 0 | setAction(action); |
195 | 0 | } |
196 | ||
197 | /** |
|
198 | * Constructor, user Turbine.getDefaultServerData(), set Template and Action |
|
199 | * |
|
200 | * @param template A Template Name |
|
201 | * @param action An Action Name |
|
202 | */ |
|
203 | public TemplateURI(String template, String action) |
|
204 | { |
|
205 | 0 | this(); |
206 | 0 | setTemplate(template); |
207 | 0 | setAction(action); |
208 | 0 | } |
209 | ||
210 | /** |
|
211 | * Sets the template= value for this URL. |
|
212 | * |
|
213 | * By default it adds the information to the path_info instead |
|
214 | * of the query data. An empty value (null or "") cleans out |
|
215 | * an existing value. |
|
216 | * |
|
217 | * @param template A String with the template value. |
|
218 | */ |
|
219 | public void setTemplate(String template) |
|
220 | { |
|
221 | 0 | if(StringUtils.isNotEmpty(template)) |
222 | { |
|
223 | 0 | add(PATH_INFO, CGI_TEMPLATE_PARAM, template); |
224 | } |
|
225 | else |
|
226 | { |
|
227 | 0 | clearTemplate(); |
228 | } |
|
229 | 0 | } |
230 | ||
231 | /** |
|
232 | * Clears the template= value for this URL. |
|
233 | * |
|
234 | */ |
|
235 | public void clearTemplate() |
|
236 | { |
|
237 | 0 | removePathInfo(CGI_TEMPLATE_PARAM); |
238 | 0 | } |
239 | ||
240 | /* |
|
241 | * ======================================================================== |
|
242 | * |
|
243 | * Protected / Private Methods |
|
244 | * |
|
245 | * ======================================================================== |
|
246 | * |
|
247 | */ |
|
248 | ||
249 | /** |
|
250 | * Method for a quick way to add all the parameters in a |
|
251 | * ParameterParser. |
|
252 | * |
|
253 | * <p>If the type is P (0), then add name/value to the pathInfo |
|
254 | * hashtable. |
|
255 | * |
|
256 | * <p>If the type is Q (1), then add name/value to the queryData |
|
257 | * hashtable. |
|
258 | * |
|
259 | * @param type Type of insertion (@see #add(char type, String name, String value)) |
|
260 | * @param pp A ParameterParser. |
|
261 | */ |
|
262 | protected void add(int type, |
|
263 | ParameterParser pp) |
|
264 | { |
|
265 | 0 | for(Iterator it = pp.keySet().iterator(); it.hasNext();) |
266 | { |
|
267 | 0 | String key = (String) it.next(); |
268 | ||
269 | 0 | if (!key.equalsIgnoreCase(CGI_ACTION_PARAM) && |
270 | !key.equalsIgnoreCase(CGI_SCREEN_PARAM) && |
|
271 | !key.equalsIgnoreCase(CGI_TEMPLATE_PARAM)) |
|
272 | { |
|
273 | 0 | String[] values = pp.getStrings(key); |
274 | 0 | for (int i = 0; i < values.length; i++) |
275 | { |
|
276 | 0 | add(type, key, values[i]); |
277 | } |
|
278 | } |
|
279 | } |
|
280 | 0 | } |
281 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |