remm 02/03/27 19:41:53 Modified: coyote/src/java/org/apache/coyote/tomcat4 CoyoteRequest.java Log: - Apply patch submitted by Ryan Lubke <[EMAIL PROTECTED]>: When dealing with preferred locales from a client (Accept-Language), the CoyoteRequest class (org.apache.coyote.tomcat4) doesn't correctly handle locales with variants (i.e. en-IE-EURO). RFC 2616 states that the following for language-range of Accept-Language: language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" ) Revision Changes Path 1.14 +15 -5 jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteRequest.java Index: CoyoteRequest.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteRequest.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- CoyoteRequest.java 24 Mar 2002 18:48:48 -0000 1.13 +++ CoyoteRequest.java 28 Mar 2002 03:41:53 -0000 1.14 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteRequest.java,v 1.13 2002/03/24 18:48:48 remm Exp $ - * $Revision: 1.13 $ - * $Date: 2002/03/24 18:48:48 $ + * $Header: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteRequest.java,v 1.14 2002/03/28 03:41:53 remm Exp $ + * $Revision: 1.14 $ + * $Date: 2002/03/28 03:41:53 $ * * ==================================================================== * @@ -122,7 +122,7 @@ * * @author Remy Maucherat * @author Craig R. McClanahan - * @version $Revision: 1.13 $ $Date: 2002/03/24 18:48:48 $ + * @version $Revision: 1.14 $ $Date: 2002/03/28 03:41:53 $ */ public class CoyoteRequest @@ -1999,17 +1999,27 @@ // Extract the language and country for this entry String language = null; String country = null; + String variant = null; int dash = entry.indexOf('-'); if (dash < 0) { language = entry; country = ""; + variant = ""; } else { language = entry.substring(0, dash); country = entry.substring(dash + 1); + int vDash = country.indexOf('-'); + if (vDash > 0) { + String cTemp = country.substring(0, vDash); + variant = country.substring(vDash + 1); + country = cTemp; + } else { + variant = ""; + } } // Add a new Locale to the list of Locales for this quality level - Locale locale = new Locale(language, country); + Locale locale = new Locale(language, country, variant); Double key = new Double(-quality); // Reverse the order ArrayList values = (ArrayList) locales.get(key); if (values == null) {
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>