View Javadoc

1   /*
2    * $Id: ELSizeTag.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.bean;
22  
23  import org.apache.struts.taglib.bean.SizeTag;
24  import org.apache.strutsel.taglib.utils.EvalHelper;
25  
26  import javax.servlet.jsp.JspException;
27  
28  /**
29   * Define a scripting variable that will contain the number of elements found
30   * in a specified array, Collection, or Map. <p> This class is a subclass of
31   * the class <code>org.apache.struts.taglib.bean.SizeTag</code> which provides
32   * most of the described functionality.  This subclass allows all attribute
33   * values to be specified as expressions utilizing the JavaServer Pages
34   * Standard Library expression language.
35   *
36   * @version $Rev: 471754 $
37   */
38  public class ELSizeTag extends SizeTag {
39      /**
40       * Instance variable mapped to "collection" tag attribute. (Mapping set in
41       * associated BeanInfo class.)
42       */
43      private String collectionExpr;
44  
45      /**
46       * Instance variable mapped to "id" tag attribute. (Mapping set in
47       * associated BeanInfo class.)
48       */
49      private String idExpr;
50  
51      /**
52       * Instance variable mapped to "name" tag attribute. (Mapping set in
53       * associated BeanInfo class.)
54       */
55      private String nameExpr;
56  
57      /**
58       * Instance variable mapped to "property" tag attribute. (Mapping set in
59       * associated BeanInfo class.)
60       */
61      private String propertyExpr;
62  
63      /**
64       * Instance variable mapped to "scope" tag attribute. (Mapping set in
65       * associated BeanInfo class.)
66       */
67      private String scopeExpr;
68  
69      /**
70       * Getter method for "collection" tag attribute. (Mapping set in
71       * associated BeanInfo class.)
72       */
73      public String getCollectionExpr() {
74          return (collectionExpr);
75      }
76  
77      /**
78       * Getter method for "id" tag attribute. (Mapping set in associated
79       * BeanInfo class.)
80       */
81      public String getIdExpr() {
82          return (idExpr);
83      }
84  
85      /**
86       * Getter method for "name" tag attribute. (Mapping set in associated
87       * BeanInfo class.)
88       */
89      public String getNameExpr() {
90          return (nameExpr);
91      }
92  
93      /**
94       * Getter method for "property" tag attribute. (Mapping set in associated
95       * BeanInfo class.)
96       */
97      public String getPropertyExpr() {
98          return (propertyExpr);
99      }
100 
101     /**
102      * Getter method for "scope" tag attribute. (Mapping set in associated
103      * BeanInfo class.)
104      */
105     public String getScopeExpr() {
106         return (scopeExpr);
107     }
108 
109     /**
110      * Setter method for "collection" tag attribute. (Mapping set in
111      * associated BeanInfo class.)
112      */
113     public void setCollectionExpr(String collectionExpr) {
114         this.collectionExpr = collectionExpr;
115     }
116 
117     /**
118      * Setter method for "id" tag attribute. (Mapping set in associated
119      * BeanInfo class.)
120      */
121     public void setIdExpr(String idExpr) {
122         this.idExpr = idExpr;
123     }
124 
125     /**
126      * Setter method for "name" tag attribute. (Mapping set in associated
127      * BeanInfo class.)
128      */
129     public void setNameExpr(String nameExpr) {
130         this.nameExpr = nameExpr;
131     }
132 
133     /**
134      * Setter method for "property" tag attribute. (Mapping set in associated
135      * BeanInfo class.)
136      */
137     public void setPropertyExpr(String propertyExpr) {
138         this.propertyExpr = propertyExpr;
139     }
140 
141     /**
142      * Setter method for "scope" tag attribute. (Mapping set in associated
143      * BeanInfo class.)
144      */
145     public void setScopeExpr(String scopeExpr) {
146         this.scopeExpr = scopeExpr;
147     }
148 
149     /**
150      * Releases state of custom tag so this instance can be reused.
151      */
152     public void release() {
153         super.release();
154         setCollectionExpr(null);
155         setIdExpr(null);
156         setNameExpr(null);
157         setPropertyExpr(null);
158         setScopeExpr(null);
159     }
160 
161     /**
162      * Process the start tag.
163      *
164      * @throws JspException if a JSP exception has occurred
165      */
166     public int doStartTag() throws JspException {
167         evaluateExpressions();
168 
169         return (super.doStartTag());
170     }
171 
172     /**
173      * Processes all attribute values which use the JSTL expression evaluation
174      * engine to determine their values.
175      *
176      * @throws JspException if a JSP exception has occurred
177      */
178     private void evaluateExpressions()
179         throws JspException {
180         String string = null;
181         Object object = null;
182 
183         if ((object =
184                 EvalHelper.eval("collection", getCollectionExpr(), this,
185                     pageContext)) != null) {
186             setCollection(object);
187         }
188 
189         if ((string =
190                 EvalHelper.evalString("id", getIdExpr(), this, pageContext)) != null) {
191             setId(string);
192         }
193 
194         if ((string =
195                 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) {
196             setName(string);
197         }
198 
199         if ((string =
200                 EvalHelper.evalString("property", getPropertyExpr(), this,
201                     pageContext)) != null) {
202             setProperty(string);
203         }
204 
205         if ((string =
206                 EvalHelper.evalString("scope", getScopeExpr(), this, pageContext)) != null) {
207             setScope(string);
208         }
209     }
210 }