kinman      2002/12/18 10:35:38

  Modified:    jsr152/src/share/javax/servlet/jsp JspContext.java
                        PageContext.java
               jsr152/src/share/javax/servlet/jsp/el Expression.java
                        ExpressionEvaluator.java VariableResolver.java
               jsr152/src/share/javax/servlet/jsp/tagext .nbattrs
                        BodyTag.java IterationTag.java JspFragment.java
                        SimpleTag.java Tag.java TagData.java
                        TagLibraryValidator.java TagVariableInfo.java
                        VariableInfo.java
  Log:
  - Patch by Mark Roth
  
  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.
  
  Revision  Changes    Path
  1.6       +17 -32    
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspContext.java
  
  Index: JspContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspContext.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JspContext.java   8 Nov 2002 21:30:21 -0000       1.5
  +++ JspContext.java   18 Dec 2002 18:35:37 -0000      1.6
  @@ -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.
  
  
  
  1.6       +24 -22    
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/PageContext.java
  
  Index: PageContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/PageContext.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PageContext.java  29 Oct 2002 01:18:11 -0000      1.5
  +++ PageContext.java  18 Dec 2002 18:35:37 -0000      1.6
  @@ -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
  
  
  
  1.4       +16 -15    
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/Expression.java
  
  Index: Expression.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/Expression.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Expression.java   29 Oct 2002 01:18:12 -0000      1.3
  +++ Expression.java   18 Dec 2002 18:35:37 -0000      1.4
  @@ -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;
   }
   
  
  
  
  1.6       +5 -5      
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/ExpressionEvaluator.java
  
  Index: ExpressionEvaluator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/ExpressionEvaluator.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ExpressionEvaluator.java  29 Oct 2002 01:18:12 -0000      1.5
  +++ ExpressionEvaluator.java  18 Dec 2002 18:35:37 -0000      1.6
  @@ -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,
  
  
  
  1.5       +1 -6      
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/VariableResolver.java
  
  Index: VariableResolver.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/VariableResolver.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- VariableResolver.java     29 Oct 2002 01:18:12 -0000      1.4
  +++ VariableResolver.java     18 Dec 2002 18:35:37 -0000      1.5
  @@ -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;
                                        
     //-------------------------------------
  
  
  
  1.3       +3 -0      
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/.nbattrs
  
  Index: .nbattrs
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/.nbattrs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- .nbattrs  3 Oct 2002 23:01:44 -0000       1.2
  +++ .nbattrs  18 Dec 2002 18:35:37 -0000      1.3
  @@ -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>
  
  
  
  1.4       +16 -7     
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java
  
  Index: BodyTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- BodyTag.java      4 Nov 2002 17:44:24 -0000       1.3
  +++ BodyTag.java      18 Dec 2002 18:35:37 -0000      1.4
  @@ -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 {
  
  
  
  1.4       +7 -3      
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java
  
  Index: IterationTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IterationTag.java 4 Nov 2002 17:44:24 -0000       1.3
  +++ IterationTag.java 18 Dec 2002 18:35:37 -0000      1.4
  @@ -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
  
  
  
  1.5       +1 -1      
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/JspFragment.java
  
  Index: JspFragment.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/JspFragment.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JspFragment.java  29 Oct 2002 01:18:12 -0000      1.4
  +++ JspFragment.java  18 Dec 2002 18:35:37 -0000      1.5
  @@ -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.
  
  
  
  1.5       +1 -1      
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/SimpleTag.java
  
  Index: SimpleTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/SimpleTag.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SimpleTag.java    4 Nov 2002 17:44:24 -0000       1.4
  +++ SimpleTag.java    18 Dec 2002 18:35:37 -0000      1.5
  @@ -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> 
  
  
  
  1.5       +6 -5      
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/Tag.java
  
  Index: Tag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/Tag.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Tag.java  4 Nov 2002 17:44:24 -0000       1.4
  +++ Tag.java  18 Dec 2002 18:35:37 -0000      1.5
  @@ -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>
  
  
  
  1.5       +10 -3     
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagData.java
  
  Index: TagData.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagData.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TagData.java      4 Nov 2002 17:44:24 -0000       1.4
  +++ TagData.java      18 Dec 2002 18:35:37 -0000      1.5
  @@ -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) {
  
  
  
  1.4       +1 -1      
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java
  
  Index: TagLibraryValidator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TagLibraryValidator.java  29 Oct 2002 01:18:12 -0000      1.3
  +++ TagLibraryValidator.java  18 Dec 2002 18:35:37 -0000      1.4
  @@ -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
  
  
  
  1.6       +2 -2      
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagVariableInfo.java
  
  Index: TagVariableInfo.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/TagVariableInfo.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TagVariableInfo.java      29 Oct 2002 01:18:12 -0000      1.5
  +++ TagVariableInfo.java      18 Dec 2002 18:35:37 -0000      1.6
  @@ -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 {
   
  
  
  
  1.6       +10 -10    
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/VariableInfo.java
  
  Index: VariableInfo.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext/VariableInfo.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- VariableInfo.java 4 Nov 2002 17:44:24 -0000       1.5
  +++ VariableInfo.java 18 Dec 2002 18:35:37 -0000      1.6
  @@ -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.
    *
  
  
  

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

Reply via email to