1. /*
  2. * The Apache Software License, Version 1.1
  3. *
  4. * Copyright (c) 1999 The Apache Software Foundation. All rights
  5. * reserved.
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions
  9. * are met:
  10. *
  11. * 1. Redistributions of source code must retain the above copyright
  12. * notice, this list of conditions and the following disclaimer.
  13. *
  14. * 2. Redistributions in binary form must reproduce the above copyright
  15. * notice, this list of conditions and the following disclaimer in
  16. * the documentation and/or other materials provided with the
  17. * distribution.
  18. *
  19. * 3. The end-user documentation included with the redistribution, if
  20. * any, must include the following acknowlegement:
  21. * "This product includes software developed by the
  22. * Apache Software Foundation (http://www.apache.org/)."
  23. * Alternately, this acknowlegement may appear in the software itself,
  24. * if and wherever such third-party acknowlegements normally appear.
  25. *
  26. * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
  27. * Foundation" must not be used to endorse or promote products derived
  28. * from this software without prior written permission. For written
  29. * permission, please contact apache@apache.org.
  30. *
  31. * 5. Products derived from this software may not be called "Apache"
  32. * nor may "Apache" appear in their names without prior written
  33. * permission of the Apache Group.
  34. *
  35. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  36. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  37. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  38. * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  39. * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  40. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  41. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  42. * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  43. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  44. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  45. * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  46. * SUCH DAMAGE.
  47. * ====================================================================
  48. *
  49. * This software consists of voluntary contributions made by many
  50. * individuals on behalf of the Apache Software Foundation. For more
  51. * information on the Apache Software Foundation, please see
  52. * <http://www.apache.org/>.
  53. *
  54. */
  55. package javax.servlet.jsp.tagext;
  56. /**
  57. * Information on the attributes of a Tag, available at translation time.
  58. * This class is instantiated from the Tag Library Descriptor file (TLD).
  59. *
  60. * <p>
  61. * Only the information needed to generate code is included here. Other information
  62. * like SCHEMA for validation belongs elsewhere.
  63. */
  64. public class TagAttributeInfo {
  65. /**
  66. * "id" is wired in to be ID. There is no real benefit in having it be something else
  67. * IDREFs are not handled any differently.
  68. */
  69. public static final String ID = "id";
  70. /**
  71. * Constructor for TagAttributeInfo.
  72. * This class is to be instantiated only from the
  73. * TagLibrary code under request from some JSP code that is parsing a
  74. * TLD (Tag Library Descriptor).
  75. *
  76. * @param name The name of the attribute.
  77. * @param required If this attribute is required in tag instances.
  78. * @param type The name of the type of the attribute.
  79. * @param reqTime Whether this attribute holds a request-time Attribute.
  80. */
  81. public TagAttributeInfo(String name, boolean required,
  82. String type, boolean reqTime)
  83. {
  84. this.name = name;
  85. this.required = required;
  86. this.type = type;
  87. this.reqTime = reqTime;
  88. }
  89. /**
  90. * The name of this attribute.
  91. *
  92. * @return the name of the attribute
  93. */
  94. public String getName() {
  95. return name;
  96. }
  97. /**
  98. * The type (as a String) of this attribute.
  99. *
  100. * @return the type of the attribute
  101. */
  102. public String getTypeName() {
  103. return type;
  104. }
  105. /**
  106. * Whether this attribute can hold a request-time value.
  107. *
  108. * @return if the attribute can hold a request-time value.
  109. */
  110. public boolean canBeRequestTime() {
  111. return reqTime;
  112. }
  113. /**
  114. * Whether this attribute is required.
  115. *
  116. * @return if the attribute is required.
  117. */
  118. public boolean isRequired() {
  119. return required;
  120. }
  121. /**
  122. * Convenience static method that goes through an array of TagAttributeInfo
  123. * objects and looks for "id".
  124. *
  125. * @param a An array of TagAttributeInfo
  126. * @return The TagAttributeInfo reference with name "id"
  127. */
  128. public static TagAttributeInfo getIdAttribute(TagAttributeInfo a[]) {
  129. for (int i=0; i<a.length; i++) {
  130. if (a[i].getName().equals(ID)) {
  131. return a[i];
  132. }
  133. }
  134. return null; // no such attribute
  135. }
  136. public String toString() {
  137. StringBuffer b = new StringBuffer();
  138. b.append("name = "+name+" ");
  139. b.append("type = "+type+" ");
  140. b.append("reqTime = "+reqTime+" ");
  141. b.append("required = "+required+" ");
  142. return b.toString();
  143. }
  144. /*
  145. * fields
  146. */
  147. private String name;
  148. private String type;
  149. private boolean reqTime;
  150. private boolean required;
  151. }