Attached are a set of API patches leading up to PFD2 of the specification. Look for a corresponding patch to jakarta-tomcat-jasper to bring it up to date with these APIs.

Also note the attached replacement for TagProtocol.gif.

jsr152/src/share/javax/servlet/jsp/tagext/doc-files/TagProtocol.gif
- Updated diagram to remove arrow from released state to all
properties initialized state.
- Moved label [3] to another arrow.

jsr152/src/share/javax/servlet/jsp/tagext/Tag.java
- Removed state transition [3] from class javadocs.
- Added a new [3] label clarifying details about what may be called
on tag reuse.

jsr152/src/share/javax/servlet/jsp/tagext/TagData.java
- Updated description for getAttribute() to clarify
REQUEST_TIME_VALUE is returned for any dynamic attribute set
via <jsp:attribute>.

jsr152/src/share/javax/servlet/jsp/tagext/JspFragment.java
- "for example" --> "in other words"

jsr152/src/share/javax/servlet/jsp/tagext/VariableInfo.java
- Fixed incorrect class comment about variable scope.
- Removed old comment about JLS verbiage.
- Improved description of why 'boxed' types are necessary.

jsr152/src/share/javax/servlet/jsp/tagext/TagVariableInfo.java
- Fixed erroneous comment about only being available in JSP 2.0
format

jsr152/src/share/javax/servlet/jsp/tagext/SimpleTag.java
- Clarified SimpleTag has the equivalent power of BodyTag but with a
much simpler lifecycle.

jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java
- Clarified description for return value of SKIP_BODY from
doAfterBody()

jsr152/src/share/javax/servlet/jsp/PageContext.java
- Fixed class description as some elements were moved to JspContext.

jsr152/src/share/javax/servlet/jsp/JspContext.java
- Fixed class description as some elements were moved from
PageContext.
- Removed constants PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE and
APPLICATION_SCOPE as these are duplicated in PageContext.

jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java
- Clarified that in a classic tag invocation with an empty body
(e.g. <my:tag/>), the body methods are not to be called by the
container.

jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java
- A validator operates on the XML view associated with the JSP page,
not the "XML document".

jsr152/src/share/javax/servlet/jsp/el/VariableResolver.java
- Removed pContext parameter from resolveVariable()

jsr152/src/share/javax/servlet/jsp/el/ExpressionEvaluator.java
- Changed from an interface to an abstract class.

jsr152/src/share/javax/servlet/jsp/el/Expression.java
- Changed from an interface to an abstract class.

---
Mark Roth, Java Software
JSP 2.0 Co-Specification Lead
Sun Microsystems, Inc.
Index: jsr152/src/share/javax/servlet/jsp/JspContext.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspContext.java,v
retrieving revision 1.5
diff -u -r1.5 JspContext.java
--- jsr152/src/share/javax/servlet/jsp/JspContext.java  8 Nov 2002 21:30:21 -0000      
 1.5
+++ jsr152/src/share/javax/servlet/jsp/JspContext.java  18 Dec 2002 02:36:33 -0000
@@ -84,45 +84,30 @@
  *
  * <p><B>Methods Intended for JSP authors</B>
  * <p>
+ * Some methods provide <B>uniform access</B> to the diverse objects
+ * representing scopes.
+ * The implementation must use the underlying machinery
+ * corresponding to that scope, so information can be passed back and
+ * forth between the underlying environment (e.g. Servlets) and JSP pages.
+ * The methods are:
+ * <code>setAttribute()</code>,  <code>getAttribute()</code>,
+ * <code>findAttribute()</code>,  <code>removeAttribute()</code>,
+ * <code>getAttributesScope()</code> and 
+ * <code>getAttributeNamesInScope()</code>.
+ * 
+ * <p>
  * The following methods provide <B>convenient access</B> to implicit objects:
- * <ul>
  * <code>getOut()</code>
  *
+ * <p>
+ * The following methods provide <B>programmatic access</b> to the 
+ * Expression Language evaluator:
+ * <code>getExpressionEvaluator()</code>, <code>getVariableResolver()</code>
+ *
  * @since 2.0
  */
 
 public abstract class JspContext {
-
-    /**
-     * Page scope: (this is the default) the named reference remains available
-     * in this JspContext until the return from the current Servlet.service()
-     * invocation.
-     */
-
-    public static final int PAGE_SCOPE         = 1;
-
-    /**
-     * Request scope: the named reference remains available from the 
-     * ServletRequest associated with the Servlet until the current 
-     * request is completed.
-     */
-
-    public static final int REQUEST_SCOPE      = 2;
-
-    /**
-     * Session scope (only valid if this page participates in a session):
-     * the named reference remains available from the HttpSession (if any)
-     * associated with the Servlet until the HttpSession is invalidated.
-     */
-
-    public static final int SESSION_SCOPE      = 3;
-
-    /**
-     * Application scope: named reference remains available in the 
-     * ServletContext until it is reclaimed.
-     */
-
-    public static final int APPLICATION_SCOPE  = 4;
 
     /** 
      * Register the name and value specified with page scope semantics.
Index: jsr152/src/share/javax/servlet/jsp/PageContext.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/PageContext.java,v
retrieving revision 1.5
diff -u -r1.5 PageContext.java
--- jsr152/src/share/javax/servlet/jsp/PageContext.java 29 Oct 2002 01:18:11 -0000     
 1.5
+++ jsr152/src/share/javax/servlet/jsp/PageContext.java 18 Dec 2002 02:37:35 -0000
@@ -76,7 +76,7 @@
  * A PageContext instance provides access to all the namespaces associated
  * with a JSP page, provides access to several page attributes, as well as
  * a layer above the implementation details.  Implicit objects are added
- * the pageContext automatically.
+ * to the pageContext automatically.
  *
  * <p> The <code> PageContext </code> class is an abstract class, designed to be
  * extended to provide implementation dependent implementations thereof, by
@@ -116,20 +116,8 @@
  *
  * <p><B>Methods Intended for JSP authors</B>
  * <p>
- * Some methods provide <B>uniform access</B> to the diverse objects
- * representing scopes.
- * The implementation must use the underlying Servlet machinery
- * corresponding to that scope, so information can be passed back and
- * forth between Servlets and JSP pages.  The methods are:
- * <code>setAttribute()</code>,  <code>getAttribute()</code>,
- * <code>findAttribute()</code>,  <code>removeAttribute()</code>,
- * <code>getAttributesScope()</code> and 
- * <code>getAttributeNamesInScope()</code>.
- * 
- * <p>
  * The following methods provide <B>convenient access</B> to implicit objects:
- * <ul>
- * <code>getOut()</code>,  <code>getException()</code>,  <code>getPage()</code>
+ * <code>getException()</code>,  <code>getPage()</code>
  * <code>getRequest()</code>,  <code>getResponse()</code>,
  * <code>getSession()</code>,  <code>getServletConfig()</code>
  * and <code>getServletContext()</code>.
@@ -456,10 +444,17 @@
 
     /**
      * <p>
-     * This method is intended to process an unhandled "page" level exception
-     * by redirecting the exception to either the specified error page for this
-     * JSP, or if none was specified, to perform some implementation dependent
-     * action.
+     * This method is intended to process an unhandled 'page' level
+     * exception by forwarding the exception to the specified
+     * error page for this JSP.  If forwarding is not possible (for
+     * example because the response has already been committed), an
+     * implementation dependent mechanism should be used to invoke
+     * the error page (e.g. "including" the error page instead).
+     *
+     * <p>
+     * If no error page is defined in the page, the exception should
+     * be rethrown so that the standard servlet error handling
+     * takes over.
      *
      * <p>
      * A JSP implementation class shall typically clean up any local state
@@ -486,10 +481,17 @@
 
     /**
      * <p>
-     * This method is identical to the handlePageException(Exception),
-     * except that it accepts a Throwable.  This is the preferred method
-     * to use as it allows proper implementation of the errorpage
-     * semantics.
+     * This method is intended to process an unhandled 'page' level
+     * exception by forwarding the exception to the specified
+     * error page for this JSP.  If forwarding is not possible (for
+     * example because the response has already been committed), an
+     * implementation dependent mechanism should be used to invoke
+     * the error page (e.g. "including" the error page instead).
+     *
+     * <p>
+     * If no error page is defined in the page, the exception should
+     * be rethrown so that the standard servlet error handling
+     * takes over.
      *
      * <p>
      * This method is intended to process an unhandled "page" level exception
Index: jsr152/src/share/javax/servlet/jsp/el/Expression.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/Expression.java,v
retrieving revision 1.3
diff -u -r1.3 Expression.java
--- jsr152/src/share/javax/servlet/jsp/el/Expression.java       29 Oct 2002 01:18:12 
-0000      1.3
+++ jsr152/src/share/javax/servlet/jsp/el/Expression.java       18 Dec 2002 02:37:35 
+-0000
@@ -60,32 +60,33 @@
 import java.util.Map;
 
 /**
- * <p>The interface for a prepared expression.</p>
+ * <p>The abstract class for a prepared expression.</p>
  *
- * <p>An instance of an Expression can be obtained via from an ExpressionEvaluator
- * instance.</p>
+ * <p>An instance of an Expression can be obtained via from an 
+ * ExpressionEvaluator instance.</p>
  *
- * <p>An Expression may or not have done a syntactic parse of the expression.  A 
client
- * invoking the evaluate() mehod should be ready for the case where ELParseException
- * exceptions are raised. </p>
+ * <p>An Expression may or not have done a syntactic parse of the expression.
+ * A client invoking the evaluate() method should be ready for the case 
+ * where ELParseException exceptions are raised. </p>
  *
  * @since 2.0
  */
-public interface Expression {
+public abstract class Expression {
 
     /** 
-     * Evaluates an expression that was previously prepared.  In some implementations
-     * preparing an expression involves full syntactic validation, but others may
-     * not do so.  Evaluating the expression may raise an ELParseException as well
-     * as other ELExceptions due to run-time evaluation.
+     * Evaluates an expression that was previously prepared.  In some 
+     * implementations preparing an expression involves full syntactic 
+     * validation, but others may not do so.  Evaluating the expression may 
+     * raise an ELParseException as well as other ELExceptions due to 
+     * run-time evaluation.
      *
-     * @param vResolver A VariableResolver instance that can be used at runtime to
-     *   resolve the name of implicit objects into Objects.
+     * @param vResolver A VariableResolver instance that can be used at 
+     *   runtime to resolve the name of implicit objects into Objects.
      * @return The result of the expression evaluation.
      *
      * @exception ELException Thrown if the expression evaluation failed.
      */ 
-    public Object evaluate( VariableResolver vResolver )
-      throws ELException; 
+    public abstract Object evaluate( VariableResolver vResolver )
+        throws ELException;
 }
 
Index: jsr152/src/share/javax/servlet/jsp/el/ExpressionEvaluator.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/ExpressionEvaluator.java,v
retrieving revision 1.5
diff -u -r1.5 ExpressionEvaluator.java
--- jsr152/src/share/javax/servlet/jsp/el/ExpressionEvaluator.java      29 Oct 2002 
01:18:12 -0000      1.5
+++ jsr152/src/share/javax/servlet/jsp/el/ExpressionEvaluator.java      18 Dec 2002 
+02:37:35 -0000
@@ -60,9 +60,9 @@
 import java.util.Map;
 
 /**
- * <p>The interface for an expression-language evaluator.
+ * <p>The abstract base class for an expression-language evaluator.
  * Classes that implement an expression language expose their functionality
- * via this interface.</p>
+ * via this abstract class.</p>
  *
  * <p>An instance of the ExpressionEvaluator can be obtained via the 
  * JspContext / PageContext</p>
@@ -88,7 +88,7 @@
  *
  * @since 2.0
  */
-public interface ExpressionEvaluator {
+public abstract class ExpressionEvaluator {
 
     /**
      * Prepare an expression for later evaluation.  This method should perform
@@ -109,7 +109,7 @@
      *
      * @exception ELException Thrown if parsing errors were found.
      */ 
-    public Expression parseExpression( String expression, 
+    public abstract Expression parseExpression( String expression, 
                                       Class expectedType, 
                                       FunctionMapper fMapper,
                                       String defaultPrefix ) 
@@ -138,7 +138,7 @@
      *
      * @exception ELException Thrown if the expression evaluation failed.
      */ 
-    public Object evaluate( String expression, 
+    public abstract Object evaluate( String expression, 
                            Class expectedType, 
                            VariableResolver vResolver,
                            FunctionMapper fMapper,
Index: jsr152/src/share/javax/servlet/jsp/el/VariableResolver.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/VariableResolver.java,v
retrieving revision 1.4
diff -u -r1.4 VariableResolver.java
--- jsr152/src/share/javax/servlet/jsp/el/VariableResolver.java 29 Oct 2002 01:18:12 
-0000      1.4
+++ jsr152/src/share/javax/servlet/jsp/el/VariableResolver.java 18 Dec 2002 02:37:35 
+-0000
@@ -76,17 +76,12 @@
    * Returns null if the variable is not found.
    * 
    * @param pName the name of the variable to resolve
-   * @param pContext the context in which the variable is being resolved.
-   *     The actual instance varies depending on the environment in which
-   *     the Expression Evaluator is used.  For example, in a JSP context, 
-   *     the context would normally be an instance of JspContext.
    * @return the result of the variable resolution
    *
    * @throws ELException if a failure occurred while trying to resolve
    *     the given variable
    **/
-  public Object resolveVariable (String pName,
-                                Object pContext)
+  public Object resolveVariable (String pName)
     throws ELException;
                                        
   //-------------------------------------
Index: jsr152/src/share/javax/servlet/jsp/tagext/.nbattrs
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/.nbattrs,v
retrieving revision 1.2
diff -u -r1.2 .nbattrs
--- jsr152/src/share/javax/servlet/jsp/tagext/.nbattrs  3 Oct 2002 23:01:44 -0000      
 1.2
+++ jsr152/src/share/javax/servlet/jsp/tagext/.nbattrs  18 Dec 2002 02:37:35 -0000
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE attributes PUBLIC "-//NetBeans//DTD DefaultAttributes 1.0//EN" 
"http://www.netbeans.org/dtds/attributes-1_0.dtd";>
 <attributes version="1.0">
+    <fileobject name="TagData.java">
+        <attr name="class_dependency_java.lang.Cloneable" stringvalue="TagData"/>
+    </fileobject>
     <fileobject name="SimpleTag.java">
         <attr name="class_dependency_javax.servlet.jsp.tagext.BodyTag" 
serialvalue="aced0005737200316f72672e6f70656e6964652e66696c6573797374656d732e4d756c746946696c654f626a65637424566f696456616c7565d9ec9c94d5fd3ca40c0000787077040000000078"/>
     </fileobject>
Index: jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java,v
retrieving revision 1.3
diff -u -r1.3 BodyTag.java
--- jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java      4 Nov 2002 17:44:24 
-0000       1.3
+++ jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java      18 Dec 2002 02:37:35 
+-0000
@@ -96,7 +96,7 @@
  * object, where the JSP Page implementation object will place the
  * evaluation (and reevaluation, if appropriate) of the body.  The setter
  * method (setBodyContent) will only be invoked if doStartTag() returns
- * EVAL_BODY_BUFFERED.
+ * EVAL_BODY_BUFFERED and the corresponding action element is not empty.
  *
  * <p><B>Methods</B>
  * <p> In addition to the setter method for the bodyContent property, there
@@ -113,29 +113,38 @@
  * interface for details.
  * <p>
  * <IMG src="doc-files/BodyTagProtocol.gif"/>
-
+ *
  * <p><B>Empty and Non-Empty Action</B>
  * <p> If the TagLibraryDescriptor file indicates that the action must
- * always have an empty action, by an &lt;body-content&gt; entry of "empty",
- * then the doStartTag() method must return SKIP_BODY.
- *
+ * always have an empty element body, by an &lt;body-content&gt; entry 
+ * of "empty", then the doStartTag() method must return SKIP_BODY.
  * Otherwise, the doStartTag() method may return SKIP_BODY,
  * EVAL_BODY_INCLUDE, or EVAL_BODY_BUFFERED.
  *
+ * <p>Note that which methods are invoked after the doStartTag() depends on 
+ * both the return value and on if the custom action element is empty
+ * or not in the JSP page, not how it's declared in the TLD.
+ *
  * <p>
  * If SKIP_BODY is returned the body is not evaluated, and doEndTag() is
  * invoked.
  *
  * <p>
- * If EVAL_BODY_INCLUDE is returned, setBodyContent() is not invoked,
+ * If EVAL_BODY_INCLUDE is returned, and the custom action element is not
+ * empty, setBodyContent() is not invoked,
  * doInitBody() is not invoked, the body is evaluated and
  * "passed through" to the current out, doAfterBody() is invoked
  * and then, after zero or more iterations, doEndTag() is invoked.
+ * If the custom action element is empty, only doStart() and 
+ * doEndTag() are invoked.
  *
  * <p>
- * If EVAL_BODY_BUFFERED is returned, setBodyContent() is invoked,
+ * If EVAL_BODY_BUFFERED is returned, and the custom action element is not
+ * empty, setBodyContent() is invoked,
  * doInitBody() is invoked, the body is evaluated, doAfterBody() is
  * invoked, and then, after zero or more iterations, doEndTag() is invoked.
+ * If the custom action element is empty, only doStart() and doEndTag() 
+ * are invoked.
  */
 
 public interface BodyTag extends IterationTag {
Index: jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java,v
retrieving revision 1.3
diff -u -r1.3 IterationTag.java
--- jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java 4 Nov 2002 17:44:24 
-0000       1.3
+++ jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java 18 Dec 2002 02:37:36 
+-0000
@@ -128,9 +128,13 @@
      * <p>
      * If doAfterBody returns EVAL_BODY_AGAIN, a new evaluation of the
      * body will happen (followed by another invocation of doAfterBody).
-     * If doAfterBody returns SKIP_BODY no more body evaluations will
-     * occur, the value of out will be restored using the popBody method
-     * in pageContext, and then doEndTag will be invoked.
+     * If doAfterBody returns SKIP_BODY, no more body evaluations will occur,
+     * and the doEndTag method will be invoked.
+     *
+     * <p>
+     * If this tag handler implements BodyTag and doAfterBody returns
+     * SKIP_BODY, the value of out will be restored using the popBody 
+     * method in pageContext prior to invoking doEndTag.
      *
      * <p>
      * The method re-invocations may be lead to different actions because
Index: jsr152/src/share/javax/servlet/jsp/tagext/JspFragment.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/JspFragment.java,v
retrieving revision 1.4
diff -u -r1.4 JspFragment.java
--- jsr152/src/share/javax/servlet/jsp/tagext/JspFragment.java  29 Oct 2002 01:18:12 
-0000      1.4
+++ jsr152/src/share/javax/servlet/jsp/tagext/JspFragment.java  18 Dec 2002 02:37:40 
+-0000
@@ -64,7 +64,7 @@
  * or to be of type JspFragment in the TLD.
  * <p>
  * The definition of the JSP fragment must only contain template 
- * text and JSP action elements.  It must not contain, for example, 
+ * text and JSP action elements.  In other words, it must not contain
  * scriptlets or scriptlet expressions.  At translation time, the 
  * container generates an implementation of the JspFragment interface
  * capable of executing the defined fragment.
Index: jsr152/src/share/javax/servlet/jsp/tagext/SimpleTag.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/SimpleTag.java,v
retrieving revision 1.4
diff -u -r1.4 SimpleTag.java
--- jsr152/src/share/javax/servlet/jsp/tagext/SimpleTag.java    4 Nov 2002 17:44:24 
-0000       1.4
+++ jsr152/src/share/javax/servlet/jsp/tagext/SimpleTag.java    18 Dec 2002 02:37:40 
+-0000
@@ -65,7 +65,7 @@
  * <code>doTag()</code> method, which is called once and only once for any 
  * given tag invocation.  All tag logic, iteration, body evaluations, etc. 
  * are to be performed in this single method.  Thus, simple tag handlers 
- * have the equivalent power of <code>IterationTag</code>, but with a much 
+ * have the equivalent power of <code>BodyTag</code>, but with a much 
  * simpler lifecycle and interface.</p>
  *
  * <p>To support body content, the <code>setJspBody()</code> 
Index: jsr152/src/share/javax/servlet/jsp/tagext/Tag.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/Tag.java,v
retrieving revision 1.4
diff -u -r1.4 Tag.java
--- jsr152/src/share/javax/servlet/jsp/tagext/Tag.java  4 Nov 2002 17:44:24 -0000      
 1.4
+++ jsr152/src/share/javax/servlet/jsp/tagext/Tag.java  18 Dec 2002 02:37:42 -0000
@@ -92,11 +92,12 @@
  * or not.
  * <li> [2] This transition happens if and only if the tag ends normally
  * without raising an exception
- * <li> [3] Note that since there are no guarantees on the state of the
- * properties, a tag handler that had some optional properties set can only be
- * reused if those properties are set to a new (known) value.  This means
- * that tag handlers can only be reused within the same "AttSet" (set of
- * attributes that have been set).
+ * <li> [3] Some setters may be called again before a tag handler is 
+ * reused.  For instance, <code>setParent()</code> is called if it's 
+ * reused within the same page but at a different level, 
+ * <code>setPageContext()</code> is called if it's used in another page, 
+ * and attribute setters are called if the values differ or are expressed 
+ * as request-time attribute values.
  * <li> Check the TryCatchFinally interface for additional details related
  * to exception handling and resource management.
  * </ul></p>
Index: jsr152/src/share/javax/servlet/jsp/tagext/TagData.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagData.java,v
retrieving revision 1.4
diff -u -r1.4 TagData.java
--- jsr152/src/share/javax/servlet/jsp/tagext/TagData.java      4 Nov 2002 17:44:24 
-0000       1.4
+++ jsr152/src/share/javax/servlet/jsp/tagext/TagData.java      18 Dec 2002 02:37:42 
+-0000
@@ -131,11 +131,18 @@
 
     /**
      * The value of the attribute.
-     * Returns the distinguished object REQUEST_TIME_VALUE if
-     * the value is request time. Returns null if the attribute is not set.
+     * If a static value is specified for an attribute that accepts a
+     * request-time attribute expression then that static value is returned,
+     * even if the value is provided in the body of a <jsp:attribute> action.
+     * The distinguished object REQUEST_TIME_VALUE is only returned if
+     * the value is specified as a request-time attribute expression
+     * or via the &lt;jsp:attribute&gt; action with a body that contains
+     * dynamic content (scriptlets, scripting expressions, EL expressions, 
+     * standard actions, or custom actions).  Returns null if the attribute 
+     * is not set. 
      *
      * @param attName the name of the attribute
-     * @return the attribute's value object
+     * @return the attribute's value
      */
 
     public Object getAttribute(String attName) {
Index: jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java,v
retrieving revision 1.3
diff -u -r1.3 TagLibraryValidator.java
--- jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java  29 Oct 2002 
01:18:12 -0000      1.3
+++ jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java  18 Dec 2002 
+02:37:44 -0000
@@ -59,7 +59,7 @@
 
 /**
  * Translation-time validator class for a JSP page. 
- * A validator operates on the XML document associated with the JSP page.
+ * A validator operates on the XML view associated with the JSP page.
  *
  * <p>
  * The TLD file associates a TagLibraryValidator class and some init
Index: jsr152/src/share/javax/servlet/jsp/tagext/TagVariableInfo.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagVariableInfo.java,v
retrieving revision 1.5
diff -u -r1.5 TagVariableInfo.java
--- jsr152/src/share/javax/servlet/jsp/tagext/TagVariableInfo.java      29 Oct 2002 
01:18:12 -0000      1.5
+++ jsr152/src/share/javax/servlet/jsp/tagext/TagVariableInfo.java      18 Dec 2002 
+02:37:44 -0000
@@ -62,8 +62,8 @@
  *
  * This object should be immutable.
  *
- * This information is only available in JSP 2.0 format
-*/
+ * This information is only available in JSP 1.2 format TLDs or above.
+ */
 
 public class TagVariableInfo {
 
Index: jsr152/src/share/javax/servlet/jsp/tagext/VariableInfo.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/VariableInfo.java,v
retrieving revision 1.5
diff -u -r1.5 VariableInfo.java
--- jsr152/src/share/javax/servlet/jsp/tagext/VariableInfo.java 4 Nov 2002 17:44:24 
-0000       1.5
+++ jsr152/src/share/javax/servlet/jsp/tagext/VariableInfo.java 18 Dec 2002 02:37:44 
+-0000
@@ -61,15 +61,16 @@
  * classes and it is used by the translation phase of JSP.
  *
  * <p>
- * Scripting variables generated by a custom action may have scope values
- * of page, request, session, and application.
+ * Scripting variables generated by a custom action have an associated 
+ * scope of either AT_BEGIN, NESTED, or AT_END.
  *
  * <p>
  * The class name (VariableInfo.getClassName) in the returned objects
- * are used to determine the types of the scripting variables.
- * Because of this, a custom action cannot create a scripting variable
- * of a primitive type. The workaround is to use &quot;boxed&quot;
- * types.
+ * is used to determine the types of the scripting variables.
+ * Note that because scripting variables are assigned their values
+ * from scoped attributes which cannot be of primitive types,
+ * &quot;boxed&quot; types such as <code>java.lang.Integer</code> must 
+ * be used instead of primitives.
  *
  * <p>
  * The class name may be a Fully Qualified Class Name, or a short
@@ -85,10 +86,9 @@
  * <p>
  * If a short class name is given in the VariableInfo objects, then
  * the class name must be that of a public class in the context of the
- * import directives of the page where the custom action appears (will
- * check if there is a JLS verbiage to refer to). The class must also
- * be in the CLASSPATH for the Web Application (see Servlet 2.4
- * specification - essentially it is WEB-INF/lib and
+ * import directives of the page where the custom action appears. 
+ * The class must also be in the CLASSPATH for the Web Application 
+ * (see Servlet 2.4 specification - essentially it is WEB-INF/lib and
  * WEB-INF/classes). Failure to be so will lead to a translation-time
  * error.
  *
Index: jsr152/src/share/javax/servlet/jsp/tagext/doc-files/TagProtocol.gif
===================================================================
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/doc-files/TagProtocol.gif,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 TagProtocol.gif
Binary files /tmp/cvsiSIWui and TagProtocol.gif differ

<<inline: TagProtocol.gif>>

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>


Reply via email to