You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2001/09/27 02:58:14 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector HttpResponseFacade.java ResponseFacade.java

remm        01/09/26 17:58:14

  Modified:    catalina/src/share/org/apache/catalina/connector
                        HttpResponseFacade.java ResponseFacade.java
  Log:
  - The response facade now have its own committed flag, so that the application
    layer can be committed (during a sendRedirect or sendError) while not committing
    the underlying response object.
  
  Revision  Changes    Path
  1.3       +70 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpResponseFacade.java
  
  Index: HttpResponseFacade.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpResponseFacade.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HttpResponseFacade.java	2001/07/22 20:25:06	1.2
  +++ HttpResponseFacade.java	2001/09/27 00:58:14	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpResponseFacade.java,v 1.2 2001/07/22 20:25:06 pier Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/07/22 20:25:06 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpResponseFacade.java,v 1.3 2001/09/27 00:58:14 remm Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/09/27 00:58:14 $
    *
    * ====================================================================
    *
  @@ -79,7 +79,7 @@
    *
    * @author Remy Maucherat
    * @author Craig R. McClanahan
  - * @version $Revision: 1.2 $ $Date: 2001/07/22 20:25:06 $
  + * @version $Revision: 1.3 $ $Date: 2001/09/27 00:58:14 $
    */
   
   public final class HttpResponseFacade
  @@ -104,7 +104,12 @@
   
   
       public void addCookie(Cookie cookie) {
  +
  +        if (isCommitted())
  +            return;
  +
           ((HttpServletResponse) response).addCookie(cookie);
  +
       }
   
   
  @@ -135,59 +140,120 @@
   
       public void sendError(int sc, String msg)
           throws IOException {
  +
  +        if (isCommitted())
  +            return;
  +
  +        committed = true;
  +
           ((HttpServletResponse) response).sendError(sc, msg);
  +
       }
   
   
       public void sendError(int sc)
           throws IOException {
  +
  +        if (isCommitted())
  +            return;
  +
  +        committed = true;
  +
           ((HttpServletResponse) response).sendError(sc);
  +
       }
   
   
       public void sendRedirect(String location)
           throws IOException {
  +
  +        if (isCommitted())
  +            return;
  +
  +        committed = true;
  +
           ((HttpServletResponse) response).sendRedirect(location);
  +
       }
   
   
       public void setDateHeader(String name, long date) {
  +
  +        if (isCommitted())
  +            return;
  +
           ((HttpServletResponse) response).setDateHeader(name, date);
  +
       }
   
   
       public void addDateHeader(String name, long date) {
  +
  +        if (isCommitted())
  +            return;
  +
           ((HttpServletResponse) response).addDateHeader(name, date);
  +
       }
   
   
       public void setHeader(String name, String value) {
  +
  +        if (isCommitted())
  +            return;
  +
           ((HttpServletResponse) response).setHeader(name, value);
  +
       }
   
   
       public void addHeader(String name, String value) {
  +
  +        if (isCommitted())
  +            return;
  +
           ((HttpServletResponse) response).addHeader(name, value);
  +
       }
   
   
       public void setIntHeader(String name, int value) {
  +
  +        if (isCommitted())
  +            return;
  +
           ((HttpServletResponse) response).setIntHeader(name, value);
  +
       }
   
   
       public void addIntHeader(String name, int value) {
  +
  +        if (isCommitted())
  +            return;
  +
           ((HttpServletResponse) response).addIntHeader(name, value);
  +
       }
   
   
       public void setStatus(int sc) {
  +
  +        if (isCommitted())
  +            return;
  +
           ((HttpServletResponse) response).setStatus(sc);
  +
       }
   
   
       public void setStatus(int sc, String sm) {
  +
  +        if (isCommitted())
  +            return;
  +
           ((HttpServletResponse) response).setStatus(sc, sm);
  +
       }
   
   
  
  
  
  1.3       +48 -5     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/ResponseFacade.java
  
  Index: ResponseFacade.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/ResponseFacade.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ResponseFacade.java	2001/07/22 20:25:06	1.2
  +++ ResponseFacade.java	2001/09/27 00:58:14	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/ResponseFacade.java,v 1.2 2001/07/22 20:25:06 pier Exp $
  - * $Revision: 1.2 $
  - * $Date: 2001/07/22 20:25:06 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/ResponseFacade.java,v 1.3 2001/09/27 00:58:14 remm Exp $
  + * $Revision: 1.3 $
  + * $Date: 2001/09/27 00:58:14 $
    *
    * ====================================================================
    *
  @@ -80,7 +80,7 @@
    * object.  All methods are delegated to the wrapped response.
    *
    * @author Remy Maucherat
  - * @version $Revision: 1.2 $ $Date: 2001/07/22 20:25:06 $
  + * @version $Revision: 1.3 $ $Date: 2001/09/27 00:58:14 $
    */
   
   public class ResponseFacade implements ServletResponse {
  @@ -96,6 +96,7 @@
        */
       public ResponseFacade(Response response) {
           this.response = (ServletResponse) response;
  +        committed = false;
       }
   
   
  @@ -108,6 +109,12 @@
       protected ServletResponse response = null;
   
   
  +    /**
  +     * Application level commit.
  +     */
  +    protected boolean committed = false;
  +
  +
       // ------------------------------------------------ ServletResponse Methods
   
   
  @@ -129,17 +136,33 @@
   
   
       public void setContentLength(int len) {
  +
  +        if (isCommitted())
  +            return;
  +
           response.setContentLength(len);
  +
       }
   
   
       public void setContentType(String type) {
  +
  +        if (isCommitted())
  +            return;
  +
           response.setContentType(type);
  +
       }
   
   
       public void setBufferSize(int size) {
  +
  +        if (isCommitted())
  +            throw new IllegalStateException
  +                (/*sm.getString("responseBase.reset.ise")*/);
  +
           response.setBufferSize(size);
  +
       }
   
   
  @@ -150,26 +173,46 @@
   
       public void flushBuffer()
           throws IOException {
  +
  +        committed = true;
  +
           response.flushBuffer();
  +
       }
   
   
       public void resetBuffer() {
  +
  +        if (isCommitted())
  +            throw new IllegalStateException
  +                (/*sm.getString("responseBase.reset.ise")*/);
  +
           response.resetBuffer();
  +
       }
   
   
       public boolean isCommitted() {
  -        return response.isCommitted();
  +        return (committed || response.isCommitted());
       }
   
   
       public void reset() {
  +
  +        if (isCommitted())
  +            throw new IllegalStateException
  +                (/*sm.getString("responseBase.reset.ise")*/);
  +
           response.reset();
  +
       }
   
   
       public void setLocale(Locale loc) {
  +
  +        if (isCommitted())
  +            return;
  +
           response.setLocale(loc);
       }