patrickl 2002/09/24 16:01:22 Modified: jsr152/examples/WEB-INF/classes/compressionFilters CompressionServletResponseWrapper.java jsr154/examples/WEB-INF/classes/compressionFilters CompressionServletResponseWrapper.java Log: Port other content-types fix Revision Changes Path 1.2 +59 -5 jakarta-servletapi-5/jsr152/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java Index: CompressionServletResponseWrapper.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr152/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- CompressionServletResponseWrapper.java 27 Aug 2002 13:16:54 -0000 1.1 +++ CompressionServletResponseWrapper.java 24 Sep 2002 23:01:21 -0000 1.2 @@ -144,10 +144,27 @@ */ private int debug = 0; + /** + * Content type + */ + protected String contentType = null; + // --------------------------------------------------------- Public Methods /** + * Set content type + */ + public void setContentType(String contentType) { + if (debug > 1) { + System.out.println("setContentType to "+contentType); + } + this.contentType = contentType; + origResponse.setContentType(contentType); + } + + + /** * Set threshold number */ public void setCompressionThreshold(int threshold) { @@ -259,13 +276,50 @@ if (debug > 1) { System.out.println("stream is set to "+stream+" in getWriter"); } - writer = new PrintWriter(stream); + //String charset = getCharsetFromContentType(contentType); + String charEnc = origResponse.getCharacterEncoding(); + if (debug > 1) { + System.out.println("character encoding is " + charEnc); + } + // HttpServletResponse.getCharacterEncoding() shouldn't return null + // according the spec, so feel free to remove that "if" + if (charEnc != null) { + writer = new PrintWriter(new OutputStreamWriter(stream, charEnc)); + } else { + writer = new PrintWriter(stream); + } + return (writer); } public void setContentLength(int length) { + } + + + /** + * Returns character from content type. This method was taken from tomcat. + * @author rajo + */ + private static String getCharsetFromContentType(String type) { + + if (type == null) { + return null; + } + int semi = type.indexOf(";"); + if (semi == -1) { + return null; + } + String afterSemi = type.substring(semi + 1); + int charsetLocation = afterSemi.indexOf("charset="); + if(charsetLocation == -1) { + return null; + } else { + String afterCharset = afterSemi.substring(charsetLocation + 8); + String encoding = afterCharset.trim(); + return encoding; + } } } 1.2 +59 -5 jakarta-servletapi-5/jsr154/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java Index: CompressionServletResponseWrapper.java =================================================================== RCS file: /home/cvs/jakarta-servletapi-5/jsr154/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- CompressionServletResponseWrapper.java 27 Aug 2002 13:19:48 -0000 1.1 +++ CompressionServletResponseWrapper.java 24 Sep 2002 23:01:22 -0000 1.2 @@ -144,10 +144,27 @@ */ private int debug = 0; + /** + * Content type + */ + protected String contentType = null; + // --------------------------------------------------------- Public Methods /** + * Set content type + */ + public void setContentType(String contentType) { + if (debug > 1) { + System.out.println("setContentType to "+contentType); + } + this.contentType = contentType; + origResponse.setContentType(contentType); + } + + + /** * Set threshold number */ public void setCompressionThreshold(int threshold) { @@ -259,13 +276,50 @@ if (debug > 1) { System.out.println("stream is set to "+stream+" in getWriter"); } - writer = new PrintWriter(stream); + //String charset = getCharsetFromContentType(contentType); + String charEnc = origResponse.getCharacterEncoding(); + if (debug > 1) { + System.out.println("character encoding is " + charEnc); + } + // HttpServletResponse.getCharacterEncoding() shouldn't return null + // according the spec, so feel free to remove that "if" + if (charEnc != null) { + writer = new PrintWriter(new OutputStreamWriter(stream, charEnc)); + } else { + writer = new PrintWriter(stream); + } + return (writer); } public void setContentLength(int length) { + } + + + /** + * Returns character from content type. This method was taken from tomcat. + * @author rajo + */ + private static String getCharsetFromContentType(String type) { + + if (type == null) { + return null; + } + int semi = type.indexOf(";"); + if (semi == -1) { + return null; + } + String afterSemi = type.substring(semi + 1); + int charsetLocation = afterSemi.indexOf("charset="); + if(charsetLocation == -1) { + return null; + } else { + String afterCharset = afterSemi.substring(charsetLocation + 8); + String encoding = afterCharset.trim(); + return encoding; + } } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>