diff options
author | Greg Wilkins | 2013-05-09 04:16:54 +0000 |
---|---|---|
committer | Greg Wilkins | 2013-05-09 04:16:54 +0000 |
commit | 4dcc9b39fcad2580b5f0ea79f52626e46bec0f9c (patch) | |
tree | 60a040e2520abb6821bc8cf1b5e04e0735d70dc8 /jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip | |
parent | 4a95621c8b2fa6cab7e76683d920300e1adfd1d0 (diff) | |
download | org.eclipse.jetty.project-4dcc9b39fcad2580b5f0ea79f52626e46bec0f9c.tar.gz org.eclipse.jetty.project-4dcc9b39fcad2580b5f0ea79f52626e46bec0f9c.tar.xz org.eclipse.jetty.project-4dcc9b39fcad2580b5f0ea79f52626e46bec0f9c.zip |
407614 added excludedMimeTypes to gzipFilter
Diffstat (limited to 'jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip')
-rw-r--r-- | jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/CompressedResponseWrapper.java | 27 | ||||
-rw-r--r-- | jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java | 35 |
2 files changed, 38 insertions, 24 deletions
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/CompressedResponseWrapper.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/CompressedResponseWrapper.java index 2e1d426f56..fe0459ff86 100644 --- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/CompressedResponseWrapper.java +++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/CompressedResponseWrapper.java @@ -42,6 +42,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp public static final int DEFAULT_MIN_COMPRESS_SIZE = 256; private Set<String> _mimeTypes; + private boolean _excludeMimeTypes; private int _bufferSize=DEFAULT_BUFFER_SIZE; private int _minCompressSize=DEFAULT_MIN_COMPRESS_SIZE; protected HttpServletRequest _request; @@ -67,6 +68,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp } /* ------------------------------------------------------------ */ + @Override public int getBufferSize() { return _bufferSize; @@ -92,16 +94,15 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp /* ------------------------------------------------------------ */ /** - * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setMimeTypes(java.util.Set) */ - public void setMimeTypes(Set<String> mimeTypes) + public void setMimeTypes(Set<String> mimeTypes,boolean excludeMimeTypes) { + _excludeMimeTypes=excludeMimeTypes; _mimeTypes = mimeTypes; } /* ------------------------------------------------------------ */ /** - * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setBufferSize(int) */ @Override public void setBufferSize(int bufferSize) @@ -127,18 +128,17 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp { super.setContentType(ct); - if (ct!=null) + if (_compressedStream==null || _compressedStream.getOutputStream()==null) { - int colon=ct.indexOf(";"); - if (colon>0) - ct=ct.substring(0,colon); - } + if (ct!=null) + { + int colon=ct.indexOf(";"); + if (colon>0) + ct=ct.substring(0,colon); - if ((_compressedStream==null || _compressedStream.getOutputStream()==null) && - (_mimeTypes==null && ct!=null && ct.contains("gzip") || - _mimeTypes!=null && (ct==null||!_mimeTypes.contains(StringUtil.asciiToLowerCase(ct))))) - { - noCompression(); + if (_mimeTypes.contains(StringUtil.asciiToLowerCase(ct))==_excludeMimeTypes) + noCompression(); + } } } @@ -146,6 +146,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp /** * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setStatus(int, java.lang.String) */ + @SuppressWarnings("deprecation") @Override public void setStatus(int sc, String sm) { diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java index ec125b9429..eaa5acc89f 100644 --- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java +++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java @@ -62,8 +62,9 @@ public class GzipHandler extends HandlerWrapper { private static final Logger LOG = Log.getLogger(GzipHandler.class); - protected Set<String> _mimeTypes; - protected Set<String> _excluded; + final protected Set<String> _mimeTypes=new HashSet<>(); + protected boolean _excludeMimeTypes=false; + protected Set<String> _excludedUA; protected int _bufferSize = 8192; protected int _minGzipSize = 256; protected String _vary = "Accept-Encoding, User-Agent"; @@ -96,7 +97,9 @@ public class GzipHandler extends HandlerWrapper */ public void setMimeTypes(Set<String> mimeTypes) { - _mimeTypes = mimeTypes; + _excludeMimeTypes=false; + _mimeTypes.clear(); + _mimeTypes.addAll(mimeTypes); } /* ------------------------------------------------------------ */ @@ -110,7 +113,8 @@ public class GzipHandler extends HandlerWrapper { if (mimeTypes != null) { - _mimeTypes = new HashSet<String>(); + _excludeMimeTypes=false; + _mimeTypes.clear(); StringTokenizer tok = new StringTokenizer(mimeTypes,",",false); while (tok.hasMoreTokens()) { @@ -121,13 +125,22 @@ public class GzipHandler extends HandlerWrapper /* ------------------------------------------------------------ */ /** + * Set the mime types. + */ + public void setExcludeMimeTypes(boolean exclude) + { + _excludeMimeTypes=exclude; + } + + /* ------------------------------------------------------------ */ + /** * Get the excluded user agents. * * @return excluded user agents */ public Set<String> getExcluded() { - return _excluded; + return _excludedUA; } /* ------------------------------------------------------------ */ @@ -139,7 +152,7 @@ public class GzipHandler extends HandlerWrapper */ public void setExcluded(Set<String> excluded) { - _excluded = excluded; + _excludedUA = excluded; } /* ------------------------------------------------------------ */ @@ -153,10 +166,10 @@ public class GzipHandler extends HandlerWrapper { if (excluded != null) { - _excluded = new HashSet<String>(); + _excludedUA = new HashSet<String>(); StringTokenizer tok = new StringTokenizer(excluded,",",false); while (tok.hasMoreTokens()) - _excluded.add(tok.nextToken()); + _excludedUA.add(tok.nextToken()); } } @@ -244,10 +257,10 @@ public class GzipHandler extends HandlerWrapper if (ae != null && ae.indexOf("gzip")>=0 && !response.containsHeader("Content-Encoding") && !HttpMethod.HEAD.is(request.getMethod())) { - if (_excluded!=null) + if (_excludedUA!=null) { String ua = request.getHeader("User-Agent"); - if (_excluded.contains(ua)) + if (_excludedUA.contains(ua)) { _handler.handle(target,baseRequest, request, response); return; @@ -326,7 +339,7 @@ public class GzipHandler extends HandlerWrapper return new CompressedResponseWrapper(request,response) { { - super.setMimeTypes(GzipHandler.this._mimeTypes); + super.setMimeTypes(GzipHandler.this._mimeTypes,GzipHandler.this._excludeMimeTypes); super.setBufferSize(GzipHandler.this._bufferSize); super.setMinCompressSize(GzipHandler.this._minGzipSize); } |