Author: markt Date: Sat Feb 28 19:36:19 2015 New Revision: 1662993 URL: http://svn.apache.org/r1662993 Log: (empty)
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/Request.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/Request.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/Request.java?rev=1662993&r1=1662992&r2=1662993&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/Request.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/connector/Request.java Sat Feb 28 19:36:19 2015 @@ -85,6 +85,7 @@ import org.apache.tomcat.util.buf.B2CCon import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.buf.UDecoder; +import org.apache.tomcat.util.compat.JreCompat; import org.apache.tomcat.util.http.Cookies; import org.apache.tomcat.util.http.FastHttpDateFormat; import org.apache.tomcat.util.http.Parameters; @@ -3346,6 +3347,8 @@ public class Request parser.setString(value); } + JreCompat jreCompat = JreCompat.getInstance(); + // Process each comma-delimited language specification int length = parser.getLength(); while (true) { @@ -3386,33 +3389,11 @@ public class Request continue; // FIXME - "*" entries are not handled } - // 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 = ""; - } - } - if (!isAlpha(language) || !isAlpha(country) || !isAlpha(variant)) { + Locale locale = jreCompat.forLanguageTag(entry); + if (locale == null) { continue; } - // Add a new Locale to the list of Locales for this quality level - Locale locale = new Locale(language, country, variant); Double key = new Double(-quality); // Reverse the order ArrayList<Locale> values = locales.get(key); if (values == null) { @@ -3424,17 +3405,6 @@ public class Request } - protected static final boolean isAlpha(String value) { - for (int i = 0; i < value.length(); i++) { - char c = value.charAt(i); - if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) { - return false; - } - } - return true; - } - - // ----------------------------------------------------- Special attributes handling private static interface SpecialAttributeAdapter { Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1662993&r1=1662992&r2=1662993&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Sat Feb 28 19:36:19 2015 @@ -71,6 +71,10 @@ cipher suite ordering. This feature requires Java 8. Based upon patches provided by Ognjen Blagojevic. (schultz) </fix> + <fix> + <bug>56848</bug>: Use <code>Locale.forLanguageTag</code> to process + Locale headers when running on a Java 7 or later JRE. (markt) + </fix> <add> <bug>57021</bug>: Improve logging in AprLifecycleListener and jni.Library when Tomcat-Native DLL fails to load. Based on a patch by --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org