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();