Author: markt Date: Tue Apr 28 11:18:32 2015 New Revision: 1676477 URL: http://svn.apache.org/r1676477 Log: Refactor compressableMimeType Convert comma separated string to string array once and re-use it rather than converting for every new Processor
Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java tomcat/trunk/webapps/docs/config/http.xml Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java?rev=1676477&r1=1676476&r2=1676477&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Tue Apr 28 11:18:32 2015 @@ -26,6 +26,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.StringTokenizer; import java.util.concurrent.ConcurrentHashMap; import javax.servlet.http.HttpUpgradeHandler; @@ -131,16 +132,29 @@ public abstract class AbstractHttp11Prot } - private String compressableMimeTypes = "text/html,text/xml,text/plain"; - public String getCompressableMimeType() { return compressableMimeTypes; } + private String compressableMimeType = "text/html,text/xml,text/plain"; + private String[] compressableMimeTypes = null; + public String getCompressableMimeType() { return compressableMimeType; } public void setCompressableMimeType(String valueS) { - compressableMimeTypes = valueS; + compressableMimeType = valueS; + compressableMimeTypes = null; } - public String getCompressableMimeTypes() { - return getCompressableMimeType(); - } - public void setCompressableMimeTypes(String valueS) { - setCompressableMimeType(valueS); + public String[] getCompressableMimeTypes() { + String[] result = compressableMimeTypes; + if (result != null) { + return result; + } + List<String> values = new ArrayList<>(); + StringTokenizer tokens = new StringTokenizer(compressableMimeType, ","); + while (tokens.hasMoreTokens()) { + String token = tokens.nextToken().trim(); + if (token.length() > 0) { + values.add(token); + } + } + result = values.toArray(new String[values.size()]); + compressableMimeTypes = result; + return result; } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1676477&r1=1676476&r2=1676477&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Tue Apr 28 11:18:32 2015 @@ -21,7 +21,6 @@ import java.io.InterruptedIOException; import java.nio.ByteBuffer; import java.util.Locale; import java.util.Set; -import java.util.StringTokenizer; import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Pattern; @@ -201,11 +200,11 @@ public class Http11Processor extends Abs */ protected Pattern noCompressionUserAgents = null; + /** - * List of MIMES which could be gzipped + * List of MIMES for which compression may be enabled. */ - protected String[] compressableMimeTypes = - { "text/html", "text/xml", "text/plain" }; + protected String[] compressableMimeTypes; /** @@ -320,18 +319,6 @@ public class Http11Processor extends Abs } } - /** - * Add a mime-type which will be compressible - * The mime-type String will be exactly matched - * in the response mime-type header . - * - * @param mimeType mime-type string - */ - public void addCompressableMimeType(String mimeType) { - compressableMimeTypes = - addStringArray(compressableMimeTypes, mimeType); - } - /** * Set compressible mime-type list (this method is best when used with @@ -344,24 +331,6 @@ public class Http11Processor extends Abs /** - * Set compressable mime-type list - * List contains users agents separated by ',' : - * - * ie: "text/html,text/xml,text/plain" - */ - public void setCompressableMimeTypes(String compressableMimeTypes) { - if (compressableMimeTypes != null) { - this.compressableMimeTypes = null; - StringTokenizer st = new StringTokenizer(compressableMimeTypes, ","); - - while (st.hasMoreTokens()) { - addCompressableMimeType(st.nextToken().trim()); - } - } - } - - - /** * Return compression level. */ public String getCompression() { @@ -377,29 +346,6 @@ public class Http11Processor extends Abs } - /** - * General use method - * - * @param sArray the StringArray - * @param value string - */ - private String[] addStringArray(String sArray[], String value) { - String[] result = null; - if (sArray == null) { - result = new String[1]; - result[0] = value; - } - else { - result = new String[sArray.length + 1]; - for (int i = 0; i < sArray.length; i++) { - result[i] = sArray[i]; - } - result[sArray.length] = value; - } - return result; - } - - /** * Checks if any entry in the string array starts with the specified value * Modified: tomcat/trunk/webapps/docs/config/http.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/http.xml?rev=1676477&r1=1676476&r2=1676477&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/config/http.xml (original) +++ tomcat/trunk/webapps/docs/config/http.xml Tue Apr 28 11:18:32 2015 @@ -329,7 +329,8 @@ <attribute name="compressableMimeType" required="false"> <p>The value is a comma separated list of MIME types for which HTTP compression may be used. - The default value is <code>text/html,text/xml,text/plain</code>.</p> + The default value is <code>text/html,text/xml,text/plain,text/css</code>. + </p> </attribute> <attribute name="compression" required="false"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org