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 /** 28 * Translation-time information associated with a taglib directive, and its 29 * underlying TLD file. 30 * 31 * Most of the information is directly from the TLD, except for 32 * the prefix and the uri values used in the taglib directive 33 * 34 * 35 */ 36 37 abstract public class TagLibraryInfo { 38 39 /** 40 * Constructor. 41 * 42 * This will invoke the constructors for TagInfo, and TagAttributeInfo 43 * after parsing the TLD file. 44 * 45 * @param prefix the prefix actually used by the taglib directive 46 * @param uri the URI actually used by the taglib directive 47 */ 48 protected TagLibraryInfo(String prefix, String uri) { 49 this.prefix = prefix; 50 this.uri = uri; 51 } 52 53 // ==== methods accessing taglib information ======= 54 55 /** 56 * The value of the uri attribute from the taglib directive for 57 * this library. 58 * 59 * @return the value of the uri attribute 60 */ 61 62 public String getURI() { 63 return uri; 64 } 65 66 /** 67 * The prefix assigned to this taglib from the taglib directive 68 * 69 * @return the prefix assigned to this taglib from the taglib directive 70 */ 71 72 public String getPrefixString() { 73 return prefix; 74 } 75 76 // ==== methods using the TLD data ======= 77 78 /** 79 * The preferred short name (prefix) as indicated in the TLD. 80 * This may be used by authoring tools as the preferred prefix 81 * to use when creating an taglib directive for this library. 82 * 83 * @return the preferred short name for the library 84 */ 85 public String getShortName() { 86 return shortname; 87 } 88 89 /** 90 * The "reliable" URN indicated in the TLD (the uri element). 91 * This may be used by authoring tools as a global identifier 92 * to use when creating a taglib directive for this library. 93 * 94 * @return a reliable URN to a TLD like this 95 */ 96 public String getReliableURN() { 97 return urn; 98 } 99 100 101 /** 102 * Information (documentation) for this TLD. 103 * 104 * @return the info string for this tag lib 105 */ 106 107 public String getInfoString() { 108 return info; 109 } 110 111 112 /** 113 * A string describing the required version of the JSP container. 114 * 115 * @return the (minimal) required version of the JSP container. 116 * @see javax.servlet.jsp.JspEngineInfo 117 */ 118 119 public String getRequiredVersion() { 120 return jspversion; 121 } 122 123 124 /** 125 * An array describing the tags that are defined in this tag library. 126 * 127 * @return the TagInfo objects corresponding to the tags defined by this 128 * tag library, or a zero length array if this tag library 129 * defines no tags 130 */ 131 public TagInfo[] getTags() { 132 return tags; 133 } 134 135 /** 136 * An array describing the tag files that are defined in this tag library. 137 * 138 * @return the TagFileInfo objects corresponding to the tag files defined 139 * by this tag library, or a zero length array if this 140 * tag library defines no tags files 141 * @since 2.0 142 */ 143 public TagFileInfo[] getTagFiles() { 144 return tagFiles; 145 } 146 147 148 /** 149 * Get the TagInfo for a given tag name, looking through all the 150 * tags in this tag library. 151 * 152 * @param shortname The short name (no prefix) of the tag 153 * @return the TagInfo for the tag with the specified short name, or 154 * null if no such tag is found 155 */ 156 157 public TagInfo getTag(String shortname) { 158 TagInfo tags[] = getTags(); 159 160 if (tags == null || tags.length == 0) { 161 return null; 162 } 163 164 for (int i=0; i < tags.length; i++) { 165 if (tags[i].getTagName().equals(shortname)) { 166 return tags[i]; 167 } 168 } 169 return null; 170 } 171 172 /** 173 * Get the TagFileInfo for a given tag name, looking through all the 174 * tag files in this tag library. 175 * 176 * @param shortname The short name (no prefix) of the tag 177 * @return the TagFileInfo for the specified Tag file, or null 178 * if no Tag file is found 179 * @since 2.0 180 */ 181 public TagFileInfo getTagFile(String shortname) { 182 TagFileInfo tagFiles[] = getTagFiles(); 183 184 if (tagFiles == null || tagFiles.length == 0) { 185 return null; 186 } 187 188 for (int i=0; i < tagFiles.length; i++) { 189 if (tagFiles[i].getName().equals(shortname)) { 190 return tagFiles[i]; 191 } 192 } 193 return null; 194 } 195 196 /** 197 * An array describing the functions that are defined in this tag library. 198 * 199 * @return the functions defined in this tag library, or a zero 200 * length array if the tag library defines no functions. 201 * @since 2.0 202 */ 203 public FunctionInfo[] getFunctions() { 204 return functions; 205 } 206 207 208 /** 209 * Get the FunctionInfo for a given function name, looking through all the 210 * functions in this tag library. 211 * 212 * @param name The name (no prefix) of the function 213 * @return the FunctionInfo for the function with the given name, or null 214 * if no such function exists 215 * @since 2.0 216 */ 217 public FunctionInfo getFunction(String name) { 218 219 if (functions == null || functions.length == 0) { 220 return null; 221 } 222 223 for (int i=0; i < functions.length; i++) { 224 if (functions[i].getName().equals(name)) { 225 return functions[i]; 226 } 227 } 228 return null; 229 } 230 231 232 // Protected fields 233 234 /** 235 * The prefix assigned to this taglib from the taglib directive. 236 */ 237 protected String prefix; 238 239 /** 240 * The value of the uri attribute from the taglib directive for 241 * this library. 242 */ 243 protected String uri; 244 245 /** 246 * An array describing the tags that are defined in this tag library. 247 */ 248 protected TagInfo[] tags; 249 250 /** 251 * An array describing the tag files that are defined in this tag library. 252 * 253 * @since 2.0 254 */ 255 protected TagFileInfo[] tagFiles; 256 257 /** 258 * An array describing the functions that are defined in this tag library. 259 * 260 * @since 2.0 261 */ 262 protected FunctionInfo[] functions; 263 264 // Tag Library Data 265 266 /** 267 * The version of the tag library. 268 */ 269 protected String tlibversion; // required 270 271 /** 272 * The version of the JSP specification this tag library is written to. 273 */ 274 protected String jspversion; // required 275 276 /** 277 * The preferred short name (prefix) as indicated in the TLD. 278 */ 279 protected String shortname; // required 280 281 /** 282 * The "reliable" URN indicated in the TLD. 283 */ 284 protected String urn; // required 285 286 /** 287 * Information (documentation) for this TLD. 288 */ 289 protected String info; // optional 290 }