You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by un...@apache.org on 2004/01/05 15:54:27 UTC

cvs commit: cocoon-2.1/src/blocks/jsp/java/org/apache/cocoon/components/jsp JSPEngineImplNamedDispatcherInclude.java JSPEngineImpl.java

unico       2004/01/05 06:54:27

  Modified:    src/blocks/jsp/java/org/apache/cocoon/components/jsp
                        JSPEngineImplNamedDispatcherInclude.java
                        JSPEngineImpl.java
  Log:
  fix bug 25694, thanks to patch supplied by Johan Stuyts (johan@hippo.nl)
  
  Revision  Changes    Path
  1.6       +33 -14    cocoon-2.1/src/blocks/jsp/java/org/apache/cocoon/components/jsp/JSPEngineImplNamedDispatcherInclude.java
  
  Index: JSPEngineImplNamedDispatcherInclude.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/jsp/java/org/apache/cocoon/components/jsp/JSPEngineImplNamedDispatcherInclude.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JSPEngineImplNamedDispatcherInclude.java	15 Nov 2003 04:21:28 -0000	1.5
  +++ JSPEngineImplNamedDispatcherInclude.java	5 Jan 2004 14:54:27 -0000	1.6
  @@ -50,6 +50,26 @@
   */
   package org.apache.cocoon.components.jsp;
   
  +import java.io.BufferedReader;
  +import java.io.ByteArrayOutputStream;
  +import java.io.IOException;
  +import java.io.OutputStreamWriter;
  +import java.io.PrintWriter;
  +import java.io.UnsupportedEncodingException;
  +import java.security.Principal;
  +import java.util.Enumeration;
  +import java.util.Locale;
  +
  +import javax.servlet.RequestDispatcher;
  +import javax.servlet.ServletContext;
  +import javax.servlet.ServletException;
  +import javax.servlet.ServletInputStream;
  +import javax.servlet.ServletOutputStream;
  +import javax.servlet.http.Cookie;
  +import javax.servlet.http.HttpServletRequest;
  +import javax.servlet.http.HttpServletResponse;
  +import javax.servlet.http.HttpSession;
  +
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.parameters.ParameterException;
   import org.apache.avalon.framework.parameters.Parameterizable;
  @@ -57,16 +77,6 @@
   import org.apache.avalon.framework.thread.ThreadSafe;
   import org.xml.sax.SAXException;
   
  -import javax.servlet.*;
  -import javax.servlet.http.Cookie;
  -import javax.servlet.http.HttpServletRequest;
  -import javax.servlet.http.HttpServletResponse;
  -import javax.servlet.http.HttpSession;
  -import java.io.*;
  -import java.security.Principal;
  -import java.util.Enumeration;
  -import java.util.Locale;
  -
   /**
    * Allows JSP to be used as a generator.  Builds upon the JSP servlet
    * functionality - overrides the output method and returns the byte(s).
  @@ -215,6 +225,8 @@
       class MyServletResponse implements HttpServletResponse {
           HttpServletResponse response;
           MyServletOutputStream output;
  +        boolean hasOutputStream = false;
  +        boolean hasWriter = false;
   
           public MyServletResponse(HttpServletResponse response){
               this.response = response;
  @@ -225,6 +237,10 @@
           public String getCharacterEncoding() { return this.response.getCharacterEncoding();}
           public Locale getLocale(){ return this.response.getLocale();}
           public PrintWriter getWriter() {
  +            if (this.hasOutputStream) {
  +                throw new IllegalStateException("getOutputStream was already called.");
  +            }
  +            this.hasWriter = true;
               return this.output.getWriter();
           }
           public boolean isCommitted() { return false; }
  @@ -234,6 +250,10 @@
           public void setContentType(java.lang.String type) {}
           public void setLocale(java.util.Locale loc) {}
           public ServletOutputStream getOutputStream() {
  +            if (this.hasWriter) {
  +                throw new IllegalStateException("getWriter was already called.");
  +            }
  +            this.hasOutputStream = true;
               return this.output;
           }
           public void addCookie(Cookie cookie){ response.addCookie(cookie); }
  @@ -285,9 +305,8 @@
           public PrintWriter getWriter() {
               return this.writer;
           }
  -        public void write(int b) throws java.io.IOException  {
  -            // This method is not used but have to be implemented
  -            this.writer.write(b);
  +        public void write(int b) throws java.io.IOException {
  +            this.output.write(b);
           }
           public byte[] toByteArray() {
               this.writer.flush();
  
  
  
  1.8       +12 -3     cocoon-2.1/src/blocks/jsp/java/org/apache/cocoon/components/jsp/JSPEngineImpl.java
  
  Index: JSPEngineImpl.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/jsp/java/org/apache/cocoon/components/jsp/JSPEngineImpl.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JSPEngineImpl.java	12 Jul 2003 13:30:02 -0000	1.7
  +++ JSPEngineImpl.java	5 Jan 2004 14:54:27 -0000	1.8
  @@ -221,6 +221,8 @@
       class MyServletResponse implements HttpServletResponse {
           HttpServletResponse response = null;
           MyServletOutputStream output = null;
  +        boolean hasWriter = false;
  +        boolean hasOutputStream = false;
   
           public MyServletResponse(HttpServletResponse response){
               this.response = response;
  @@ -231,6 +233,10 @@
           public String getCharacterEncoding() { return this.response.getCharacterEncoding();}
           public Locale getLocale(){ return this.response.getLocale();}
           public PrintWriter getWriter() {
  +            if (this.hasOutputStream) {
  +                throw new IllegalStateException("getOutputStream was already called.");
  +            }
  +            this.hasWriter = true;
               return this.output.getWriter();
           }
           public boolean isCommitted() { return false; }
  @@ -240,6 +246,10 @@
           public void setContentType(java.lang.String type) {}
           public void setLocale(java.util.Locale loc) {}
           public ServletOutputStream getOutputStream() {
  +            if (this.hasWriter) {
  +                throw new IllegalStateException("getWriter was already called.");
  +            }
  +            this.hasOutputStream = true;
               return this.output;
           }
           public void addCookie(Cookie cookie){ response.addCookie(cookie); }
  @@ -294,8 +304,7 @@
               return this.writer;
           }
           public void write(int b) throws IOException  {
  -            // This method is not used but have to be implemented
  -            this.writer.write(b);
  +            this.output.write(b);
           }
           public byte[] toByteArray() {
               this.writer.flush();