Author: markt Date: Sun Sep 23 11:24:02 2012 New Revision: 1389020 URL: http://svn.apache.org/viewvc?rev=1389020&view=rev Log: A toLowerCase() on the provided encoding was responsible for ~8% of all allocated objects with a simple ab load test.
Modified: tomcat/trunk/java/org/apache/catalina/connector/Connector.java tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java Modified: tomcat/trunk/java/org/apache/catalina/connector/Connector.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Connector.java?rev=1389020&r1=1389019&r2=1389020&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/Connector.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/Connector.java Sun Sep 23 11:24:02 2012 @@ -20,6 +20,7 @@ import java.net.InetAddress; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; +import java.util.Locale; import javax.management.ObjectName; @@ -225,6 +226,7 @@ public class Connector extends Lifecycle * URI encoding. */ protected String URIEncoding = null; + protected String URIEncodingLower = null; /** @@ -740,12 +742,19 @@ public class Connector extends Lifecycle } /** - * Return the character encoding to be used for the URI. + * Return the character encoding to be used for the URI using the original + * case. */ public String getURIEncoding() { + return this.URIEncoding; + } - return (this.URIEncoding); + /** + * Return the character encoding to be used for the URI using lower case. + */ + public String getURIEncodingLower() { + return this.URIEncodingLower; } @@ -755,10 +764,9 @@ public class Connector extends Lifecycle * @param URIEncoding The new URI character encoding. */ public void setURIEncoding(String URIEncoding) { - this.URIEncoding = URIEncoding; + this.URIEncodingLower = URIEncoding.toLowerCase(Locale.US); setProperty("uRIEncoding", URIEncoding); - } Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1389020&r1=1389019&r2=1389020&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Sun Sep 23 11:24:02 2012 @@ -837,13 +837,13 @@ public class CoyoteAdapter implements Ad // What encoding to use? Some platforms, eg z/os, use a default // encoding that doesn't give the expected result so be explicit - String enc = connector.getURIEncoding(); + String enc = connector.getURIEncodingLower(); if (enc == null) { - enc = "ISO-8859-1"; + enc = "iso-8859-1"; } Charset charset = null; try { - charset = B2CConverter.getCharset(enc); + charset = B2CConverter.getCharsetLower(enc); } catch (UnsupportedEncodingException e1) { log.warn(sm.getString("coyoteAdapter.parsePathParam", enc)); Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java?rev=1389020&r1=1389019&r2=1389020&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java Sun Sep 23 11:24:02 2012 @@ -81,12 +81,21 @@ public class B2CConverter { // Encoding names should all be ASCII String lowerCaseEnc = enc.toLowerCase(Locale.US); + return getCharsetLower(lowerCaseEnc); + } + + /** + * Only to be used when it is known that the encoding name is in lower case. + */ + public static Charset getCharsetLower(String lowerCaseEnc) + throws UnsupportedEncodingException{ + Charset charset = encodingToCharsetCache.get(lowerCaseEnc); if (charset == null) { // Pre-population of the cache means this must be invalid throw new UnsupportedEncodingException( - sm.getString("b2cConverter.unknownEncoding", enc)); + sm.getString("b2cConverter.unknownEncoding", lowerCaseEnc)); } return charset; } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org