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 }