diff options
author | Greg Wilkins | 2015-12-18 01:50:19 +0000 |
---|---|---|
committer | Greg Wilkins | 2015-12-18 01:50:19 +0000 |
commit | 133e9e054d1a6a3a16eb602cbdfd3f86f3c87572 (patch) | |
tree | 57c58d6dcffac4147ca4b5310866e0013249209a /jetty-servlet | |
parent | 316a2e866190c90e4dc4fc37c99ccce04ad57c6f (diff) | |
parent | 5cd676581c178dc3611298e611c62fc51ed1b6cf (diff) | |
download | org.eclipse.jetty.project-133e9e054d1a6a3a16eb602cbdfd3f86f3c87572.tar.gz org.eclipse.jetty.project-133e9e054d1a6a3a16eb602cbdfd3f86f3c87572.tar.xz org.eclipse.jetty.project-133e9e054d1a6a3a16eb602cbdfd3f86f3c87572.zip |
Merge remote-tracking branch 'origin/jetty-9.3.x'
Conflicts:
jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java
Diffstat (limited to 'jetty-servlet')
-rw-r--r-- | jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java | 13 | ||||
-rw-r--r-- | jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java | 43 |
2 files changed, 53 insertions, 3 deletions
diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java index 90b641c8fa..a5182fe13c 100644 --- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java +++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java @@ -289,8 +289,15 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory throw new UnavailableException(e.toString()); } - _contentFactory=_cache==null?new ResourceContentFactory(this,_mimeTypes,-1,_gzip):_cache; // TODO pass a buffer size - + if (_cache!=null) + _contentFactory=_cache; + else + { + _contentFactory=new ResourceContentFactory(this,_mimeTypes,_gzip); + if (resourceCache!=null) + _servletContext.setAttribute(resourceCache,_contentFactory); + } + _gzipEquivalentFileExtensions = new ArrayList<String>(); String otherGzipExtensions = getInitParameter("otherGzipFileExtensions"); if (otherGzipExtensions != null) @@ -461,7 +468,7 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory try { // Find the content - content=_contentFactory.getContent(pathInContext); + content=_contentFactory.getContent(pathInContext,response.getBufferSize()); if (LOG.isDebugEnabled()) LOG.info("content={}",content); diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java index 0f740d9da9..13a54837e5 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java @@ -23,6 +23,7 @@ import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; @@ -39,8 +40,10 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.eclipse.jetty.http.DateGenerator; +import org.eclipse.jetty.http.HttpContent; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.LocalConnector; +import org.eclipse.jetty.server.ResourceContentFactory; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.AllowSymLinkAliasChecker; import org.eclipse.jetty.toolchain.test.FS; @@ -48,6 +51,7 @@ import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.toolchain.test.OS; import org.eclipse.jetty.toolchain.test.TestingDir; import org.eclipse.jetty.util.IO; +import org.eclipse.jetty.util.resource.Resource; import org.hamcrest.Matchers; import org.junit.After; import org.junit.Assert; @@ -522,6 +526,45 @@ public class DefaultServletTest } @Test + public void testDirectFromResourceHttpContent() throws Exception + { + if (!OS.IS_LINUX) + return; + + testdir.ensureEmpty(); + File resBase = testdir.getPathFile("docroot").toFile(); + FS.ensureDirExists(resBase); + context.setBaseResource(Resource.newResource(resBase)); + + File index = new File(resBase, "index.html"); + createFile(index, "<h1>Hello World</h1>"); + + ServletHolder defholder = context.addServlet(DefaultServlet.class, "/"); + defholder.setInitParameter("dirAllowed", "true"); + defholder.setInitParameter("redirectWelcome", "false"); + defholder.setInitParameter("useFileMappedBuffer", "true"); + defholder.setInitParameter("welcomeServlets", "exact"); + defholder.setInitParameter("gzip", "false"); + defholder.setInitParameter("resourceCache","resourceCache"); + + String response; + + response = connector.getResponses("GET /context/index.html HTTP/1.0\r\n\r\n"); + assertResponseContains("<h1>Hello World</h1>", response); + + ResourceContentFactory factory = (ResourceContentFactory)context.getServletContext().getAttribute("resourceCache"); + + HttpContent content = factory.getContent("/index.html",200); + ByteBuffer buffer = content.getDirectBuffer(); + Assert.assertTrue(buffer.isDirect()); + content = factory.getContent("/index.html",5); + buffer = content.getDirectBuffer(); + Assert.assertTrue(buffer==null); + } + + + + @Test public void testRangeRequests() throws Exception { testdir.ensureEmpty(); |