From 086bac8f8df7f63a727ee0b7541f5d0cd09dc9a9 Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Fri, 21 Apr 2017 13:37:41 +0200 Subject: Remove some netty usage in jdisc_http_service --- .../java/com/yahoo/jdisc/http/HttpRequest.java | 20 ++++++++++-- .../com/yahoo/jdisc/http/HttpRequestTestCase.java | 36 ---------------------- 2 files changed, 17 insertions(+), 39 deletions(-) (limited to 'jdisc_http_service') diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/HttpRequest.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/HttpRequest.java index ff80a8a845d..6c4759915b2 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/HttpRequest.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/HttpRequest.java @@ -9,12 +9,14 @@ import com.yahoo.jdisc.handler.RequestHandler; import com.yahoo.jdisc.handler.ResponseHandler; import com.yahoo.jdisc.http.servlet.ServletOrJdiscHttpRequest; import com.yahoo.jdisc.service.CurrentContainer; -import org.jboss.netty.handler.codec.http.QueryStringDecoder; +import org.eclipse.jetty.http.HttpURI; +import org.eclipse.jetty.util.MultiMap; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.net.URI; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; @@ -84,7 +86,7 @@ public class HttpRequest extends Request implements ServletOrJdiscHttpRequest { this.method = method; this.version = version; this.remoteAddress = remoteAddress; - this.parameters.putAll(new QueryStringDecoder(uri.toString(), true).getParameters()); + this.parameters.putAll(getUriQueryParameters(uri)); if (connectedAtMillis != null) { this.connectedAt = connectedAtMillis; } else { @@ -102,7 +104,7 @@ public class HttpRequest extends Request implements ServletOrJdiscHttpRequest { this.method = method; this.version = version; this.remoteAddress = null; - this.parameters.putAll(new QueryStringDecoder(uri.toString(), true).getParameters()); + this.parameters.putAll(getUriQueryParameters(uri)); this.connectedAt = creationTime(TimeUnit.MILLISECONDS); } catch (RuntimeException e) { release(); @@ -110,6 +112,18 @@ public class HttpRequest extends Request implements ServletOrJdiscHttpRequest { } } + private static Map> getUriQueryParameters(URI uri) { + MultiMap queryParameters = new MultiMap<>(); + new HttpURI(uri).decodeQueryTo(queryParameters); + + // Do a deep copy so we do not leak Jetty classes outside + Map> deepCopiedQueryParameters = new HashMap<>(); + for (Map.Entry> entry : queryParameters.entrySet()) { + deepCopiedQueryParameters.put(entry.getKey(), new ArrayList<>(entry.getValue())); + } + return deepCopiedQueryParameters; + } + public Method getMethod() { return method; } diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java index 8f26d9c38b0..53291c850c2 100644 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java +++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java @@ -4,9 +4,6 @@ package com.yahoo.jdisc.http; import com.yahoo.jdisc.Container; import com.yahoo.jdisc.Request; import com.yahoo.jdisc.service.CurrentContainer; -import org.jboss.netty.handler.codec.http.HttpHeaders; -import org.jboss.netty.handler.codec.http.HttpMethod; -import org.jboss.netty.handler.codec.http.HttpVersion; import org.testng.annotations.Test; import java.net.InetSocketAddress; @@ -29,27 +26,6 @@ import static org.testng.AssertJUnit.assertTrue; */ public class HttpRequestTestCase { - @Test - public void requireThatMethodIsCompatibleWithNetty() { - assertMethod(HttpRequest.Method.OPTIONS, HttpMethod.OPTIONS); - assertMethod(HttpRequest.Method.GET, HttpMethod.GET); - assertMethod(HttpRequest.Method.HEAD, HttpMethod.HEAD); - assertMethod(HttpRequest.Method.POST, HttpMethod.POST); - assertMethod(HttpRequest.Method.PUT, HttpMethod.PUT); - assertMethod(HttpRequest.Method.PATCH, HttpMethod.PATCH); - assertMethod(HttpRequest.Method.DELETE, HttpMethod.DELETE); - assertMethod(HttpRequest.Method.TRACE, HttpMethod.TRACE); - assertMethod(HttpRequest.Method.CONNECT, HttpMethod.CONNECT); - assertEquals(9, HttpRequest.Method.values().length); - } - - @Test - public void requireThatVersionIsCompatibleWithNetty() { - assertVersion(HttpRequest.Version.HTTP_1_0, HttpVersion.HTTP_1_0); - assertVersion(HttpRequest.Version.HTTP_1_1, HttpVersion.HTTP_1_1); - assertEquals(2, HttpRequest.Version.values().length); - } - @Test public void requireThatSimpleServerConstructorsUseReasonableDefaults() { final URI uri = URI.create("http://localhost/"); @@ -214,18 +190,6 @@ public class HttpRequestTestCase { assertEquals(cookies, request.decodeCookieHeader()); } - private static void assertMethod(final HttpRequest.Method discMethod, final HttpMethod nettyMethod) { - assertEquals(discMethod, HttpRequest.Method.valueOf(nettyMethod.getName())); - assertEquals(discMethod, HttpRequest.Method.valueOf(nettyMethod.toString())); - assertEquals(nettyMethod, HttpMethod.valueOf(discMethod.toString())); - } - - private static void assertVersion(final HttpRequest.Version discVersion, final HttpVersion nettyVersion) { - assertEquals(discVersion, HttpRequest.Version.fromString(nettyVersion.getText())); - assertEquals(discVersion, HttpRequest.Version.fromString(nettyVersion.toString())); - assertEquals(nettyVersion, HttpVersion.valueOf(discVersion.toString())); - } - private static HttpRequest newRequest(final HttpRequest.Version version) throws Exception { return HttpRequest.newServerRequest( mockContainer(), -- cgit v1.2.3