View Javadoc

    1   /**
    2    *
    3    * Copyright 2003-2004 The Apache Software Foundation
    4    *
    5    *  Licensed under the Apache License, Version 2.0 (the "License");
    6    *  you may not use this file except in compliance with the License.
    7    *  You may obtain a copy of the License at
    8    *
    9    *     http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   *  Unless required by applicable law or agreed to in writing, software
    12   *  distributed under the License is distributed on an "AS IS" BASIS,
    13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   *  See the License for the specific language governing permissions and
    15   *  limitations under the License.
    16   */
    17
    18  //
    19  // This source code implements specifications defined by the Java
    20  // Community Process. In order to remain compliant with the specification
    21  // DO NOT add / change / or delete method signatures!
    22  //
    23
    24  package javax.servlet.jsp.tagext;
    25
    26  /**
    27   * Information on the attributes of a Tag, available at translation time.
    28   * This class is instantiated from the Tag Library Descriptor file (TLD).
    29   *
    30   * <p>
    31   * Only the information needed to generate code is included here.  Other information
    32   * like SCHEMA for validation belongs elsewhere.
    33   */
    34
    35  public class TagAttributeInfo {
    36      /**
    37       * "id" is wired in to be ID.  There is no real benefit in having it be something else
    38       * IDREFs are not handled any differently.
    39       */
    40
    41      public static final String ID = "id";
    42
    43      /**
    44       * Constructor for TagAttributeInfo.
    45       * This class is to be instantiated only from the
    46       * TagLibrary code under request from some JSP code that is parsing a
    47       * TLD (Tag Library Descriptor).
    48       *
    49       * @param name The name of the attribute.
    50       * @param required If this attribute is required in tag instances.
    51       * @param type The name of the type of the attribute.
    52       * @param reqTime Whether this attribute holds a request-time Attribute.
    53       */
    54
    55      public TagAttributeInfo(String name, boolean required,
    56                              String type, boolean reqTime)
    57      {
    58  	this.name = name;
    59          this.required = required;
    60          this.type = type;
    61  	this.reqTime = reqTime;
    62      }
    63
    64      /**
    65       * JSP 2.0 Constructor for TagAttributeInfo.
    66       * This class is to be instantiated only from the
    67       * TagLibrary code under request from some JSP code that is parsing a
    68       * TLD (Tag Library Descriptor).
    69       *
    70       * @param name The name of the attribute.
    71       * @param required If this attribute is required in tag instances.
    72       * @param type The name of the type of the attribute.
    73       * @param reqTime Whether this attribute holds a request-time Attribute.
    74       * @param fragment Whether this attribute is of type JspFragment
    75       *
    76       * @since 2.0
    77       */
    78
    79      public TagAttributeInfo(String name, boolean required,
    80                              String type, boolean reqTime,
    81  			    boolean fragment)
    82      {
    83  	this( name, required, type, reqTime );
    84  	this.fragment = fragment;
    85      }
    86
    87      /**
    88       * The name of this attribute.
    89       *
    90       * @return the name of the attribute
    91       */
    92
    93      public String getName() {
    94  	return name;
    95      }
    96
    97      /**
    98       * The type (as a String) of this attribute.
    99       *
    100      * @return the type of the attribute
    101      */
    102
    103     public String getTypeName() {
    104 	return type;
    105     }
    106
    107     /**
    108      * Whether this attribute can hold a request-time value.
    109      *
    110      * @return if the attribute can hold a request-time value.
    111      */
    112
    113     public boolean canBeRequestTime() {
    114 	return reqTime;
    115     }
    116
    117     /**
    118      * Whether this attribute is required.
    119      *
    120      * @return if the attribute is required.
    121      */
    122     public boolean isRequired() {
    123         return required;
    124     }
    125
    126     /**
    127      * Convenience static method that goes through an array of TagAttributeInfo
    128      * objects and looks for "id".
    129      *
    130      * @param a An array of TagAttributeInfo
    131      * @return The TagAttributeInfo reference with name "id"
    132      */
    133     public static TagAttributeInfo getIdAttribute(TagAttributeInfo a[]) {
    134 	for (int i=0; i<a.length; i++) {
    135 	    if (a[i].getName().equals(ID)) {
    136 		return a[i];
    137 	    }
    138 	}
    139 	return null;		// no such attribute
    140     }
    141
    142     /**
    143      * Whether this attribute is of type JspFragment.
    144      *
    145      * @return if the attribute is of type JspFragment
    146      *
    147      * @since 2.0
    148      */
    149     public boolean isFragment() {
    150 	return fragment;
    151     }
    152
    153
    154
    155     /**
    156      * Returns a String representation of this TagAttributeInfo, suitable
    157      * for debugging purposes.
    158      *
    159      * @return a String representation of this TagAttributeInfo
    160      */
    161     public String toString() {
    162         StringBuffer b = new StringBuffer();
    163         b.append("name = "+name+" ");
    164         b.append("type = "+type+" ");
    165 	b.append("reqTime = "+reqTime+" ");
    166         b.append("required = "+required+" ");
    167         b.append("fragment = "+fragment+" ");
    168         return b.toString();
    169     }
    170
    171     /*
    172      * private fields
    173      */
    174     private String name;
    175     private String type;
    176     private boolean reqTime;
    177     private boolean required;
    178
    179     /*
    180      * private fields for JSP 2.0
    181      */
    182     private boolean fragment;
    183 }