View Javadoc

1   /*
2    * $Id: ELRewriteTag.java 471754 2006-11-06 14:55:09Z husted $
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  package org.apache.strutsel.taglib.html;
22  
23  import org.apache.struts.taglib.html.RewriteTag;
24  import org.apache.strutsel.taglib.utils.EvalHelper;
25  
26  import javax.servlet.jsp.JspException;
27  
28  /**
29   * Generate a URL-encoded URI as a string. <p> This class is a subclass of the
30   * class <code>org.apache.struts.taglib.html.RewriteTag</code> which provides
31   * most of the described functionality.  This subclass allows all attribute
32   * values to be specified as expressions utilizing the JavaServer Pages
33   * Standard Library expression language.
34   *
35   * @version $Rev: 471754 $
36   */
37  public class ELRewriteTag extends RewriteTag {
38      /**
39       * Instance variable mapped to "action" tag attribute. (Mapping set in
40       * associated BeanInfo class.)
41       */
42      private String actionExpr;
43  
44      /**
45       * Instance variable mapped to "module" tag attribute. (Mapping set in
46       * associated BeanInfo class.)
47       */
48      private String moduleExpr;
49  
50      /**
51       * Instance variable mapped to "anchor" tag attribute. (Mapping set in
52       * associated BeanInfo class.)
53       */
54      private String anchorExpr;
55  
56      /**
57       * Instance variable mapped to "forward" tag attribute. (Mapping set in
58       * associated BeanInfo class.)
59       */
60      private String forwardExpr;
61  
62      /**
63       * Instance variable mapped to "href" tag attribute. (Mapping set in
64       * associated BeanInfo class.)
65       */
66      private String hrefExpr;
67  
68      /**
69       * Instance variable mapped to "name" tag attribute. (Mapping set in
70       * associated BeanInfo class.)
71       */
72      private String nameExpr;
73  
74      /**
75       * Instance variable mapped to "page" tag attribute. (Mapping set in
76       * associated BeanInfo class.)
77       */
78      private String pageExpr;
79  
80      /**
81       * Instance variable mapped to "paramId" tag attribute. (Mapping set in
82       * associated BeanInfo class.)
83       */
84      private String paramIdExpr;
85  
86      /**
87       * Instance variable mapped to "paramName" tag attribute. (Mapping set in
88       * associated BeanInfo class.)
89       */
90      private String paramNameExpr;
91  
92      /**
93       * Instance variable mapped to "paramProperty" tag attribute. (Mapping set
94       * in associated BeanInfo class.)
95       */
96      private String paramPropertyExpr;
97  
98      /**
99       * Instance variable mapped to "paramScope" tag attribute. (Mapping set in
100      * associated BeanInfo class.)
101      */
102     private String paramScopeExpr;
103 
104     /**
105      * Instance variable mapped to "property" tag attribute. (Mapping set in
106      * associated BeanInfo class.)
107      */
108     private String propertyExpr;
109 
110     /**
111      * Instance variable mapped to "scope" tag attribute. (Mapping set in
112      * associated BeanInfo class.)
113      */
114     private String scopeExpr;
115 
116     /**
117      * Instance variable mapped to "transaction" tag attribute. (Mapping set
118      * in associated BeanInfo class.)
119      */
120     private String transactionExpr;
121 
122     /**
123      * Instance variable mapped to "useLocalEncoding" tag attribute. (Mapping
124      * set in associated BeanInfo class.)
125      */
126     private String useLocalEncodingExpr;
127 
128     /**
129      * Getter method for "action" tag attribute. (Mapping set in associated
130      * BeanInfo class.)
131      */
132     public String getActionExpr() {
133         return (actionExpr);
134     }
135 
136     /**
137      * Getter method for "module" tag attribute. (Mapping set in associated
138      * BeanInfo class.)
139      */
140     public String getModuleExpr() {
141         return (moduleExpr);
142     }
143 
144     /**
145      * Getter method for "anchor" tag attribute. (Mapping set in associated
146      * BeanInfo class.)
147      */
148     public String getAnchorExpr() {
149         return (anchorExpr);
150     }
151 
152     /**
153      * Getter method for "forward" tag attribute. (Mapping set in associated
154      * BeanInfo class.)
155      */
156     public String getForwardExpr() {
157         return (forwardExpr);
158     }
159 
160     /**
161      * Getter method for "href" tag attribute. (Mapping set in associated
162      * BeanInfo class.)
163      */
164     public String getHrefExpr() {
165         return (hrefExpr);
166     }
167 
168     /**
169      * Getter method for "name" tag attribute. (Mapping set in associated
170      * BeanInfo class.)
171      */
172     public String getNameExpr() {
173         return (nameExpr);
174     }
175 
176     /**
177      * Getter method for "page" tag attribute. (Mapping set in associated
178      * BeanInfo class.)
179      */
180     public String getPageExpr() {
181         return (pageExpr);
182     }
183 
184     /**
185      * Getter method for "paramId" tag attribute. (Mapping set in associated
186      * BeanInfo class.)
187      */
188     public String getParamIdExpr() {
189         return (paramIdExpr);
190     }
191 
192     /**
193      * Getter method for "paramName" tag attribute. (Mapping set in associated
194      * BeanInfo class.)
195      */
196     public String getParamNameExpr() {
197         return (paramNameExpr);
198     }
199 
200     /**
201      * Getter method for "paramProperty" tag attribute. (Mapping set in
202      * associated BeanInfo class.)
203      */
204     public String getParamPropertyExpr() {
205         return (paramPropertyExpr);
206     }
207 
208     /**
209      * Getter method for "paramScope" tag attribute. (Mapping set in
210      * associated BeanInfo class.)
211      */
212     public String getParamScopeExpr() {
213         return (paramScopeExpr);
214     }
215 
216     /**
217      * Getter method for "property" tag attribute. (Mapping set in associated
218      * BeanInfo class.)
219      */
220     public String getPropertyExpr() {
221         return (propertyExpr);
222     }
223 
224     /**
225      * Getter method for "scope" tag attribute. (Mapping set in associated
226      * BeanInfo class.)
227      */
228     public String getScopeExpr() {
229         return (scopeExpr);
230     }
231 
232     /**
233      * Getter method for "transaction" tag attribute. (Mapping set in
234      * associated BeanInfo class.)
235      */
236     public String getTransactionExpr() {
237         return (transactionExpr);
238     }
239 
240     /**
241      * Getter method for "useLocalEncoding" tag attribute. (Mapping set in
242      * associated BeanInfo class.)
243      */
244     public String getUseLocalEncodingExpr() {
245         return (useLocalEncodingExpr);
246     }
247 
248     /**
249      * Setter method for "action" tag attribute. (Mapping set in associated
250      * BeanInfo class.)
251      */
252     public void setActionExpr(String actionExpr) {
253         this.actionExpr = actionExpr;
254     }
255 
256     /**
257      * Setter method for "module" tag attribute. (Mapping set in associated
258      * BeanInfo class.)
259      */
260     public void setModuleExpr(String moduleExpr) {
261         this.moduleExpr = moduleExpr;
262     }
263 
264     /**
265      * Setter method for "anchor" tag attribute. (Mapping set in associated
266      * BeanInfo class.)
267      */
268     public void setAnchorExpr(String anchorExpr) {
269         this.anchorExpr = anchorExpr;
270     }
271 
272     /**
273      * Setter method for "forward" tag attribute. (Mapping set in associated
274      * BeanInfo class.)
275      */
276     public void setForwardExpr(String forwardExpr) {
277         this.forwardExpr = forwardExpr;
278     }
279 
280     /**
281      * Setter method for "href" tag attribute. (Mapping set in associated
282      * BeanInfo class.)
283      */
284     public void setHrefExpr(String hrefExpr) {
285         this.hrefExpr = hrefExpr;
286     }
287 
288     /**
289      * Setter method for "name" tag attribute. (Mapping set in associated
290      * BeanInfo class.)
291      */
292     public void setNameExpr(String nameExpr) {
293         this.nameExpr = nameExpr;
294     }
295 
296     /**
297      * Setter method for "page" tag attribute. (Mapping set in associated
298      * BeanInfo class.)
299      */
300     public void setPageExpr(String pageExpr) {
301         this.pageExpr = pageExpr;
302     }
303 
304     /**
305      * Setter method for "paramId" tag attribute. (Mapping set in associated
306      * BeanInfo class.)
307      */
308     public void setParamIdExpr(String paramIdExpr) {
309         this.paramIdExpr = paramIdExpr;
310     }
311 
312     /**
313      * Setter method for "paramName" tag attribute. (Mapping set in associated
314      * BeanInfo class.)
315      */
316     public void setParamNameExpr(String paramNameExpr) {
317         this.paramNameExpr = paramNameExpr;
318     }
319 
320     /**
321      * Setter method for "paramProperty" tag attribute. (Mapping set in
322      * associated BeanInfo class.)
323      */
324     public void setParamPropertyExpr(String paramPropertyExpr) {
325         this.paramPropertyExpr = paramPropertyExpr;
326     }
327 
328     /**
329      * Setter method for "paramScope" tag attribute. (Mapping set in
330      * associated BeanInfo class.)
331      */
332     public void setParamScopeExpr(String paramScopeExpr) {
333         this.paramScopeExpr = paramScopeExpr;
334     }
335 
336     /**
337      * Setter method for "property" tag attribute. (Mapping set in associated
338      * BeanInfo class.)
339      */
340     public void setPropertyExpr(String propertyExpr) {
341         this.propertyExpr = propertyExpr;
342     }
343 
344     /**
345      * Setter method for "scope" tag attribute. (Mapping set in associated
346      * BeanInfo class.)
347      */
348     public void setScopeExpr(String scopeExpr) {
349         this.scopeExpr = scopeExpr;
350     }
351 
352     /**
353      * Setter method for "transaction" tag attribute. (Mapping set in
354      * associated BeanInfo class.)
355      */
356     public void setTransactionExpr(String transactionExpr) {
357         this.transactionExpr = transactionExpr;
358     }
359 
360     /**
361      * Setter method for "useLocalEncoding" tag attribute. (Mapping set in
362      * associated BeanInfo class.)
363      */
364     public void setUseLocalEncodingExpr(String useLocalEncodingExpr) {
365         this.useLocalEncodingExpr = useLocalEncodingExpr;
366     }
367 
368     /**
369      * Resets attribute values for tag reuse.
370      */
371     public void release() {
372         super.release();
373         setActionExpr(null);
374         setModuleExpr(null);
375         setAnchorExpr(null);
376         setForwardExpr(null);
377         setHrefExpr(null);
378         setNameExpr(null);
379         setPageExpr(null);
380         setParamIdExpr(null);
381         setParamNameExpr(null);
382         setParamPropertyExpr(null);
383         setParamScopeExpr(null);
384         setPropertyExpr(null);
385         setScopeExpr(null);
386         setTransactionExpr(null);
387         setUseLocalEncodingExpr(null);
388     }
389 
390     /**
391      * Process the start tag.
392      *
393      * @throws JspException if a JSP exception has occurred
394      */
395     public int doStartTag() throws JspException {
396         evaluateExpressions();
397 
398         return (super.doStartTag());
399     }
400 
401     /**
402      * Processes all attribute values which use the JSTL expression evaluation
403      * engine to determine their values.
404      *
405      * @throws JspException if a JSP exception has occurred
406      */
407     private void evaluateExpressions()
408         throws JspException {
409         String string = null;
410         Boolean bool = null;
411 
412         if ((string =
413                 EvalHelper.evalString("action", getActionExpr(), this,
414                     pageContext)) != null) {
415             setAction(string);
416         }
417 
418         if ((string =
419                 EvalHelper.evalString("module", getModuleExpr(), this,
420                     pageContext)) != null) {
421             setModule(string);
422         }
423 
424         if ((string =
425                 EvalHelper.evalString("anchor", getAnchorExpr(), this,
426                     pageContext)) != null) {
427             setAnchor(string);
428         }
429 
430         if ((string =
431                 EvalHelper.evalString("forward", getForwardExpr(), this,
432                     pageContext)) != null) {
433             setForward(string);
434         }
435 
436         if ((string =
437                 EvalHelper.evalString("href", getHrefExpr(), this, pageContext)) != null) {
438             setHref(string);
439         }
440 
441         if ((string =
442                 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) {
443             setName(string);
444         }
445 
446         if ((string =
447                 EvalHelper.evalString("page", getPageExpr(), this, pageContext)) != null) {
448             setPage(string);
449         }
450 
451         if ((string =
452                 EvalHelper.evalString("paramId", getParamIdExpr(), this,
453                     pageContext)) != null) {
454             setParamId(string);
455         }
456 
457         if ((string =
458                 EvalHelper.evalString("paramName", getParamNameExpr(), this,
459                     pageContext)) != null) {
460             setParamName(string);
461         }
462 
463         if ((string =
464                 EvalHelper.evalString("paramProperty", getParamPropertyExpr(),
465                     this, pageContext)) != null) {
466             setParamProperty(string);
467         }
468 
469         if ((string =
470                 EvalHelper.evalString("paramScope", getParamScopeExpr(), this,
471                     pageContext)) != null) {
472             setParamScope(string);
473         }
474 
475         if ((string =
476                 EvalHelper.evalString("property", getPropertyExpr(), this,
477                     pageContext)) != null) {
478             setProperty(string);
479         }
480 
481         if ((string =
482                 EvalHelper.evalString("scope", getScopeExpr(), this, pageContext)) != null) {
483             setScope(string);
484         }
485 
486         if ((bool =
487                 EvalHelper.evalBoolean("transaction", getTransactionExpr(),
488                     this, pageContext)) != null) {
489             setTransaction(bool.booleanValue());
490         }
491 
492         if ((bool =
493                 EvalHelper.evalBoolean("useLocalEncoding",
494                     getUseLocalEncodingExpr(), this, pageContext)) != null) {
495             setUseLocalEncoding(bool.booleanValue());
496         }
497     }
498 }