diff options
author | Paul Hawke <paul.hawke@gmail.com> | 2013-09-21 04:27:43 -0700 |
---|---|---|
committer | Paul Hawke <paul.hawke@gmail.com> | 2013-09-21 04:27:43 -0700 |
commit | 66f2f345c88d0086a1911a4aa5e3fbc8251d379f (patch) | |
tree | 0113f332f8c7b383c2583537fdcd57746530990b | |
parent | 12b4973a5265890754904c75f5eeb6ef1b29373a (diff) | |
parent | 249def0afcd823cd21315973bf197f2bef4a089f (diff) | |
download | nanohttpd-66f2f345c88d0086a1911a4aa5e3fbc8251d379f.tar.gz |
Merge pull request #61 from sleekweasel/test-interfaces
Add interface to allow fakes
4 files changed, 39 insertions, 11 deletions
diff --git a/core/src/main/java/fi/iki/elonen/NanoHTTPD.java b/core/src/main/java/fi/iki/elonen/NanoHTTPD.java index 61b813c..e0df220 100644 --- a/core/src/main/java/fi/iki/elonen/NanoHTTPD.java +++ b/core/src/main/java/fi/iki/elonen/NanoHTTPD.java @@ -227,7 +227,7 @@ public abstract class NanoHTTPD { * @param session The HTTP session * @return HTTP response, see class Response for details */ - public Response serve(HTTPSession session) { + public Response serve(IHTTPSession session) { Map<String, String> files = new HashMap<String, String>(); Method method = session.getMethod(); if (Method.PUT.equals(method) || Method.POST.equals(method)) { @@ -716,7 +716,32 @@ public abstract class NanoHTTPD { /** * Handles one session, i.e. parses the HTTP request and returns the response. */ - protected class HTTPSession { + public interface IHTTPSession { + void execute() throws IOException; + + Map<String, String> getParms(); + + Map<String, String> getHeaders(); + + /** + * @return the path part of the URL. + */ + String getUri(); + + Method getMethod(); + + InputStream getInputStream(); + + CookieHandler getCookies(); + + /** + * Adds the files in the request body to the files map. + * @arg files - map to modify + */ + void parseBody(Map<String, String> files) throws IOException, ResponseException; + } + + protected class HTTPSession implements IHTTPSession { public static final int BUFSIZE = 8192; private final TempFileManager tempFileManager; private final OutputStream outputStream; @@ -735,6 +760,7 @@ public abstract class NanoHTTPD { this.outputStream = outputStream; } + @Override public void execute() throws IOException { try { // Read the first 8192 bytes. @@ -809,7 +835,8 @@ public abstract class NanoHTTPD { } } - protected void parseBody(Map<String, String> files) throws IOException, ResponseException { + @Override + public void parseBody(Map<String, String> files) throws IOException, ResponseException { RandomAccessFile randomAccessFile = null; BufferedReader in = null; try { @@ -1135,26 +1162,32 @@ public abstract class NanoHTTPD { } } + @Override public final Map<String, String> getParms() { return parms; } + @Override public final Map<String, String> getHeaders() { return headers; } + @Override public final String getUri() { return uri; } + @Override public final Method getMethod() { return method; } + @Override public final InputStream getInputStream() { return inputStream; } + @Override public CookieHandler getCookies() { return cookies; } diff --git a/core/src/test/java/fi/iki/elonen/integration/CookieIntegrationTest.java b/core/src/test/java/fi/iki/elonen/integration/CookieIntegrationTest.java index 3362171..0d54b37 100644 --- a/core/src/test/java/fi/iki/elonen/integration/CookieIntegrationTest.java +++ b/core/src/test/java/fi/iki/elonen/integration/CookieIntegrationTest.java @@ -10,7 +10,6 @@ import org.junit.Test; import java.util.ArrayList; import java.util.Calendar; -import java.util.Date; import java.util.List; import static org.junit.Assert.*; @@ -72,7 +71,7 @@ public class CookieIntegrationTest extends IntegrationTestBase<CookieIntegration super(8192); } - @Override public Response serve(HTTPSession session) { + @Override public Response serve(IHTTPSession session) { CookieHandler cookies = session.getCookies(); for (String cookieName : cookies) { cookiesReceived.add(new Cookie(cookieName, cookies.read(cookieName))); diff --git a/core/src/test/java/fi/iki/elonen/integration/PutStreamIntegrationTest.java b/core/src/test/java/fi/iki/elonen/integration/PutStreamIntegrationTest.java index 533f2d4..1e260b2 100644 --- a/core/src/test/java/fi/iki/elonen/integration/PutStreamIntegrationTest.java +++ b/core/src/test/java/fi/iki/elonen/integration/PutStreamIntegrationTest.java @@ -6,14 +6,10 @@ import java.io.DataInputStream; import java.io.IOException; import java.util.Map; -import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.ByteArrayEntity; import org.apache.http.impl.client.BasicResponseHandler; -import org.apache.http.impl.client.DefaultHttpClient; -import org.junit.After; -import org.junit.Before; import org.junit.Test; import fi.iki.elonen.NanoHTTPD; @@ -48,7 +44,7 @@ public class PutStreamIntegrationTest extends IntegrationTestBase<PutStreamInteg } @Override - public Response serve(HTTPSession session) { + public Response serve(IHTTPSession session) { Method method = session.getMethod(); Map<String, String> headers = session.getHeaders(); int contentLength = Integer.parseInt(headers.get("content-length")); diff --git a/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java b/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java index c05b891..79ed4b3 100644 --- a/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java +++ b/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java @@ -219,7 +219,7 @@ public class SimpleWebServer extends NanoHTTPD { return newUri; } - public Response serve(HTTPSession session) { + public Response serve(IHTTPSession session) { Map<String, String> header = session.getHeaders(); Map<String, String> parms = session.getParms(); String uri = session.getUri(); |