View Javadoc

1   /*
2    * $Id: IterateTei.java 376842 2006-02-10 21:02:03Z husted $
3    *
4    * Copyright 1999-2004 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  package org.apache.struts.taglib.logic;
19  
20  import javax.servlet.jsp.tagext.TagData;
21  import javax.servlet.jsp.tagext.TagExtraInfo;
22  import javax.servlet.jsp.tagext.VariableInfo;
23  
24  /***
25   * Implementation of <code>TagExtraInfo</code> for the <b>iterate</b> tag,
26   * identifying the scripting object(s) to be made visible.
27   *
28   * @version $Rev: 376842 $ $Date: 2004-10-16 12:38:42 -0400 (Sat, 16 Oct 2004)
29   *          $
30   */
31  public class IterateTei extends TagExtraInfo {
32      /***
33       * Return information about the scripting variables to be created.
34       */
35      public VariableInfo[] getVariableInfo(TagData data) {
36          // prime this array with the maximum potential variables.
37          // will be arraycopy'd out to the final array based on results.
38          VariableInfo[] variables = new VariableInfo[2];
39  
40          // counter for matched results.
41          int counter = 0;
42  
43          /* id : object of the current iteration */
44          String id = data.getAttributeString("id");
45          String type = data.getAttributeString("type");
46  
47          if (id != null) {
48              if (type == null) {
49                  type = "java.lang.Object";
50              }
51  
52              variables[counter++] =
53                  new VariableInfo(data.getAttributeString("id"), type, true,
54                      VariableInfo.NESTED);
55          }
56  
57          /* indexId : number value of the current iteration */
58          String indexId = data.getAttributeString("indexId");
59  
60          if (indexId != null) {
61              variables[counter++] =
62                  new VariableInfo(indexId, "java.lang.Integer", true,
63                      VariableInfo.NESTED);
64          }
65  
66          /* create returning array, and copy results */
67          VariableInfo[] result;
68  
69          if (counter > 0) {
70              result = new VariableInfo[counter];
71              System.arraycopy(variables, 0, result, 0, counter);
72          } else {
73              result = new VariableInfo[0];
74          }
75  
76          return result;
77      }
78  }