TagInfo.java
上传用户:tanyanyong
上传日期:2013-06-23
资源大小:1355k
文件大小:7k
源码类别:

电子政务应用

开发平台:

MultiPlatform

  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.  
  56. package javax.servlet.jsp.tagext;
  57. /**
  58.  * Tag information for a tag in a Tag Library;
  59.  * this class is instantiated from the Tag Library Descriptor file (TLD).
  60.  *
  61.  */
  62. public class TagInfo {
  63.     /**
  64.      * static constant for getBodyContent() when it is JSP
  65.      */
  66.     public static final String BODY_CONTENT_JSP = "JSP";
  67.     /**
  68.      * static constant for getBodyContent() when it is Tag dependent
  69.      */
  70.     public static final String BODY_CONTENT_TAG_DEPENDENT = "TAGDEPENDENT";
  71.     /**
  72.      * static constant for getBodyContent() when it is empty
  73.      */
  74.     public static final String BODY_CONTENT_EMPTY = "EMPTY";
  75.     /**
  76.      * Constructor for TagInfo.
  77.      * No public constructor; this class is to be instantiated only from the
  78.      * TagLibrary code under request from some JSP code that is parsing a
  79.      * TLD (Tag Library Descriptor).
  80.      *
  81.      * @param tagName The name of this tag
  82.      * @param tagClassName The name of the tag handler class
  83.      * @param bodycontent Information on the body content of these tags
  84.      * @param infoString The (optional) string information for this tag
  85.      * @param taglib The instance of the tag library that contains us.
  86.      * @param tagExtraInfo The instance providing extra Tag info.  May be null
  87.      * @param attributeInfo An array of AttributeInfo data from descriptor.
  88.      * May be null;
  89.      *
  90.      */
  91.     public TagInfo(String tagName,
  92.     String tagClassName,
  93.     String bodycontent,
  94.     String infoString,
  95.     TagLibraryInfo taglib,
  96.     TagExtraInfo tagExtraInfo,
  97.     TagAttributeInfo[] attributeInfo) {
  98. this.tagName       = tagName;
  99. this.tagClassName  = tagClassName;
  100. this.bodyContent   = bodycontent;
  101. this.infoString    = infoString;
  102. this.tagLibrary    = taglib;
  103. this.tagExtraInfo  = tagExtraInfo;
  104. this.attributeInfo = attributeInfo;
  105. if (tagExtraInfo != null)
  106.             tagExtraInfo.setTagInfo(this);
  107.     }
  108.  
  109.     /**
  110.      * Tag name
  111.      */
  112.     public String getTagName() {
  113. return tagName;
  114.     }
  115.     /**
  116.      * A null return means no information on attributes
  117.      */
  118.    public TagAttributeInfo[] getAttributes() {
  119.        return attributeInfo;
  120.    }
  121.     /**
  122.      * Information on the object created by this tag at runtime.
  123.      * Null means no such object created.
  124.      *
  125.      * Default is null if the tag has no "id" attribute,
  126.      * otherwise, {"id", Object}
  127.      */
  128.    public VariableInfo[] getVariableInfo(TagData data) {
  129.        TagExtraInfo tei = getTagExtraInfo();
  130.        if (tei == null) {
  131.    return null;
  132.        }
  133.        return tei.getVariableInfo(data);
  134.    }
  135.     /**
  136.      * Translation-time validation of the attributes.  The argument is a
  137.      * translation-time, so request-time attributes are indicated as such.
  138.      *
  139.      * @param data The translation-time TagData instance.
  140.      */
  141.    public boolean isValid(TagData data) {
  142.        TagExtraInfo tei = getTagExtraInfo();
  143.        if (tei == null) {
  144.    return true;
  145.        }
  146.        return tei.isValid(data);
  147.    }
  148.     /**
  149.       The instance (if any) for extra tag information
  150.       */
  151.     public TagExtraInfo getTagExtraInfo() {
  152. return tagExtraInfo;
  153.     }
  154.     /**
  155.      * Name of the class that provides the (run-time handler for this tag
  156.      */
  157.     
  158.     public String getTagClassName() {
  159. return tagClassName;
  160.     }
  161.     /**
  162.      * @return the body content (hint) string
  163.      */
  164.     public String getBodyContent() { return bodyContent; }
  165.     /**
  166.      * @return the info string
  167.      */
  168.     public String getInfoString() { return infoString; }
  169.     /**
  170.      * @return the tab library instance we belong to
  171.      */
  172.     public TagLibraryInfo getTagLibrary() { return tagLibrary; }
  173.     /**
  174.      * Stringify for debug purposes...
  175.      */
  176.     public String toString() {
  177.         StringBuffer b = new StringBuffer();
  178.         b.append("name = "+tagName+" ");
  179.         b.append("class = "+tagClassName+" ");
  180.         b.append("body = "+bodyContent+" ");
  181.         b.append("info = "+infoString+" ");
  182.         b.append("attributes = {n");
  183.         for(int i = 0; i < attributeInfo.length; i++)
  184.             b.append("t"+attributeInfo[i].toString());
  185.         b.append("n}n");
  186.         return b.toString();
  187.     }
  188.     /*
  189.      * private fields
  190.      */
  191.     private String             tagName; // the name of the tag
  192.     private String             tagClassName;
  193.     private String             bodyContent;
  194.     private String             infoString;
  195.     private TagLibraryInfo     tagLibrary;
  196.     private TagExtraInfo       tagExtraInfo; // instance of TagExtraInfo
  197.     private TagAttributeInfo[] attributeInfo;
  198. }