summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service/src/main
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-04-21 13:37:41 +0200
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-04-24 22:00:35 +0200
commit086bac8f8df7f63a727ee0b7541f5d0cd09dc9a9 (patch)
tree5698466ab974a95f0acd0c4626f4c92a7c9cc333 /jdisc_http_service/src/main
parentd646299293525c074f318eb57aa8c948204d558e (diff)
Remove some netty usage in jdisc_http_service
Diffstat (limited to 'jdisc_http_service/src/main')
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/HttpRequest.java20
1 files changed, 17 insertions, 3 deletions
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<String, List<String>> getUriQueryParameters(URI uri) {
+ MultiMap<String> queryParameters = new MultiMap<>();
+ new HttpURI(uri).decodeQueryTo(queryParameters);
+
+ // Do a deep copy so we do not leak Jetty classes outside
+ Map<String, List<String>> deepCopiedQueryParameters = new HashMap<>();
+ for (Map.Entry<String, List<String>> entry : queryParameters.entrySet()) {
+ deepCopiedQueryParameters.put(entry.getKey(), new ArrayList<>(entry.getValue()));
+ }
+ return deepCopiedQueryParameters;
+ }
+
public Method getMethod() {
return method;
}