I'm not really happy with having a default Locale in the o.a.c.Response.
I'd like it better if o.a.c.tc5.CoyoteResponse set the default Locale in
recycle.

----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 02, 2002 6:29 PM
Subject: cvs commit:
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5
Constants.java CoyoteResponse.java


> jfarcand    2002/12/02 18:29:14
>
>   Modified:    coyote/src/java/org/apache/coyote Response.java
>                coyote/src/java/org/apache/coyote/tomcat5 Constants.java
>                         CoyoteResponse.java
>   Log:
>   Servlet 2.4 section 5.4 will be modified:
>
>   A servlet should set the locale and the character encoding of a
>   response. The locale is set using the ServletResponse.setLocale method,
>   and communicated to the client using the Content-Language header. The
>   character encoding can be set explicitly using the ServletResponse
>   methods setCharacterEncoding and setContentType, or implicitly using the
>   ServletResponse.setLocale method, and is communicated to the client
>   using the charset parameter of the Content-Type header. Explicit
>   specifications take precedence over implicit specifications.
>   [...]
>   The character encoding should be specified before the getWriter method
>   of the ServletResponse interface is called; otherwise the default
>   ISO-8859-1 is used.
>
>   ---------------------
>   That means if setContentType is called, then setLocale should do reset
the content type. Same for setCharacterEncoding. If getWriter is called,
then ignore any call to setContentType, setCharacterEncoding and setLocale.
>
>   Please review.
>
>   Revision  Changes    Path
>   1.17      +10 -4
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/Response.java
>
>   Index: Response.java
>   ===================================================================
>   RCS file:
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/Respon
se.java,v
>   retrieving revision 1.16
>   retrieving revision 1.17
>   diff -u -r1.16 -r1.17
>   --- Response.java 9 Nov 2002 17:12:04 -0000 1.16
>   +++ Response.java 3 Dec 2002 02:29:14 -0000 1.17
>   @@ -91,8 +91,14 @@
>
>
>        // ----------------------------------------------------- Instance
Variables
>   +
>   +
>   +    /**
>   +     * Default locale
>   +     */
>   +    private static Locale DEFAULT_LOCALE = new Locale("en", "US");
>
>   -
>   +
>        /**
>         * Status code.
>         */
>   @@ -142,7 +148,7 @@
>        protected String contentLanguage = null;
>        protected String characterEncoding =
Constants.DEFAULT_CHARACTER_ENCODING;
>        protected int contentLength = -1;
>   -    private Locale locale = null;//Constants.DEFAULT_LOCALE;
>   +    private Locale locale = DEFAULT_LOCALE;
>
>        /**
>         * Holds request error exception.
>   @@ -311,7 +317,7 @@
>            // Reset the headers only if this is the main request,
>            // not for included
>            contentType = Constants.DEFAULT_CONTENT_TYPE;
>   -        locale = null;//Constants.DEFAULT_LOCALE;
>   +        locale = DEFAULT_LOCALE;
>            contentLanguage = null;
>            characterEncoding = Constants.DEFAULT_CHARACTER_ENCODING;
>            contentLength = -1;
>   @@ -525,7 +531,7 @@
>
>            contentType = Constants.DEFAULT_CONTENT_TYPE;
>            contentLanguage = null;
>   -        locale = null;//Constants.DEFAULT_LOCALE;
>   +        locale = DEFAULT_LOCALE;
>            characterEncoding = Constants.DEFAULT_CHARACTER_ENCODING;
>            contentLength = -1;
>            status = 200;
>
>
>
>   1.4       +1 -2
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/Constant
s.java
>
>   Index: Constants.java
>   ===================================================================
>   RCS file:
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat
5/Constants.java,v
>   retrieving revision 1.3
>   retrieving revision 1.4
>   diff -u -r1.3 -r1.4
>   --- Constants.java 10 Oct 2002 09:45:30 -0000 1.3
>   +++ Constants.java 3 Dec 2002 02:29:14 -0000 1.4
>   @@ -58,8 +58,6 @@
>     */
>    package org.apache.coyote.tomcat5;
>
>   -import java.util.Locale;
>   -
>    /**
>     * Constants.
>     *
>   @@ -92,5 +90,6 @@
>         */
>        protected static final boolean SECURITY =
>            (System.getSecurityManager() != null);
>   +
>
>    }
>
>
>
>   1.12      +50 -13
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteRe
sponse.java
>
>   Index: CoyoteResponse.java
>   ===================================================================
>   RCS file:
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat
5/CoyoteResponse.java,v
>   retrieving revision 1.11
>   retrieving revision 1.12
>   diff -u -r1.11 -r1.12
>   --- CoyoteResponse.java 11 Nov 2002 11:01:04 -0000 1.11
>   +++ CoyoteResponse.java 3 Dec 2002 02:29:14 -0000 1.12
>   @@ -261,7 +261,18 @@
>         */
>        protected boolean included = false;
>
>   +
>   +    /**
>   +     * The characterEncoding flag
>   +     */
>   +    private boolean isCharacterEncodingSet = false;
>   +
>   +    /**
>   +     * The contextType flag
>   +     */
>   +    private boolean isContentTypeSet = false;
>
>   +
>        /**
>         * The error flag.
>         */
>   @@ -313,6 +324,8 @@
>            appCommitted = false;
>            included = false;
>            error = false;
>   +        isContentTypeSet = false;
>   +        isCharacterEncodingSet = false;
>            cookies.clear();
>
>            if ((Constants.SECURITY) && (facade != null)) {
>   @@ -692,7 +705,10 @@
>            // Ignore any call from an included servlet
>            if (included)
>                return;
>   -
>   +
>   +        if (usingWriter)
>   +            return;
>   +
>            coyoteResponse.setContentLength(length);
>
>        }
>   @@ -713,7 +729,7 @@
>                return;
>
>            coyoteResponse.setContentType(type);
>   -
>   +        isContentTypeSet = true;
>        }
>
>
>   @@ -728,14 +744,22 @@
>
>            if (isCommitted())
>                return;
>   -
>   +
>   +        // Ignore any call from an included servlet
>            if (included)
>   -            return;     // Ignore any call from an included servlet
>   +            return;
>   +
>   +        // Ignore any call made after the getWriter has been invoked
>   +        // The default should be used
>   +        if (usingWriter)
>   +            return;
>
>            coyoteResponse.setCharacterEncoding(charset);
>   -
>   +        isCharacterEncodingSet= true;
>        }
>
>   +
>   +
>        /**
>         * Set the Locale that is appropriate for this response, including
>         * setting the appropriate character encoding.
>   @@ -750,14 +774,27 @@
>            // Ignore any call from an included servlet
>            if (included)
>                return;
>   -
>   +
>   +        // Ignore any call made after the getWriter has been invoked.
>   +        // The default should be used
>   +        if (usingWriter)
>   +            return;
>   +
>   +        if (isCharacterEncodingSet){
>   +            return;
>   +        }
>   +
>   +        if (isContentTypeSet){
>   +            return;
>   +        }
>   +
>            coyoteResponse.setLocale(locale);
>
>            CharsetMapper cm = context.getCharsetMapper();
>            String charset = cm.getCharset( locale );
>   -
>   -        if ( charset != null )
>   -            setCharacterEncoding( charset);
>   +        if ( charset != null ){
>   +            coyoteResponse.setCharacterEncoding(charset);
>   +        }
>
>        }
>
>
>
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to