Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2013-05-09 04:16:54 +0000
committerGreg Wilkins2013-05-09 04:16:54 +0000
commit4dcc9b39fcad2580b5f0ea79f52626e46bec0f9c (patch)
tree60a040e2520abb6821bc8cf1b5e04e0735d70dc8 /jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip
parent4a95621c8b2fa6cab7e76683d920300e1adfd1d0 (diff)
downloadorg.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.java27
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java35
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);
}

Back to the top