You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2017/12/08 09:37:51 UTC

httpcomponents-core git commit: BasicHttpRequest to handle absolute URIs passed as a path constructor argument

Repository: httpcomponents-core
Updated Branches:
  refs/heads/master 3ef097ca9 -> d4fbef3cc


BasicHttpRequest to handle absolute URIs passed as a path constructor argument


Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/commit/d4fbef3c
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/tree/d4fbef3c
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/diff/d4fbef3c

Branch: refs/heads/master
Commit: d4fbef3cca1bcd263cbd70cff47737de746fffe5
Parents: 3ef097c
Author: Oleg Kalnichevski <ol...@apache.org>
Authored: Fri Dec 8 10:26:47 2017 +0100
Committer: Oleg Kalnichevski <ol...@apache.org>
Committed: Fri Dec 8 10:33:24 2017 +0100

----------------------------------------------------------------------
 .../hc/core5/http/message/BasicHttpRequest.java | 49 ++++++++++++--------
 .../core5/http/message/TestBasicMessages.java   | 10 ++++
 2 files changed, 40 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/d4fbef3c/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java b/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
index 495b237..d530e84 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
@@ -60,7 +60,15 @@ public class BasicHttpRequest extends HeaderGroup implements HttpRequest {
      * @param path request path.
      */
     public BasicHttpRequest(final String method, final String path) {
-        this(method, null, path);
+        super();
+        this.method = method;
+        if (path != null) {
+            try {
+                setUri(new URI(path));
+            } catch (final URISyntaxException ex) {
+                this.path = path;
+            }
+        }
     }
 
     /**
@@ -91,24 +99,7 @@ public class BasicHttpRequest extends HeaderGroup implements HttpRequest {
     public BasicHttpRequest(final String method, final URI requestUri) {
         super();
         this.method = Args.notNull(method, "Method name");
-        Args.notNull(requestUri, "Request URI");
-        this.scheme = requestUri.getScheme();
-        this.authority = requestUri.getHost() != null ? new URIAuthority(
-                requestUri.getRawUserInfo(),
-                requestUri.getHost(),
-                requestUri.getPort()) : null;
-        final StringBuilder buf = new StringBuilder();
-        final String path = requestUri.getRawPath();
-        if (!TextUtils.isBlank(path)) {
-            buf.append(path);
-        } else {
-            buf.append("/");
-        }
-        final String query = requestUri.getRawQuery();
-        if (query != null) {
-            buf.append('?').append(query);
-        }
-        this.path = buf.toString();
+        setUri(Args.notNull(requestUri, "Request URI"));
     }
 
     @Override
@@ -176,6 +167,26 @@ public class BasicHttpRequest extends HeaderGroup implements HttpRequest {
         return getPath();
     }
 
+    void setUri(final URI requestUri) {
+        this.scheme = requestUri.getScheme();
+        this.authority = requestUri.getHost() != null ? new URIAuthority(
+                requestUri.getRawUserInfo(),
+                requestUri.getHost(),
+                requestUri.getPort()) : null;
+        final StringBuilder buf = new StringBuilder();
+        final String path = requestUri.getRawPath();
+        if (!TextUtils.isBlank(path)) {
+            buf.append(path);
+        } else {
+            buf.append("/");
+        }
+        final String query = requestUri.getRawQuery();
+        if (query != null) {
+            buf.append('?').append(query);
+        }
+        this.path = buf.toString();
+    }
+
     @Override
     public URI getUri() throws URISyntaxException {
         if (this.requestUri == null) {

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/d4fbef3c/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
index 5e1baab..49542cd 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
@@ -157,6 +157,16 @@ public class TestBasicMessages {
     }
 
     @Test
+    public void testRequestWithAbsoluteURIAsPath() throws Exception {
+        final HttpRequest request = new BasicHttpRequest("GET", "https://host:9443/stuff?param=value");
+        Assert.assertEquals("GET", request.getMethod());
+        Assert.assertEquals("/stuff?param=value", request.getPath());
+        Assert.assertEquals(new URIAuthority("host", 9443), request.getAuthority());
+        Assert.assertEquals("https", request.getScheme());
+        Assert.assertEquals(new URI("https://host:9443/stuff?param=value"), request.getUri());
+    }
+
+    @Test
     public void testRequestWithNoPath() throws Exception {
         final HttpRequest request = new BasicHttpRequest("GET", new URI("http://host"));
         Assert.assertEquals("GET", request.getMethod());