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

Reply via email to