View Javadoc

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