Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2015-12-18 01:50:19 +0000
committerGreg Wilkins2015-12-18 01:50:19 +0000
commit133e9e054d1a6a3a16eb602cbdfd3f86f3c87572 (patch)
tree57c58d6dcffac4147ca4b5310866e0013249209a /jetty-servlet/src
parent316a2e866190c90e4dc4fc37c99ccce04ad57c6f (diff)
parent5cd676581c178dc3611298e611c62fc51ed1b6cf (diff)
downloadorg.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/src')
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java13
-rw-r--r--jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java43
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();

Back to the top