blob: 8a548bf5a4afd639051206ecd41675c02df836e6 [file] [log] [blame]
/*
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package javax.servlet.jsp.tagext;
import javax.servlet.jsp.tagext.TagInfo;
import javax.servlet.jsp.tagext.TagFileInfo;
/**
* Translation-time information associated with a taglib directive, and its
* underlying TLD file.
*
* Most of the information is directly from the TLD, except for
* the prefix and the uri values used in the taglib directive
*
*
*/
abstract public class TagLibraryInfo {
/**
* Constructor.
*
* This will invoke the constructors for TagInfo, and TagAttributeInfo
* after parsing the TLD file.
*
* @param prefix the prefix actually used by the taglib directive
* @param uri the URI actually used by the taglib directive
*/
protected TagLibraryInfo(String prefix, String uri) {
this.prefix = prefix;
this.uri = uri;
}
// ==== methods accessing taglib information =======
/**
* The value of the uri attribute from the taglib directive for
* this library.
*
* @return the value of the uri attribute
*/
public String getURI() {
return uri;
}
/**
* The prefix assigned to this taglib from the taglib directive
*
* @return the prefix assigned to this taglib from the taglib directive
*/
public String getPrefixString() {
return prefix;
}
// ==== methods using the TLD data =======
/**
* The preferred short name (prefix) as indicated in the TLD.
* This may be used by authoring tools as the preferred prefix
* to use when creating an taglib directive for this library.
*
* @return the preferred short name for the library
*/
public String getShortName() {
return shortname;
}
/**
* The "reliable" URN indicated in the TLD (the uri element).
* This may be used by authoring tools as a global identifier
* to use when creating a taglib directive for this library.
*
* @return a reliable URN to a TLD like this
*/
public String getReliableURN() {
return urn;
}
/**
* Information (documentation) for this TLD.
*
* @return the info string for this tag lib
*/
public String getInfoString() {
return info;
}
/**
* A string describing the required version of the JSP container.
*
* @return the (minimal) required version of the JSP container.
* @see javax.servlet.jsp.JspEngineInfo
*/
public String getRequiredVersion() {
return jspversion;
}
/**
* An array describing the tags that are defined in this tag library.
*
* @return the TagInfo objects corresponding to the tags defined by this
* tag library, or a zero length array if this tag library
* defines no tags
*/
public TagInfo[] getTags() {
return tags;
}
/**
* An array describing the tag files that are defined in this tag library.
*
* @return the TagFileInfo objects corresponding to the tag files defined
* by this tag library, or a zero length array if this
* tag library defines no tags files
* @since 2.0
*/
public TagFileInfo[] getTagFiles() {
return tagFiles;
}
/**
* Get the TagInfo for a given tag name, looking through all the
* tags in this tag library.
*
* @param shortname The short name (no prefix) of the tag
* @return the TagInfo for the tag with the specified short name, or
* null if no such tag is found
*/
public TagInfo getTag(String shortname) {
TagInfo tags[] = getTags();
if (tags == null || tags.length == 0) {
return null;
}
for (int i=0; i < tags.length; i++) {
if (tags[i].getTagName().equals(shortname)) {
return tags[i];
}
}
return null;
}
/**
* Get the TagFileInfo for a given tag name, looking through all the
* tag files in this tag library.
*
* @param shortname The short name (no prefix) of the tag
* @return the TagFileInfo for the specified Tag file, or null
* if no Tag file is found
* @since 2.0
*/
public TagFileInfo getTagFile(String shortname) {
TagFileInfo tagFiles[] = getTagFiles();
if (tagFiles == null || tagFiles.length == 0) {
return null;
}
for (int i=0; i < tagFiles.length; i++) {
if (tagFiles[i].getName().equals(shortname)) {
return tagFiles[i];
}
}
return null;
}
/**
* An array describing the functions that are defined in this tag library.
*
* @return the functions defined in this tag library, or a zero
* length array if the tag library defines no functions.
* @since 2.0
*/
public FunctionInfo[] getFunctions() {
return functions;
}
/**
* Get the FunctionInfo for a given function name, looking through all the
* functions in this tag library.
*
* @param name The name (no prefix) of the function
* @return the FunctionInfo for the function with the given name, or null
* if no such function exists
* @since 2.0
*/
public FunctionInfo getFunction(String name) {
if (functions == null || functions.length == 0) {
System.err.println("No functions");
return null;
}
for (int i=0; i < functions.length; i++) {
if (functions[i].getName().equals(name)) {
return functions[i];
}
}
return null;
}
// Protected fields
/**
* The prefix assigned to this taglib from the taglib directive.
*/
protected String prefix;
/**
* The value of the uri attribute from the taglib directive for
* this library.
*/
protected String uri;
/**
* An array describing the tags that are defined in this tag library.
*/
protected TagInfo[] tags;
/**
* An array describing the tag files that are defined in this tag library.
*
* @since 2.0
*/
protected TagFileInfo[] tagFiles;
/**
* An array describing the functions that are defined in this tag library.
*
* @since 2.0
*/
protected FunctionInfo[] functions;
// Tag Library Data
/**
* The version of the tag library.
*/
protected String tlibversion; // required
/**
* The version of the JSP specification this tag library is written to.
*/
protected String jspversion; // required
/**
* The preferred short name (prefix) as indicated in the TLD.
*/
protected String shortname; // required
/**
* The "reliable" URN indicated in the TLD.
*/
protected String urn; // required
/**
* Information (documentation) for this TLD.
*/
protected String info; // optional
}