Index: 3rdParty_sources/jsp-api/javax/servlet/jsp/PageContext.java =================================================================== diff -u -r188531e2b734df509672788d897e1030e4b1a24a -ra5b247dd91cb3ffabf9de46cba029e5537fad087 --- 3rdParty_sources/jsp-api/javax/servlet/jsp/PageContext.java (.../PageContext.java) (revision 188531e2b734df509672788d897e1030e4b1a24a) +++ 3rdParty_sources/jsp-api/javax/servlet/jsp/PageContext.java (.../PageContext.java) (revision a5b247dd91cb3ffabf9de46cba029e5537fad087) @@ -1,560 +1,560 @@ -/* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. - * - * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved. - * - * The contents of this file are subject to the terms of either the GNU - * General Public License Version 2 only ("GPL") or the Common Development - * and Distribution License("CDDL") (collectively, the "License"). You - * may not use this file except in compliance with the License. You can obtain - * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific - * language governing permissions and limitations under the License. - * - * When distributing the software, include this License Header Notice in each - * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt. - * Sun designates this particular file as subject to the "Classpath" exception - * as provided by Sun in the GPL Version 2 section of the License file that - * accompanied this code. If applicable, add the following below the License - * Header, with the fields enclosed by brackets [] replaced by your own - * identifying information: "Portions Copyrighted [year] - * [name of copyright owner]" - * - * Contributor(s): - * - * If you wish your version of this file to be governed by only the CDDL or - * only the GPL Version 2, indicate your decision by adding "[Contributor] - * elects to include this software in this distribution under the [CDDL or GPL - * Version 2] license." If you don't indicate a single choice of license, a - * recipient has the option to distribute your version of this file under - * either the CDDL, the GPL Version 2 or to extend the choice of license to - * its licensees as provided above. However, if you add GPL Version 2 code - * and therefore, elected the GPL Version 2 license, then the option applies - * only if the new code is made subject to such option by the copyright - * holder. - * - * - * This file incorporates work covered by the following copyright and - * permission notice: - * - * 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; - -import java.io.IOException; - -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -import javax.servlet.http.HttpSession; - -import javax.servlet.jsp.tagext.BodyContent; - -/** - *
- * PageContext extends JspContext to provide useful context information for - * when JSP technology is used in a Servlet environment. - *
- * 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 - * to the pageContext automatically. - * - *
The PageContext
class is an abstract class, designed to be
- * extended to provide implementation dependent implementations thereof, by
- * conformant JSP engine runtime environments. A PageContext instance is
- * obtained by a JSP implementation class by calling the
- * JspFactory.getPageContext() method, and is released by calling
- * JspFactory.releasePageContext().
- *
- *
An example of how PageContext, JspFactory, and other classes can be - * used within a JSP Page Implementation object is given elsewhere. - * - *
- * The PageContext provides a number of facilities to the page/component - * author and page implementor, including: - *
Methods Intended for Container Generated Code - *
Some methods are intended to be used by the code generated by the - * container, not by code written by JSP page authors, or JSP tag library - * authors. - *
The methods supporting lifecycle are initialize()
- * and release()
- *
- *
- * The following methods enable the management of nested JspWriter
- * streams to implement Tag Extensions: pushBody()
- *
- *
Methods Intended for JSP authors - *
- * The following methods provide convenient access to implicit objects:
- * getException()
, getPage()
- * getRequest()
, getResponse()
,
- * getSession()
, getServletConfig()
- * and getServletContext()
.
- *
- *
- * The following methods provide support for forwarding, inclusion
- * and error handling:
- * forward()
, include()
,
- * and handlePageException()
.
- */
-
-abstract public class PageContext
- extends JspContext
-{
-
- /**
- * Sole constructor. (For invocation by subclass constructors,
- * typically implicit.)
- */
- public PageContext() {
- }
-
- /**
- * Page scope: (this is the default) the named reference remains available
- * in this PageContext 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;
-
- /**
- * Name used to store the Servlet in this PageContext's nametables.
- */
-
- public static final String PAGE = "javax.servlet.jsp.jspPage";
-
- /**
- * Name used to store this PageContext in it's own name table.
- */
-
- public static final String PAGECONTEXT = "javax.servlet.jsp.jspPageContext";
-
- /**
- * Name used to store ServletRequest in PageContext name table.
- */
-
- public static final String REQUEST = "javax.servlet.jsp.jspRequest";
-
- /**
- * Name used to store ServletResponse in PageContext name table.
- */
-
- public static final String RESPONSE = "javax.servlet.jsp.jspResponse";
-
- /**
- * Name used to store ServletConfig in PageContext name table.
- */
-
- public static final String CONFIG = "javax.servlet.jsp.jspConfig";
-
- /**
- * Name used to store HttpSession in PageContext name table.
- */
-
- public static final String SESSION = "javax.servlet.jsp.jspSession";
- /**
- * Name used to store current JspWriter in PageContext name table.
- */
-
- public static final String OUT = "javax.servlet.jsp.jspOut";
-
- /**
- * Name used to store ServletContext in PageContext name table.
- */
-
- public static final String APPLICATION = "javax.servlet.jsp.jspApplication";
-
- /**
- * Name used to store uncaught exception in ServletRequest attribute
- * list and PageContext name table.
- */
-
- public static final String EXCEPTION = "javax.servlet.jsp.jspException";
-
- /**
- *
- * The initialize method is called to initialize an uninitialized PageContext - * so that it may be used by a JSP Implementation class to service an - * incoming request and response within it's _jspService() method. - * - *
- * This method is typically called from JspFactory.getPageContext() in - * order to initialize state. - * - *
- * This method is required to create an initial JspWriter, and associate - * the "out" name in page scope with this newly created object. - * - *
- * This method should not be used by page or tag library authors. - * - * @param servlet The Servlet that is associated with this PageContext - * @param request The currently pending request for this Servlet - * @param response The currently pending response for this Servlet - * @param errorPageURL The value of the errorpage attribute from the page - * directive or null - * @param needsSession The value of the session attribute from the - * page directive - * @param bufferSize The value of the buffer attribute from the page - * directive - * @param autoFlush The value of the autoflush attribute from the page - * directive - * - * @throws IOException during creation of JspWriter - * @throws IllegalStateException if out not correctly initialized - * @throws IllegalArgumentException If one of the given parameters - * is invalid - */ - - abstract public void initialize(Servlet servlet, ServletRequest request, - ServletResponse response, String errorPageURL, boolean needsSession, - int bufferSize, boolean autoFlush) - throws IOException, IllegalStateException, IllegalArgumentException; - - /** - *
- * This method shall "reset" the internal state of a PageContext, releasing - * all internal references, and preparing the PageContext for potential - * reuse by a later invocation of initialize(). This method is typically - * called from JspFactory.releasePageContext(). - * - *
- * Subclasses shall envelope this method. - * - *
- * This method should not be used by page or tag library authors. - * - */ - - abstract public void release(); - - /** - * The current value of the session object (an HttpSession). - * - * @return the HttpSession for this PageContext or null - */ - - abstract public HttpSession getSession(); - - /** - * The current value of the page object (In a Servlet environment, - * this is an instance of javax.servlet.Servlet). - * - * @return the Page implementation class instance associated - * with this PageContext - */ - - abstract public Object getPage(); - - - /** - * The current value of the request object (a ServletRequest). - * - * @return The ServletRequest for this PageContext - */ - - abstract public ServletRequest getRequest(); - - /** - * The current value of the response object (a ServletResponse). - * - * @return the ServletResponse for this PageContext - */ - - abstract public ServletResponse getResponse(); - - /** - * The current value of the exception object (an Exception). - * - * @return any exception passed to this as an errorpage - */ - - abstract public Exception getException(); - - /** - * The ServletConfig instance. - * - * @return the ServletConfig for this PageContext - */ - - abstract public ServletConfig getServletConfig(); - - /** - * The ServletContext instance. - * - * @return the ServletContext for this PageContext - */ - - abstract public ServletContext getServletContext(); - - /** - *
- * This method is used to re-direct, or "forward" the current - * ServletRequest and ServletResponse to another active component in - * the application. - *
- *
- * If the relativeUrlPath begins with a "/" then the URL specified
- * is calculated relative to the DOCROOT of the ServletContext
- * for this JSP. If the path does not begin with a "/" then the URL
- * specified is calculated relative to the URL of the request that was
- * mapped to the calling JSP.
- *
- * It is only valid to call this method from a Thread
- * executing within a _jspService(...)
method of a JSP.
- *
- * Once this method has been called successfully, it is illegal for the
- * calling Thread
to attempt to modify the
- * ServletResponse
object. Any such attempt to do so, shall result
- * in undefined behavior. Typically, callers immediately return from
- * _jspService(...)
after calling this method.
- *
ServletResponse
is not
- * in a state where a forward can be performed
- * @throws ServletException if the page that was forwarded to throws
- * a ServletException
- * @throws IOException if an I/O error occurred while forwarding
- */
-
- abstract public void forward(String relativeUrlPath)
- throws ServletException, IOException;
-
- /**
- * - * Causes the resource specified to be processed as part of the current - * ServletRequest and ServletResponse being processed by the calling Thread. - * The output of the target resources processing of the request is written - * directly to the ServletResponse output stream. - *
- *- * The current JspWriter "out" for this JSP is flushed as a side-effect - * of this call, prior to processing the include. - *
- *
- * If the relativeUrlPath begins with a "/" then the URL specified
- * is calculated relative to the DOCROOT of the ServletContext
- * for this JSP. If the path does not begin with a "/" then the URL
- * specified is calculated relative to the URL of the request that was
- * mapped to the calling JSP.
- *
- * It is only valid to call this method from a Thread
- * executing within a _jspService(...)
method of a JSP.
- *
- * Causes the resource specified to be processed as part of the current - * ServletRequest and ServletResponse being processed by the calling Thread. - * The output of the target resources processing of the request is written - * directly to the current JspWriter returned by a call to getOut(). - *
- *- * If flush is true, The current JspWriter "out" for this JSP - * is flushed as a side-effect of this call, prior to processing - * the include. Otherwise, the JspWriter "out" is not flushed. - *
- *
- * If the relativeUrlPath begins with a "/" then the URL specified
- * is calculated relative to the DOCROOT of the ServletContext
- * for this JSP. If the path does not begin with a "/" then the URL
- * specified is calculated relative to the URL of the request that was
- * mapped to the calling JSP.
- *
- * It is only valid to call this method from a Thread
- * executing within a _jspService(...)
method of a JSP.
- *
- * 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). - * - *
- * If no error page is defined in the page, the exception should - * be rethrown so that the standard servlet error handling - * takes over. - * - *
- * A JSP implementation class shall typically clean up any local state - * prior to invoking this and will return immediately thereafter. It is - * illegal to generate any output to the client, or to modify any - * ServletResponse state after invoking this call. - * - *
- * This method is kept for backwards compatiblity reasons. Newly - * generated code should use PageContext.handlePageException(Throwable). - * - * @param e the exception to be handled - * - * @throws ServletException if an error occurs while invoking the error page - * @throws IOException if an I/O error occurred while invoking the error - * page - * @throws NullPointerException if the exception is null - * - * @see #handlePageException(Throwable) - */ - - abstract public void handlePageException(Exception e) - throws ServletException, IOException; - - /** - *
- * 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). - * - *
- * If no error page is defined in the page, the exception should - * be rethrown so that the standard servlet error handling - * takes over. - * - *
- * 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. - * - *
- * A JSP implementation class shall typically clean up any local state - * prior to invoking this and will return immediately thereafter. It is - * illegal to generate any output to the client, or to modify any - * ServletResponse state after invoking this call. - * - * @param t the throwable to be handled - * - * @throws ServletException if an error occurs while invoking the error page - * @throws IOException if an I/O error occurred while invoking the error - * page - * @throws NullPointerException if the exception is null - * - * @see #handlePageException(Exception) - */ - - abstract public void handlePageException(Throwable t) - throws ServletException, IOException; - - /** - * Return a new BodyContent object, save the current "out" JspWriter, - * and update the value of the "out" attribute in the page scope - * attribute namespace of the PageContext. - * - * @return the new BodyContent - */ - - public BodyContent pushBody() { - return null; // XXX to implement - } - - - /** - * Provides convenient access to error information. - * - * @return an ErrorData instance containing information about the - * error, as obtained from the request attributes, as per the - * Servlet specification. If this is not an error page (that is, - * if the isErrorPage attribute of the page directive is not set - * to "true"), the information is meaningless. - * - * @since JSP 2.0 - */ - public ErrorData getErrorData() { - return new ErrorData( - (Throwable)getRequest().getAttribute( "javax.servlet.error.exception" ), - ((Integer)getRequest().getAttribute( - "javax.servlet.error.status_code" )).intValue(), - (String)getRequest().getAttribute( "javax.servlet.error.request_uri" ), - (String)getRequest().getAttribute( "javax.servlet.error.servlet_name" ) ); - } - -} +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 1997-2008 Sun Microsystems, Inc. All rights reserved. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common Development + * and Distribution License("CDDL") (collectively, the "License"). You + * may not use this file except in compliance with the License. You can obtain + * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html + * or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific + * language governing permissions and limitations under the License. + * + * When distributing the software, include this License Header Notice in each + * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt. + * Sun designates this particular file as subject to the "Classpath" exception + * as provided by Sun in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the License + * Header, with the fields enclosed by brackets [] replaced by your own + * identifying information: "Portions Copyrighted [year] + * [name of copyright owner]" + * + * Contributor(s): + * + * If you wish your version of this file to be governed by only the CDDL or + * only the GPL Version 2, indicate your decision by adding "[Contributor] + * elects to include this software in this distribution under the [CDDL or GPL + * Version 2] license." If you don't indicate a single choice of license, a + * recipient has the option to distribute your version of this file under + * either the CDDL, the GPL Version 2 or to extend the choice of license to + * its licensees as provided above. However, if you add GPL Version 2 code + * and therefore, elected the GPL Version 2 license, then the option applies + * only if the new code is made subject to such option by the copyright + * holder. + * + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * 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; + +import java.io.IOException; + +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +import javax.servlet.http.HttpSession; + +import javax.servlet.jsp.tagext.BodyContent; + +/** + *
+ * PageContext extends JspContext to provide useful context information for + * when JSP technology is used in a Servlet environment. + *
+ * 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 + * to the pageContext automatically. + * + *
The PageContext
class is an abstract class, designed to be
+ * extended to provide implementation dependent implementations thereof, by
+ * conformant JSP engine runtime environments. A PageContext instance is
+ * obtained by a JSP implementation class by calling the
+ * JspFactory.getPageContext() method, and is released by calling
+ * JspFactory.releasePageContext().
+ *
+ *
An example of how PageContext, JspFactory, and other classes can be + * used within a JSP Page Implementation object is given elsewhere. + * + *
+ * The PageContext provides a number of facilities to the page/component + * author and page implementor, including: + *
Methods Intended for Container Generated Code + *
Some methods are intended to be used by the code generated by the + * container, not by code written by JSP page authors, or JSP tag library + * authors. + *
The methods supporting lifecycle are initialize()
+ * and release()
+ *
+ *
+ * The following methods enable the management of nested JspWriter
+ * streams to implement Tag Extensions: pushBody()
+ *
+ *
Methods Intended for JSP authors + *
+ * The following methods provide convenient access to implicit objects:
+ * getException()
, getPage()
+ * getRequest()
, getResponse()
,
+ * getSession()
, getServletConfig()
+ * and getServletContext()
.
+ *
+ *
+ * The following methods provide support for forwarding, inclusion
+ * and error handling:
+ * forward()
, include()
,
+ * and handlePageException()
.
+ */
+
+abstract public class PageContext
+ extends JspContext
+{
+
+ /**
+ * Sole constructor. (For invocation by subclass constructors,
+ * typically implicit.)
+ */
+ public PageContext() {
+ }
+
+ /**
+ * Page scope: (this is the default) the named reference remains available
+ * in this PageContext 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;
+
+ /**
+ * Name used to store the Servlet in this PageContext's nametables.
+ */
+
+ public static final String PAGE = "javax.servlet.jsp.jspPage";
+
+ /**
+ * Name used to store this PageContext in it's own name table.
+ */
+
+ public static final String PAGECONTEXT = "javax.servlet.jsp.jspPageContext";
+
+ /**
+ * Name used to store ServletRequest in PageContext name table.
+ */
+
+ public static final String REQUEST = "javax.servlet.jsp.jspRequest";
+
+ /**
+ * Name used to store ServletResponse in PageContext name table.
+ */
+
+ public static final String RESPONSE = "javax.servlet.jsp.jspResponse";
+
+ /**
+ * Name used to store ServletConfig in PageContext name table.
+ */
+
+ public static final String CONFIG = "javax.servlet.jsp.jspConfig";
+
+ /**
+ * Name used to store HttpSession in PageContext name table.
+ */
+
+ public static final String SESSION = "javax.servlet.jsp.jspSession";
+ /**
+ * Name used to store current JspWriter in PageContext name table.
+ */
+
+ public static final String OUT = "javax.servlet.jsp.jspOut";
+
+ /**
+ * Name used to store ServletContext in PageContext name table.
+ */
+
+ public static final String APPLICATION = "javax.servlet.jsp.jspApplication";
+
+ /**
+ * Name used to store uncaught exception in ServletRequest attribute
+ * list and PageContext name table.
+ */
+
+ public static final String EXCEPTION = "javax.servlet.jsp.jspException";
+
+ /**
+ *
+ * The initialize method is called to initialize an uninitialized PageContext + * so that it may be used by a JSP Implementation class to service an + * incoming request and response within it's _jspService() method. + * + *
+ * This method is typically called from JspFactory.getPageContext() in + * order to initialize state. + * + *
+ * This method is required to create an initial JspWriter, and associate + * the "out" name in page scope with this newly created object. + * + *
+ * This method should not be used by page or tag library authors. + * + * @param servlet The Servlet that is associated with this PageContext + * @param request The currently pending request for this Servlet + * @param response The currently pending response for this Servlet + * @param errorPageURL The value of the errorpage attribute from the page + * directive or null + * @param needsSession The value of the session attribute from the + * page directive + * @param bufferSize The value of the buffer attribute from the page + * directive + * @param autoFlush The value of the autoflush attribute from the page + * directive + * + * @throws IOException during creation of JspWriter + * @throws IllegalStateException if out not correctly initialized + * @throws IllegalArgumentException If one of the given parameters + * is invalid + */ + + abstract public void initialize(Servlet servlet, ServletRequest request, + ServletResponse response, String errorPageURL, boolean needsSession, + int bufferSize, boolean autoFlush) + throws IOException, IllegalStateException, IllegalArgumentException; + + /** + *
+ * This method shall "reset" the internal state of a PageContext, releasing + * all internal references, and preparing the PageContext for potential + * reuse by a later invocation of initialize(). This method is typically + * called from JspFactory.releasePageContext(). + * + *
+ * Subclasses shall envelope this method. + * + *
+ * This method should not be used by page or tag library authors. + * + */ + + abstract public void release(); + + /** + * The current value of the session object (an HttpSession). + * + * @return the HttpSession for this PageContext or null + */ + + abstract public HttpSession getSession(); + + /** + * The current value of the page object (In a Servlet environment, + * this is an instance of javax.servlet.Servlet). + * + * @return the Page implementation class instance associated + * with this PageContext + */ + + abstract public Object getPage(); + + + /** + * The current value of the request object (a ServletRequest). + * + * @return The ServletRequest for this PageContext + */ + + abstract public ServletRequest getRequest(); + + /** + * The current value of the response object (a ServletResponse). + * + * @return the ServletResponse for this PageContext + */ + + abstract public ServletResponse getResponse(); + + /** + * The current value of the exception object (an Exception). + * + * @return any exception passed to this as an errorpage + */ + + abstract public Exception getException(); + + /** + * The ServletConfig instance. + * + * @return the ServletConfig for this PageContext + */ + + abstract public ServletConfig getServletConfig(); + + /** + * The ServletContext instance. + * + * @return the ServletContext for this PageContext + */ + + abstract public ServletContext getServletContext(); + + /** + *
+ * This method is used to re-direct, or "forward" the current + * ServletRequest and ServletResponse to another active component in + * the application. + *
+ *
+ * If the relativeUrlPath begins with a "/" then the URL specified
+ * is calculated relative to the DOCROOT of the ServletContext
+ * for this JSP. If the path does not begin with a "/" then the URL
+ * specified is calculated relative to the URL of the request that was
+ * mapped to the calling JSP.
+ *
+ * It is only valid to call this method from a Thread
+ * executing within a _jspService(...)
method of a JSP.
+ *
+ * Once this method has been called successfully, it is illegal for the
+ * calling Thread
to attempt to modify the
+ * ServletResponse
object. Any such attempt to do so, shall result
+ * in undefined behavior. Typically, callers immediately return from
+ * _jspService(...)
after calling this method.
+ *
ServletResponse
is not
+ * in a state where a forward can be performed
+ * @throws ServletException if the page that was forwarded to throws
+ * a ServletException
+ * @throws IOException if an I/O error occurred while forwarding
+ */
+
+ abstract public void forward(String relativeUrlPath)
+ throws ServletException, IOException;
+
+ /**
+ * + * Causes the resource specified to be processed as part of the current + * ServletRequest and ServletResponse being processed by the calling Thread. + * The output of the target resources processing of the request is written + * directly to the ServletResponse output stream. + *
+ *+ * The current JspWriter "out" for this JSP is flushed as a side-effect + * of this call, prior to processing the include. + *
+ *
+ * If the relativeUrlPath begins with a "/" then the URL specified
+ * is calculated relative to the DOCROOT of the ServletContext
+ * for this JSP. If the path does not begin with a "/" then the URL
+ * specified is calculated relative to the URL of the request that was
+ * mapped to the calling JSP.
+ *
+ * It is only valid to call this method from a Thread
+ * executing within a _jspService(...)
method of a JSP.
+ *
+ * Causes the resource specified to be processed as part of the current + * ServletRequest and ServletResponse being processed by the calling Thread. + * The output of the target resources processing of the request is written + * directly to the current JspWriter returned by a call to getOut(). + *
+ *+ * If flush is true, The current JspWriter "out" for this JSP + * is flushed as a side-effect of this call, prior to processing + * the include. Otherwise, the JspWriter "out" is not flushed. + *
+ *
+ * If the relativeUrlPath begins with a "/" then the URL specified
+ * is calculated relative to the DOCROOT of the ServletContext
+ * for this JSP. If the path does not begin with a "/" then the URL
+ * specified is calculated relative to the URL of the request that was
+ * mapped to the calling JSP.
+ *
+ * It is only valid to call this method from a Thread
+ * executing within a _jspService(...)
method of a JSP.
+ *
+ * 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). + * + *
+ * If no error page is defined in the page, the exception should + * be rethrown so that the standard servlet error handling + * takes over. + * + *
+ * A JSP implementation class shall typically clean up any local state + * prior to invoking this and will return immediately thereafter. It is + * illegal to generate any output to the client, or to modify any + * ServletResponse state after invoking this call. + * + *
+ * This method is kept for backwards compatiblity reasons. Newly + * generated code should use PageContext.handlePageException(Throwable). + * + * @param e the exception to be handled + * + * @throws ServletException if an error occurs while invoking the error page + * @throws IOException if an I/O error occurred while invoking the error + * page + * @throws NullPointerException if the exception is null + * + * @see #handlePageException(Throwable) + */ + + abstract public void handlePageException(Exception e) + throws ServletException, IOException; + + /** + *
+ * 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). + * + *
+ * If no error page is defined in the page, the exception should + * be rethrown so that the standard servlet error handling + * takes over. + * + *
+ * 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. + * + *
+ * A JSP implementation class shall typically clean up any local state + * prior to invoking this and will return immediately thereafter. It is + * illegal to generate any output to the client, or to modify any + * ServletResponse state after invoking this call. + * + * @param t the throwable to be handled + * + * @throws ServletException if an error occurs while invoking the error page + * @throws IOException if an I/O error occurred while invoking the error + * page + * @throws NullPointerException if the exception is null + * + * @see #handlePageException(Exception) + */ + + abstract public void handlePageException(Throwable t) + throws ServletException, IOException; + + /** + * Return a new BodyContent object, save the current "out" JspWriter, + * and update the value of the "out" attribute in the page scope + * attribute namespace of the PageContext. + * + * @return the new BodyContent + */ + + public BodyContent pushBody() { + return null; // XXX to implement + } + + + /** + * Provides convenient access to error information. + * + * @return an ErrorData instance containing information about the + * error, as obtained from the request attributes, as per the + * Servlet specification. If this is not an error page (that is, + * if the isErrorPage attribute of the page directive is not set + * to "true"), the information is meaningless. + * + * @since JSP 2.0 + */ + public ErrorData getErrorData() { + return new ErrorData( + (Throwable)getRequest().getAttribute( "javax.servlet.error.exception" ), + ((Integer)getRequest().getAttribute( + "javax.servlet.error.status_code" )).intValue(), + (String)getRequest().getAttribute( "javax.servlet.error.request_uri" ), + (String)getRequest().getAttribute( "javax.servlet.error.servlet_name" ) ); + } + +}