]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms.ee/src/org/argeo/cms/servlet/httpserver/ServletHttpExchange.java
HTTP parameters support
[lgpl/argeo-commons.git] / org.argeo.cms.ee / src / org / argeo / cms / servlet / httpserver / ServletHttpExchange.java
index 5a29fbe8401ece3e9c209239b8eeb27fd1428251..85553f01cd9f1fd1be76a348d1d0a90c6434c15f 100644 (file)
@@ -5,9 +5,14 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.InetSocketAddress;
 import java.net.URI;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
+import java.util.Map;
+import java.util.StringJoiner;
 
 import javax.net.ssl.SSLSession;
 import javax.servlet.http.HttpServletRequest;
@@ -18,7 +23,8 @@ import com.sun.net.httpserver.HttpContext;
 import com.sun.net.httpserver.HttpPrincipal;
 import com.sun.net.httpserver.HttpsExchange;
 
-public class ServletHttpExchange extends HttpsExchange {
+/** Integrates {@link HttpsExchange} in a servlet container. */
+class ServletHttpExchange extends HttpsExchange {
        private final HttpContext httpContext;
        private final HttpServletRequest httpServletRequest;
        private final HttpServletResponse httpServletResponse;
@@ -71,7 +77,17 @@ public class ServletHttpExchange extends HttpsExchange {
 
        @Override
        public URI getRequestURI() {
-               return URI.create(httpServletRequest.getRequestURI());
+               // TODO properly deal with charset?
+               Charset encoding = StandardCharsets.UTF_8;
+               Map<String, String[]> parameters = httpServletRequest.getParameterMap();
+               StringJoiner sb = new StringJoiner("&");
+               for (String key : parameters.keySet()) {
+                       for (String value : parameters.get(key)) {
+                               String pair = URLEncoder.encode(key, encoding) + '=' + URLEncoder.encode(value, encoding);
+                               sb.add(pair);
+                       }
+               }
+               return URI.create(httpServletRequest.getRequestURI() + (sb.length() != 0 ? '?' + sb.toString() : ""));
        }
 
        @Override