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 2016/04/28 11:38:26 UTC

svn commit: r1741398 - in /httpcomponents/httpcore/trunk/httpcore5/src: examples/org/apache/hc/core5/http/examples/ main/java/org/apache/hc/core5/http/ main/java/org/apache/hc/core5/http/message/ test/java/org/apache/hc/core5/http/message/

Author: olegk
Date: Thu Apr 28 09:38:26 2016
New Revision: 1741398

URL: http://svn.apache.org/viewvc?rev=1741398&view=rev
Log:
Added HttpRequest#getUri method; fixed broken examples

Modified:
    httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpGet.java
    httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpPost.java
    httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpPostTrailers.java
    httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalPoolingHttpGet.java
    httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalReverseProxy.java
    httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/HttpFileServer.java
    httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpFileServer.java
    httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpReverseProxy.java
    httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpRequest.java
    httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
    httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpGet.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpGet.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpGet.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpGet.java Thu Apr 28 09:38:26 2016
@@ -63,7 +63,6 @@ public class ElementalHttpGet {
 
         HttpCoreContext coreContext = HttpCoreContext.create();
         HttpHost host = new HttpHost("localhost", 8080);
-        coreContext.setTargetHost(host);
 
         DefaultBHttpClientConnection conn = new DefaultBHttpClientConnection(8 * 1024);
         ConnectionReuseStrategy connStrategy = DefaultConnectionReuseStrategy.INSTANCE;
@@ -80,7 +79,7 @@ public class ElementalHttpGet {
                     Socket socket = new Socket(host.getHostName(), host.getPort());
                     conn.bind(socket);
                 }
-                BasicHttpRequest request = new BasicHttpRequest("GET", targets[i]);
+                BasicHttpRequest request = new BasicHttpRequest("GET", host, targets[i]);
                 System.out.println(">> Request URI: " + request.getUri());
 
                 httpexecutor.preProcess(request, httpproc, coreContext);

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpPost.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpPost.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpPost.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpPost.java Thu Apr 28 09:38:26 2016
@@ -71,7 +71,6 @@ public class ElementalHttpPost {
 
         HttpCoreContext coreContext = HttpCoreContext.create();
         HttpHost host = new HttpHost("localhost", 8080);
-        coreContext.setTargetHost(host);
 
         DefaultBHttpClientConnection conn = new DefaultBHttpClientConnection(8 * 1024);
         ConnectionReuseStrategy connStrategy = DefaultConnectionReuseStrategy.INSTANCE;
@@ -97,7 +96,7 @@ public class ElementalHttpPost {
                     Socket socket = new Socket(host.getHostName(), host.getPort());
                     conn.bind(socket);
                 }
-                HttpRequest request = new BasicHttpRequest("POST",
+                HttpRequest request = new BasicHttpRequest("POST", host,
                         "/servlets-examples/servlet/RequestInfoExample");
                 request.setEntity(requestBodies[i]);
                 System.out.println(">> Request URI: " + request.getUri());

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpPostTrailers.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpPostTrailers.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpPostTrailers.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalHttpPostTrailers.java Thu Apr 28 09:38:26 2016
@@ -62,14 +62,13 @@ public class ElementalHttpPostTrailers {
         HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
         HttpCoreContext coreContext = HttpCoreContext.create();
         HttpHost host = new HttpHost("localhost", 8080);
-        coreContext.setTargetHost(host);
         DefaultBHttpClientConnection conn = new DefaultBHttpClientConnection(8 * 1024);
         HttpEntity requestBody = new HttpEntityWithTrailers(
                 new StringEntity("Chunked message with trailers", ContentType.TEXT_PLAIN),
                 new BasicHeader("t1","Hello world"));
         Socket socket = new Socket(host.getHostName(), host.getPort());
         conn.bind(socket);
-        BasicHttpRequest request = new BasicHttpRequest("POST", "/");
+        BasicHttpRequest request = new BasicHttpRequest("POST", host, "/");
         request.setEntity(requestBody);
         httpexecutor.preProcess(request, httpproc, coreContext);
         HttpResponse response = httpexecutor.execute(request, conn, coreContext);

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalPoolingHttpGet.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalPoolingHttpGet.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalPoolingHttpGet.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalPoolingHttpGet.java Thu Apr 28 09:38:26 2016
@@ -97,9 +97,8 @@ public class ElementalPoolingHttpGet {
                     try {
                         HttpClientConnection conn = entry.getConnection();
                         HttpCoreContext coreContext = HttpCoreContext.create();
-                        coreContext.setTargetHost(this.target);
 
-                        BasicHttpRequest request = new BasicHttpRequest("GET", "/");
+                        BasicHttpRequest request = new BasicHttpRequest("GET", this.target, "/");
                         System.out.println(">> Request URI: " + request.getUri());
 
                         httpexecutor.preProcess(request, httpproc, coreContext);

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalReverseProxy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalReverseProxy.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalReverseProxy.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/ElementalReverseProxy.java Thu Apr 28 09:38:26 2016
@@ -119,9 +119,8 @@ public class ElementalReverseProxy {
                     HTTP_OUT_CONN);
 
             context.setAttribute(HttpCoreContext.HTTP_CONNECTION, conn);
-            context.setAttribute(HttpCoreContext.HTTP_TARGET_HOST, this.target);
 
-            System.out.println(">> Request URI: " + request.getUri());
+            System.out.println(">> Request URI: " + request.getPath());
 
             // Remove hop-by-hop headers
             request.removeHeaders(HttpHeaders.CONTENT_LENGTH);

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/HttpFileServer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/HttpFileServer.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/HttpFileServer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/HttpFileServer.java Thu Apr 28 09:38:26 2016
@@ -148,7 +148,7 @@ public class HttpFileServer {
             if (!method.equals("GET") && !method.equals("HEAD") && !method.equals("POST")) {
                 throw new MethodNotSupportedException(method + " method not supported");
             }
-            String target = request.getUri();
+            String path = request.getPath();
 
             HttpEntity incomingEntity = request.getEntity();
             if (incomingEntity != null) {
@@ -156,7 +156,7 @@ public class HttpFileServer {
                 System.out.println("Incoming incomingEntity content (bytes): " + entityContent.length);
             }
 
-            final File file = new File(this.docRoot, URLDecoder.decode(target, "UTF-8"));
+            final File file = new File(this.docRoot, URLDecoder.decode(path, "UTF-8"));
             if (!file.exists()) {
 
                 response.setCode(HttpStatus.SC_NOT_FOUND);

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpFileServer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpFileServer.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpFileServer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpFileServer.java Thu Apr 28 09:38:26 2016
@@ -151,8 +151,8 @@ public class NHttpFileServer {
                 throw new MethodNotSupportedException(method + " method not supported");
             }
 
-            String target = request.getUri();
-            final File file = new File(this.docRoot, URLDecoder.decode(target, "UTF-8"));
+            String path = request.getPath();
+            final File file = new File(this.docRoot, URLDecoder.decode(path, "UTF-8"));
             if (!file.exists()) {
 
                 response.setCode(HttpStatus.SC_NOT_FOUND);

Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpReverseProxy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpReverseProxy.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpReverseProxy.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpReverseProxy.java Thu Apr 28 09:38:26 2016
@@ -417,7 +417,7 @@ public class NHttpReverseProxy {
         @Override
         public void requestReceived(final HttpRequest request) {
             synchronized (this.httpExchange) {
-                System.out.println("[client->proxy] " + this.httpExchange.getId() + " " + request.getMethod() + " " + request.getUri());
+                System.out.println("[client->proxy] " + this.httpExchange.getId() + " " + request.getMethod() + " " + request.getPath());
                 this.httpExchange.setRequest(request);
                 this.executor.execute(
                         new ProxyRequestProducer(this.httpExchange),
@@ -514,9 +514,9 @@ public class NHttpReverseProxy {
         public HttpRequest generateRequest() {
             synchronized (this.httpExchange) {
                 HttpRequest request = this.httpExchange.getRequest();
-                System.out.println("[proxy->origin] " + this.httpExchange.getId() + " " + request.getMethod() + " " + request.getUri());
+                System.out.println("[proxy->origin] " + this.httpExchange.getId() + " " + request.getMethod() + " " + request.getPath());
                 // Rewrite request!!!!
-                BasicHttpRequest newREquest = new BasicHttpRequest(request.getMethod(), request.getUri());
+                BasicHttpRequest newREquest = new BasicHttpRequest(request.getMethod(), request.getPath());
                 newREquest.setEntity(request.getEntity());
                 return newREquest;
             }

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpRequest.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpRequest.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpRequest.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpRequest.java Thu Apr 28 09:38:26 2016
@@ -27,6 +27,9 @@
 
 package org.apache.hc.core5.http;
 
+import java.net.URI;
+import java.net.URISyntaxException;
+
 /**
  * A request message from a client to a server includes, within the
  * first line of that message, the method to be applied to the resource,
@@ -89,4 +92,13 @@ public interface HttpRequest extends Htt
      */
     void setAuthority(String authority);
 
+    /**
+     * Returns full request URI of this request message.
+     *
+     * @return  the request URI.
+     *
+     * @since 5.0
+     */
+    URI getUri() throws URISyntaxException;
+
 }

Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java Thu Apr 28 09:38:26 2016
@@ -28,6 +28,7 @@
 package org.apache.hc.core5.http.message;
 
 import java.net.URI;
+import java.net.URISyntaxException;
 
 import org.apache.hc.core5.annotation.NotThreadSafe;
 import org.apache.hc.core5.http.HttpHost;
@@ -94,13 +95,13 @@ public class BasicHttpRequest extends Ab
         this.scheme = requestUri.getScheme();
         this.authority = requestUri.getAuthority();
         final StringBuilder buf = new StringBuilder();
-        final String path = requestUri.getRawPath();
+        final String path = requestUri.getPath();
         if (!TextUtils.isBlank(path)) {
             buf.append(path);
         } else {
             buf.append("/");
         }
-        final String query = requestUri.getRawQuery();
+        final String query = requestUri.getQuery();
         if (query != null) {
             buf.append('?').append(query);
         }
@@ -153,6 +154,16 @@ public class BasicHttpRequest extends Ab
     }
 
     @Override
+    public URI getUri() throws URISyntaxException {
+        final StringBuilder buf = new StringBuilder();
+        if (this.authority != null) {
+            buf.append(this.scheme != null ? this.scheme : "http").append("://").append(this.authority);
+        }
+        buf.append(this.path != null ? this.path : "/");
+        return new URI(buf.toString());
+    }
+
+    @Override
     public String toString() {
         final StringBuilder sb = new StringBuilder();
         sb.append(this.method).append(" ").append(this.scheme).append("://").append(this.authority).append("/").append(this.path).append(" ")

Modified: httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java?rev=1741398&r1=1741397&r2=1741398&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java Thu Apr 28 09:38:26 2016
@@ -109,6 +109,7 @@ public class TestBasicMessages {
         Assert.assertEquals("GET", request.getMethod());
         Assert.assertEquals("/stuff", request.getPath());
         Assert.assertEquals(null, request.getAuthority());
+        Assert.assertEquals(new URI("/stuff"), request.getUri());
     }
 
     @Test
@@ -117,6 +118,7 @@ public class TestBasicMessages {
         Assert.assertEquals("GET", request.getMethod());
         Assert.assertEquals("/stuff", request.getPath());
         Assert.assertEquals(null, request.getAuthority());
+        Assert.assertEquals(new URI("/stuff"), request.getUri());
     }
 
     @Test
@@ -126,6 +128,7 @@ public class TestBasicMessages {
         Assert.assertEquals("/stuff?param=value", request.getPath());
         Assert.assertEquals("host:9443", request.getAuthority());
         Assert.assertEquals("https", request.getScheme());
+        Assert.assertEquals(new URI("https://host:9443/stuff?param=value"), request.getUri());
     }
 
     @Test
@@ -135,6 +138,7 @@ public class TestBasicMessages {
         Assert.assertEquals("/", request.getPath());
         Assert.assertEquals("host", request.getAuthority());
         Assert.assertEquals("http", request.getScheme());
+        Assert.assertEquals(new URI("http://host/"), request.getUri());
     }
 
     @Test