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]>

Reply via email to