diff --git a/webserver/webserver/src/main/java/io/helidon/webserver/UriComponent.java b/common/http/src/main/java/io/helidon/common/http/UriComponent.java
similarity index 88%
rename from webserver/webserver/src/main/java/io/helidon/webserver/UriComponent.java
rename to common/http/src/main/java/io/helidon/common/http/UriComponent.java
index f8be1df7c40..1f64e728ae4 100644
--- a/webserver/webserver/src/main/java/io/helidon/webserver/UriComponent.java
+++ b/common/http/src/main/java/io/helidon/common/http/UriComponent.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2021 Oracle and/or its affiliates.
+ * Copyright (c) 2022 Oracle and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,24 +14,18 @@
* limitations under the License.
*/
-package io.helidon.webserver;
+package io.helidon.common.http;
import java.net.URLDecoder;
-import io.helidon.common.http.HashParameters;
-import io.helidon.common.http.Parameters;
-
import static java.nio.charset.StandardCharsets.UTF_8;
/**
* Extracted from Jersey
*
* Utility class for validating, encoding and decoding components of a URI.
- *
- * @author Paul Sandoz
- * @author Marek Potociar (marek.potociar at oracle.com)
*/
-final class UriComponent {
+public final class UriComponent {
private UriComponent() {
}
@@ -47,7 +41,7 @@ private UriComponent() {
* should be in decoded form.
* @return the multivalued map of query parameters.
*/
- static Parameters decodeQuery(String query, boolean decode) {
+ public static Parameters decodeQuery(String query, boolean decode) {
return decodeQuery(query, true, decode);
}
@@ -64,7 +58,7 @@ static Parameters decodeQuery(String query, boolean decode) {
* should be in decoded form.
* @return the multivalued map of query parameters.
*/
- static Parameters decodeQuery(String query, boolean decodeNames, boolean decodeValues) {
+ public static Parameters decodeQuery(String query, boolean decodeNames, boolean decodeValues) {
Parameters queryParameters = HashParameters.create();
if (query == null || query.isEmpty()) {
diff --git a/webserver/webserver/src/test/java/io/helidon/webserver/UriComponentTest.java b/common/http/src/test/java/io/helidon/common/http/UriComponentTest.java
similarity index 94%
rename from webserver/webserver/src/test/java/io/helidon/webserver/UriComponentTest.java
rename to common/http/src/test/java/io/helidon/common/http/UriComponentTest.java
index db26ac03e2a..0d90ee4cd3a 100644
--- a/webserver/webserver/src/test/java/io/helidon/webserver/UriComponentTest.java
+++ b/common/http/src/test/java/io/helidon/common/http/UriComponentTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, 2021 Oracle and/or its affiliates.
+ * Copyright (c) 2022 Oracle and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,14 +14,12 @@
* limitations under the License.
*/
-package io.helidon.webserver;
+package io.helidon.common.http;
import java.net.URI;
import java.net.URLEncoder;
import java.util.Optional;
-import io.helidon.common.http.Parameters;
-
import org.junit.jupiter.api.Test;
import static java.nio.charset.StandardCharsets.US_ASCII;
diff --git a/webserver/webserver/src/main/java/io/helidon/webserver/Request.java b/webserver/webserver/src/main/java/io/helidon/webserver/Request.java
index 574402ac074..8fd2adc7a0a 100644
--- a/webserver/webserver/src/main/java/io/helidon/webserver/Request.java
+++ b/webserver/webserver/src/main/java/io/helidon/webserver/Request.java
@@ -33,6 +33,7 @@
import io.helidon.common.http.Http;
import io.helidon.common.http.MediaType;
import io.helidon.common.http.Parameters;
+import io.helidon.common.http.UriComponent;
import io.helidon.common.reactive.Single;
import io.helidon.media.common.MessageBodyContext;
import io.helidon.media.common.MessageBodyReadableContent;
diff --git a/webserver/websocket/src/main/java/io/helidon/webserver/websocket/WebSocketHandler.java b/webserver/websocket/src/main/java/io/helidon/webserver/websocket/WebSocketHandler.java
index 56b450c1566..e8f1e71c839 100644
--- a/webserver/websocket/src/main/java/io/helidon/webserver/websocket/WebSocketHandler.java
+++ b/webserver/websocket/src/main/java/io/helidon/webserver/websocket/WebSocketHandler.java
@@ -20,13 +20,17 @@
import java.io.IOException;
import java.net.URI;
import java.nio.ByteBuffer;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
+import io.helidon.common.http.Parameters;
+import io.helidon.common.http.UriComponent;
import io.helidon.common.reactive.BufferedEmittingPublisher;
import io.helidon.common.reactive.Multi;
@@ -60,6 +64,7 @@ class WebSocketHandler extends SimpleChannelInboundHandler