Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2011-11-30 04:51:12 +0000
committerGreg Wilkins2011-11-30 04:51:12 +0000
commit9e72457941e98eb2ee1adf64f2bc53160b01e34d (patch)
tree04c0cf6fe7d3f5e7e48a313a2321db4ef91caee3 /jetty-servlets
parentdf12605f0e3e549c07c96968eedfd382fd6f274e (diff)
parent24ccaec3da96244861cd1cc8325891b702b69a95 (diff)
downloadorg.eclipse.jetty.project-9e72457941e98eb2ee1adf64f2bc53160b01e34d.tar.gz
org.eclipse.jetty.project-9e72457941e98eb2ee1adf64f2bc53160b01e34d.tar.xz
org.eclipse.jetty.project-9e72457941e98eb2ee1adf64f2bc53160b01e34d.zip
Merge branch 'release-8'
Diffstat (limited to 'jetty-servlets')
-rw-r--r--jetty-servlets/pom.xml12
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java21
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java294
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java11
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AsyncProxyServer.java6
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CloseableDoSFilterTest.java1
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CrossOriginFilterTest.java25
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterTest.java3
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/IncludableGzipFilterTest.java2
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java27
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PutFilterTest.java4
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java8
-rw-r--r--jetty-servlets/src/test/java/org/eclipse/jetty/servlets/gzip/GzipTester.java4
13 files changed, 117 insertions, 301 deletions
diff --git a/jetty-servlets/pom.xml b/jetty-servlets/pom.xml
index 9e112abff9..3be25d852e 100644
--- a/jetty-servlets/pom.xml
+++ b/jetty-servlets/pom.xml
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>7.6.0-SNAPSHOT</version>
+ <version>8.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-servlets</artifactId>
@@ -79,11 +79,11 @@
<artifactId>jetty-util</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <scope>provided</scope>
- </dependency>
+ <dependency>
+ <groupId>${servlet.spec.groupId}</groupId>
+ <artifactId>${servlet.spec.artifactId}</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>test-jetty-servlet</artifactId>
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java
index 69bd7d8926..0f75219821 100644
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java
@@ -335,17 +335,18 @@ public class DoSFilter implements Filter
// Reject this request
if (_insertHeaders)
((HttpServletResponse)response).addHeader("DoSFilter","unavailable");
+
((HttpServletResponse)response).sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
return;
}
case 0:
{
- // fall through to throttle code
+ // fall through to throttle code
request.setAttribute(__TRACKER,tracker);
break;
}
default:
- {
+ {
// insert a delay before throttling the request
if (_insertHeaders)
((HttpServletResponse)response).addHeader("DoSFilter","delayed");
@@ -353,12 +354,22 @@ public class DoSFilter implements Filter
request.setAttribute(__TRACKER,tracker);
if (_delayMs > 0)
continuation.setTimeout(_delayMs);
+ continuation.addContinuationListener(new ContinuationListener()
+ {
+
+ public void onComplete(Continuation continuation)
+ {
+ }
+
+ public void onTimeout(Continuation continuation)
+ {
+ }
+ });
continuation.suspend();
return;
}
}
}
-
// Throttle the request
boolean accepted = false;
try
@@ -412,6 +423,10 @@ public class DoSFilter implements Filter
_context.log("DoS",e);
((HttpServletResponse)response).sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
}
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
finally
{
if (accepted)
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java
index 049f37072b..25c0e4635a 100644
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java
@@ -14,17 +14,15 @@ package org.eclipse.jetty.servlets;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
-import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
@@ -34,16 +32,20 @@ import java.util.Map;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
+import javax.servlet.MultipartConfigElement;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.Part;
-import org.eclipse.jetty.util.B64Code;
+
+import org.eclipse.jetty.util.IO;
import org.eclipse.jetty.util.LazyList;
import org.eclipse.jetty.util.MultiMap;
+import org.eclipse.jetty.util.MultiPartInputStream;
import org.eclipse.jetty.util.QuotedStringTokenizer;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.TypeUtil;
@@ -60,6 +62,10 @@ import org.eclipse.jetty.util.TypeUtil;
* If the init parameter "delete" is set to "true", any files created will be deleted when the
* current request returns.
*
+ * Use init parameter "maxFileSize" to set the max size file that can be uploaded.
+ *
+ * Use init parameter "maxRequestSize" to limit the size of the multipart request.
+ *
*/
public class MultiPartFilter implements Filter
{
@@ -69,6 +75,8 @@ public class MultiPartFilter implements Filter
private boolean _deleteFiles;
private ServletContext _context;
private int _fileOutputBuffer = 0;
+ private long _maxFileSize = -1L;
+ private long _maxRequestSize = -1L;
/* ------------------------------------------------------------------------------- */
/**
@@ -81,6 +89,13 @@ public class MultiPartFilter implements Filter
String fileOutputBuffer = filterConfig.getInitParameter("fileOutputBuffer");
if(fileOutputBuffer!=null)
_fileOutputBuffer = Integer.parseInt(fileOutputBuffer);
+ String maxFileSize = filterConfig.getInitParameter("maxFileSize");
+ if (maxFileSize != null)
+ _maxFileSize = Long.parseLong(maxFileSize.trim());
+ String maxRequestSize = filterConfig.getInitParameter("maxRequestSize");
+ if (maxRequestSize != null)
+ _maxRequestSize = Long.parseLong(maxRequestSize.trim());
+
_context=filterConfig.getServletContext();
}
@@ -102,15 +117,11 @@ public class MultiPartFilter implements Filter
InputStream in = new BufferedInputStream(request.getInputStream());
String content_type=srequest.getContentType();
- // TODO - handle encodings
- String boundary="--"+QuotedStringTokenizer.unquote(value(content_type.substring(content_type.indexOf("boundary="))).trim());
-
- byte[] byteBoundary=(boundary+"--").getBytes(StringUtil.__ISO_8859_1);
-
- MultiMap params = new MultiMap();
- for (Iterator i = request.getParameterMap().entrySet().iterator();i.hasNext();)
+ //Get current parameters so we can merge into them
+ MultiMap<String> params = new MultiMap<String>();
+ for (Iterator<Map.Entry<String,String[]>> i = request.getParameterMap().entrySet().iterator();i.hasNext();)
{
- Map.Entry entry=(Map.Entry)i.next();
+ Map.Entry<String,String[]> entry=i.next();
Object value=entry.getValue();
if (value instanceof String[])
params.addValues(entry.getKey(),(String[])value);
@@ -118,231 +129,45 @@ public class MultiPartFilter implements Filter
params.add(entry.getKey(),value);
}
+ MultipartConfigElement config = new MultipartConfigElement(tempdir.getCanonicalPath(), _maxFileSize, _maxRequestSize, _fileOutputBuffer);
+ MultiPartInputStream mpis = new MultiPartInputStream(in, content_type, config, tempdir);
+
+
try
{
- // Get first boundary
- byte[] bytes=TypeUtil.readLine(in);
- String line=bytes==null?null:new String(bytes,"UTF-8");
- if(line==null || !line.equals(boundary))
+ Collection<Part> parts = mpis.getParts();
+ if (parts != null)
{
- throw new IOException("Missing initial multi part boundary");
- }
-
- // Read each part
- boolean lastPart=false;
- String content_disposition=null;
- String content_transfer_encoding=null;
-
-
- outer:while(!lastPart)
- {
- String type_content=null;
-
- while(true)
+ for (Part p:parts)
{
- // read a line
- bytes=TypeUtil.readLine(in);
- if (bytes==null)
- break outer;
-
- // If blank line, end of part headers
- if(bytes.length==0)
- break;
- line=new String(bytes,"UTF-8");
-
- // place part header key and value in map
- int c=line.indexOf(':',0);
- if(c>0)
+ MultiPartInputStream.MultiPart mp = (MultiPartInputStream.MultiPart)p;
+ if (mp.getFile() != null)
{
- String key=line.substring(0,c).trim().toLowerCase();
- String value=line.substring(c+1,line.length()).trim();
- if(key.equals("content-disposition"))
- content_disposition=value;
- else if(key.equals("content-transfer-encoding"))
- content_transfer_encoding=value;
- else if (key.equals("content-type"))
- type_content = value;
- }
- }
- // Extract content-disposition
- boolean form_data=false;
- if(content_disposition==null)
- {
- throw new IOException("Missing content-disposition");
- }
-
- QuotedStringTokenizer tok=new QuotedStringTokenizer(content_disposition,";");
- String name=null;
- String filename=null;
- while(tok.hasMoreTokens())
- {
- String t=tok.nextToken().trim();
- String tl=t.toLowerCase();
- if(t.startsWith("form-data"))
- form_data=true;
- else if(tl.startsWith("name="))
- name=value(t);
- else if(tl.startsWith("filename="))
- filename=value(t);
- }
-
- // Check disposition
- if(!form_data)
- {
- continue;
- }
- //It is valid for reset and submit buttons to have an empty name.
- //If no name is supplied, the browser skips sending the info for that field.
- //However, if you supply the empty string as the name, the browser sends the
- //field, with name as the empty string. So, only continue this loop if we
- //have not yet seen a name field.
- if(name==null)
- {
- continue;
- }
-
- OutputStream out=null;
- File file=null;
- try
- {
- if (filename!=null && filename.length()>0)
- {
- file = File.createTempFile("MultiPart", "", tempdir);
- out = new FileOutputStream(file);
- if(_fileOutputBuffer>0)
- out = new BufferedOutputStream(out, _fileOutputBuffer);
- request.setAttribute(name,file);
- params.add(name, filename);
- if (type_content != null)
- params.add(name+CONTENT_TYPE_SUFFIX, type_content);
-
+ request.setAttribute(mp.getName(),mp.getFile());
+ if (mp.getContentDispositionFilename() != null)
+ params.add(mp.getName(), mp.getContentDispositionFilename());
if (_deleteFiles)
{
- file.deleteOnExit();
+ mp.getFile().deleteOnExit();
+
ArrayList files = (ArrayList)request.getAttribute(FILES);
if (files==null)
{
files=new ArrayList();
request.setAttribute(FILES,files);
}
- files.add(file);
- }
+ files.add(mp.getFile());
+ }
}
else
{
- out=new ByteArrayOutputStream();
- }
-
-
- if ("base64".equalsIgnoreCase(content_transfer_encoding))
- {
- in = new Base64InputStream(in);
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ IO.copy(p.getInputStream(), bytes);
+ params.add(p.getName(), bytes.toByteArray());
}
- else if ("quoted-printable".equalsIgnoreCase(content_transfer_encoding))
- {
- in = new FilterInputStream(in)
- {
- @Override
- public int read() throws IOException
- {
- int c = in.read();
- if (c >= 0 && c == '=')
- {
- int hi = in.read();
- int lo = in.read();
- if (hi < 0 || lo < 0)
- {
- throw new IOException("Unexpected end to quoted-printable byte");
- }
- char[] chars = new char[] { (char)hi, (char)lo };
- c = Integer.parseInt(new String(chars),16);
- }
- return c;
- }
- };
- }
-
- int state=-2;
- int c;
- boolean cr=false;
- boolean lf=false;
-
- // loop for all lines`
- while(true)
- {
- int b=0;
- while((c=(state!=-2)?state:in.read())!=-1)
- {
- state=-2;
- // look for CR and/or LF
- if(c==13||c==10)
- {
- if(c==13)
- state=in.read();
- break;
- }
- // look for boundary
- if(b>=0&&b<byteBoundary.length&&c==byteBoundary[b])
- b++;
- else
- {
- // this is not a boundary
- if(cr)
- out.write(13);
- if(lf)
- out.write(10);
- cr=lf=false;
- if(b>0)
- out.write(byteBoundary,0,b);
- b=-1;
- out.write(c);
- }
- }
- // check partial boundary
- if((b>0&&b<byteBoundary.length-2)||(b==byteBoundary.length-1))
- {
- if(cr)
- out.write(13);
- if(lf)
- out.write(10);
- cr=lf=false;
- out.write(byteBoundary,0,b);
- b=-1;
- }
- // boundary match
- if(b>0||c==-1)
- {
- if(b==byteBoundary.length)
- lastPart=true;
- if(state==10)
- state=-2;
- break;
- }
- // handle CR LF
- if(cr)
- out.write(13);
- if(lf)
- out.write(10);
- cr=(c==13);
- lf=(c==10||state==10);
- if(state==10)
- state=-2;
- }
- }
- finally
- {
- out.close();
- }
-
- if (file==null)
- {
- bytes = ((ByteArrayOutputStream)out).toByteArray();
- params.add(name,bytes);
- if (type_content != null)
- params.add(name+CONTENT_TYPE_SUFFIX, type_content);
}
}
-
+
// handle request
chain.doFilter(new Wrapper(srequest,params),response);
}
@@ -504,37 +329,4 @@ public class MultiPartFilter implements Filter
_encoding=enc;
}
}
-
- private static class Base64InputStream extends InputStream
- {
- BufferedReader _in;
- String _line;
- byte[] _buffer;
- int _pos;
-
- public Base64InputStream (InputStream in)
- {
- _in = new BufferedReader(new InputStreamReader(in));
- }
-
- @Override
- public int read() throws IOException
- {
- if (_buffer==null || _pos>= _buffer.length)
- {
- _line = _in.readLine();
- if (_line==null)
- return -1;
- if (_line.startsWith("--"))
- _buffer=(_line+"\r\n").getBytes();
- else if (_line.length()==0)
- _buffer="\r\n".getBytes();
- else
- _buffer=B64Code.decode(_line);
-
- _pos=0;
- }
- return _buffer[_pos++];
- }
- }
}
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java
index 3774a28bf8..307438acca 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java
@@ -5,7 +5,8 @@ import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.net.Socket;
-
+import java.util.EnumSet;
+import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
@@ -44,7 +45,7 @@ public abstract class AbstractDoSFilterTest
_tester.setContextPath("/ctx");
_tester.addServlet(TestServlet.class, "/*");
- _dosFilter = _tester.addFilter(filter, "/dos/*", 0);
+ _dosFilter = _tester.addFilter(filter, "/dos/*", EnumSet.allOf(DispatcherType.class));
_dosFilter.setInitParameter("maxRequestsPerSec", "4");
_dosFilter.setInitParameter("delayMs", "200");
_dosFilter.setInitParameter("throttledRequests", "1");
@@ -53,7 +54,7 @@ public abstract class AbstractDoSFilterTest
_dosFilter.setInitParameter("remotePort", "false");
_dosFilter.setInitParameter("insertHeaders", "true");
- _timeoutFilter = _tester.addFilter(filter, "/timeout/*", 0);
+ _timeoutFilter = _tester.addFilter(filter, "/timeout/*", EnumSet.allOf(DispatcherType.class));
_timeoutFilter.setInitParameter("maxRequestsPerSec", "4");
_timeoutFilter.setInitParameter("delayMs", "200");
_timeoutFilter.setInitParameter("throttledRequests", "1");
@@ -190,7 +191,7 @@ public abstract class AbstractDoSFilterTest
String request="GET /ctx/dos/test HTTP/1.1\r\nHost: localhost\r\n\r\n";
String last="GET /ctx/dos/test HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n";
String responses = doRequests(request+request+request+request,1,0,0,last);
- //System.out.println("responses are " + responses);
+ System.out.println("responses are " + responses);
assertEquals("200 OK responses", 5,count(responses,"HTTP/1.1 200 OK"));
assertEquals("delayed responses", 1,count(responses,"DoSFilter: delayed"));
assertEquals("throttled responses", 1,count(responses,"DoSFilter: throttled"));
@@ -226,6 +227,8 @@ public abstract class AbstractDoSFilterTest
String last="GET /ctx/dos/test HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n";
String responses = doRequests(request+request+request+request,1,0,0,last);
+ System.err.println("RESPONSES: \n"+responses);
+
assertEquals(4,count(responses,"HTTP/1.1 200 OK"));
assertEquals(1,count(responses,"HTTP/1.1 503"));
assertEquals(1,count(responses,"DoSFilter: delayed"));
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AsyncProxyServer.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AsyncProxyServer.java
index 252783d68e..c30133c1ab 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AsyncProxyServer.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AsyncProxyServer.java
@@ -13,6 +13,10 @@
package org.eclipse.jetty.servlets;
+import java.util.EnumSet;
+
+import javax.servlet.DispatcherType;
+
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
@@ -32,7 +36,7 @@ public class AsyncProxyServer
ServletHandler handler=new ServletHandler();
server.setHandler(handler);
- //FilterHolder gzip = handler.addFilterWithMapping("org.eclipse.jetty.servlets.GzipFilter","/*",0);
+ //FilterHolder gzip = handler.addFilterWithMapping("org.eclipse.jetty.servlet.GzipFilter","/*",EnumSet.of(DispatcherType.REQUEST,DispatcherType.ASYNC));
//gzip.setAsyncSupported(true);
//gzip.setInitParameter("minGzipSize","256");
ServletHolder proxy = handler.addServletWithMapping("org.eclipse.jetty.servlets.ProxyServlet","/");
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CloseableDoSFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CloseableDoSFilterTest.java
index 3039a4d787..fa48e85af4 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CloseableDoSFilterTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CloseableDoSFilterTest.java
@@ -13,6 +13,7 @@
package org.eclipse.jetty.servlets;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CrossOriginFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CrossOriginFilterTest.java
index e59051ffbf..bd9bfb576b 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CrossOriginFilterTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CrossOriginFilterTest.java
@@ -1,8 +1,11 @@
package org.eclipse.jetty.servlets;
import java.io.IOException;
+import java.util.EnumSet;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+
+import javax.servlet.DispatcherType;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@@ -38,7 +41,7 @@ public class CrossOriginFilterTest
@Test
public void testRequestWithNoOriginArrivesToApplication() throws Exception
{
- tester.getContext().addFilter(CrossOriginFilter.class, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(CrossOriginFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
final CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
@@ -58,7 +61,7 @@ public class CrossOriginFilterTest
FilterHolder filterHolder = new FilterHolder(new CrossOriginFilter());
String origin = "http://localhost";
filterHolder.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, origin);
- tester.getContext().addFilter(filterHolder, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
@@ -82,7 +85,7 @@ public class CrossOriginFilterTest
FilterHolder filterHolder = new FilterHolder(new CrossOriginFilter());
String origin = "http://localhost";
filterHolder.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, origin);
- tester.getContext().addFilter(filterHolder, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
@@ -106,7 +109,7 @@ public class CrossOriginFilterTest
String origin = "http://localhost";
String otherOrigin = origin.replace("localhost", "127.0.0.1");
filterHolder.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, origin + "," + otherOrigin);
- tester.getContext().addFilter(filterHolder, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
@@ -129,7 +132,7 @@ public class CrossOriginFilterTest
{
FilterHolder filterHolder = new FilterHolder(new CrossOriginFilter());
filterHolder.setInitParameter(CrossOriginFilter.ALLOW_CREDENTIALS_PARAM, "false");
- tester.getContext().addFilter(filterHolder, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
@@ -154,7 +157,7 @@ public class CrossOriginFilterTest
// will contain the CORS response headers.
FilterHolder filterHolder = new FilterHolder(new CrossOriginFilter());
- tester.getContext().addFilter(filterHolder, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
@@ -179,7 +182,7 @@ public class CrossOriginFilterTest
// will contain the CORS response headers.
FilterHolder filterHolder = new FilterHolder(new CrossOriginFilter());
- tester.getContext().addFilter(filterHolder, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
@@ -201,7 +204,7 @@ public class CrossOriginFilterTest
{
FilterHolder filterHolder = new FilterHolder(new CrossOriginFilter());
filterHolder.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "PUT");
- tester.getContext().addFilter(filterHolder, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
@@ -240,7 +243,7 @@ public class CrossOriginFilterTest
FilterHolder filterHolder = new FilterHolder(new CrossOriginFilter());
filterHolder.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,HEAD,POST,PUT,DELETE");
filterHolder.setInitParameter(CrossOriginFilter.ALLOWED_HEADERS_PARAM, "X-Requested-With,Content-Type,Accept,Origin,X-Custom");
- tester.getContext().addFilter(filterHolder, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(filterHolder, "/*",EnumSet.of(DispatcherType.REQUEST));
CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
@@ -281,7 +284,7 @@ public class CrossOriginFilterTest
{
FilterHolder filterHolder = new FilterHolder(new CrossOriginFilter());
filterHolder.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,HEAD,POST,PUT,DELETE");
- tester.getContext().addFilter(filterHolder, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
@@ -306,7 +309,7 @@ public class CrossOriginFilterTest
public void testCrossOriginFilterDisabledForWebSocketUpgrade() throws Exception
{
FilterHolder filterHolder = new FilterHolder(new CrossOriginFilter());
- tester.getContext().addFilter(filterHolder, "/*", FilterMapping.DEFAULT);
+ tester.getContext().addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST));
CountDownLatch latch = new CountDownLatch(1);
tester.getContext().addServlet(new ServletHolder(new ResourceServlet(latch)), "/*");
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterTest.java
index a68c11f756..a79ed0e85e 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterTest.java
@@ -35,7 +35,8 @@ public class DoSFilterTest extends AbstractDoSFilterTest
{
public void closeConnection(HttpServletRequest request, HttpServletResponse response, Thread thread)
{
- try {
+ try
+ {
response.getWriter().append("DoSFilter: timeout");
super.closeConnection(request,response,thread);
}
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/IncludableGzipFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/IncludableGzipFilterTest.java
index 63b0dd9d26..3ad66eab23 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/IncludableGzipFilterTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/IncludableGzipFilterTest.java
@@ -73,7 +73,7 @@ public class IncludableGzipFilterTest
tester.setContextPath("/context");
tester.setResourceBase(testdir.getDir().getCanonicalPath());
tester.addServlet(org.eclipse.jetty.servlet.DefaultServlet.class, "/");
- FilterHolder holder = tester.addFilter(IncludableGzipFilter.class,"/*",0);
+ FilterHolder holder = tester.addFilter(IncludableGzipFilter.class,"/*",null);
holder.setInitParameter("mimeTypes","text/plain");
tester.start();
}
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java
index 0dfd6f17bf..9e197341e6 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java
@@ -20,7 +20,13 @@ import static org.junit.Assert.assertNotNull;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.net.URL;
+import java.util.EnumSet;
+import java.util.Enumeration;
+import javax.servlet.DispatcherType;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@@ -40,21 +46,7 @@ public class MultipartFilterTest
private File _dir;
private ServletTester tester;
-
- public static class TestServlet extends DumpServlet
- {
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
- {
- assertNotNull(req.getParameter("fileup"));
- assertNotNull(req.getParameter("fileup"+MultiPartFilter.CONTENT_TYPE_SUFFIX));
- assertEquals(req.getParameter("fileup"+MultiPartFilter.CONTENT_TYPE_SUFFIX), "application/octet-stream");
-
- super.doPost(req, resp);
- }
-
- }
+
@Before
public void setUp() throws Exception
{
@@ -67,8 +59,9 @@ public class MultipartFilterTest
tester=new ServletTester();
tester.setContextPath("/context");
tester.setResourceBase(_dir.getCanonicalPath());
- tester.addServlet(TestServlet.class, "/");
- FilterHolder multipartFilter = tester.addFilter(MultiPartFilter.class,"/*",FilterMapping.DEFAULT);
+ tester.addServlet(DumpServlet.class, "/");
+ tester.setAttribute("javax.servlet.context.tempdir", _dir);
+ FilterHolder multipartFilter = tester.addFilter(MultiPartFilter.class,"/*", EnumSet.of(DispatcherType.REQUEST));
multipartFilter.setInitParameter("deleteFiles", "true");
tester.start();
}
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PutFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PutFilterTest.java
index c92cc007f8..9d59bddc48 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PutFilterTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PutFilterTest.java
@@ -21,6 +21,8 @@ import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.URL;
+import java.util.EnumSet;
+import javax.servlet.DispatcherType;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@@ -53,7 +55,7 @@ public class PutFilterTest
tester.setContextPath("/context");
tester.setResourceBase(_dir.getCanonicalPath());
tester.addServlet(org.eclipse.jetty.servlet.DefaultServlet.class, "/");
- FilterHolder holder = tester.addFilter(PutFilter.class,"/*",0);
+ FilterHolder holder = tester.addFilter(PutFilter.class,"/*",EnumSet.of(DispatcherType.REQUEST));
holder.setInitParameter("delAllowed","true");
// Bloody Windows does not allow file renaming
if (!System.getProperty("os.name").toLowerCase().contains("windows"))
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java
index 85141c2185..5ce86b6be3 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java
@@ -17,9 +17,10 @@ import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.net.URL;
+import java.util.EnumSet;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-
+import javax.servlet.DispatcherType;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
@@ -93,7 +94,7 @@ public class QoSFilterTest
FilterHolder holder = new FilterHolder(QoSFilter2.class);
holder.setAsyncSupported(true);
holder.setInitParameter(QoSFilter.MAX_REQUESTS_INIT_PARAM, ""+MAX_QOS);
- _tester.getContext().getServletHandler().addFilterWithMapping(holder,"/*",FilterMapping.DEFAULT);
+ _tester.getContext().getServletHandler().addFilterWithMapping(holder,"/*",EnumSet.of(DispatcherType.REQUEST,DispatcherType.ASYNC));
for(int i = 0; i < NUM_CONNECTIONS; ++i )
{
@@ -111,8 +112,7 @@ public class QoSFilterTest
FilterHolder holder = new FilterHolder(QoSFilter2.class);
holder.setAsyncSupported(true);
holder.setInitParameter(QoSFilter.MAX_REQUESTS_INIT_PARAM, ""+MAX_QOS);
- _tester.getContext().getServletHandler().addFilterWithMapping(holder,"/*",FilterMapping.DEFAULT);
-
+ _tester.getContext().getServletHandler().addFilterWithMapping(holder,"/*",EnumSet.of(DispatcherType.REQUEST,DispatcherType.ASYNC));
for(int i = 0; i < NUM_CONNECTIONS; ++i )
{
new Thread(new Worker2(i)).start();
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/gzip/GzipTester.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/gzip/GzipTester.java
index d0d3e09531..2ebedf60cd 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/gzip/GzipTester.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/gzip/GzipTester.java
@@ -15,11 +15,13 @@ import java.io.IOException;
import java.io.InputStream;
import java.security.DigestOutputStream;
import java.security.MessageDigest;
+import java.util.EnumSet;
import java.util.Enumeration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
+import javax.servlet.DispatcherType;
import javax.servlet.Servlet;
import javax.servlet.http.HttpServletResponse;
@@ -348,7 +350,7 @@ public class GzipTester
servletTester.setResourceBase(testdir.getDir().getCanonicalPath());
ServletHolder servletHolder = servletTester.addServlet(servletClass,"/");
servletHolder.setInitParameter("baseDir",testdir.getDir().getAbsolutePath());
- FilterHolder holder = servletTester.addFilter(GzipFilter.class,"/*",0);
+ FilterHolder holder = servletTester.addFilter(GzipFilter.class,"/*",EnumSet.allOf(DispatcherType.class));
return holder;
}

Back to the top