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/03/15 21:35:36 UTC
svn commit: r1735164 [1/4] - in /httpcomponents/httpcore/trunk:
httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/
httpcore5-ab/src/test/java/org/apache/hc/core5/http/benchmark/
httpcore5/src/examples/org/apache/hc/core5/http/examples/ http...
Author: olegk
Date: Tue Mar 15 20:35:34 2016
New Revision: 1735164
URL: http://svn.apache.org/viewvc?rev=1735164&view=rev
Log:
RFC 7540: Removed RequestLine and StatusLine from HTTP message API; HTTP messages may include version attribute to represent protocol version used to transmit them; HTTP connections to keep protocol version of the last incoming message
Added:
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/RequestLine.java (contents, props changed)
- copied, changed from r1734704, httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicRequestLine.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/StatusLine.java (contents, props changed)
- copied, changed from r1734704, httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicStatusLine.java
Removed:
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/RequestLine.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/StatusLine.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicRequestLine.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicStatusLine.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestRequestLine.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestStatusLine.java
Modified:
httpcomponents/httpcore/trunk/httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/BenchmarkWorker.java
httpcomponents/httpcore/trunk/httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/HttpBenchmark.java
httpcomponents/httpcore/trunk/httpcore5-ab/src/test/java/org/apache/hc/core5/http/benchmark/SmokeTest.java
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/NHttpClient.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/examples/org/apache/hc/core5/http/examples/PipeliningHttpClient.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpMessage.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/HttpRequestFactory.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpResponse.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpResponseFactory.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpVersion.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultConnectionReuseStrategy.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultHttpRequestFactory.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultHttpResponseFactory.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpRequestParser.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpRequestWriter.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseParser.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseWriter.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncClientExchangeHandler.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestParser.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestWriter.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpResponseParser.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpResponseWriter.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpClientConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultNHttpServerConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpAsyncRequestExecutor.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpAsyncService.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/NHttpConnectionBase.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/NullRequestHandler.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/PipeliningClientExchangeHandler.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/SessionHttpContext.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/UriHttpAsyncRequestHandlerMapper.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/io/UriHttpRequestHandlerMapper.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpRequest.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHttpResponse.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicLineFormatter.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicLineParser.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/LineFormatter.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/message/LineParser.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/BasicHttpContext.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/HttpContext.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/HttpCoreContext.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestConnControl.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestContent.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestExpectContinue.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestTargetHost.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/RequestValidateHost.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/ResponseConnControl.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/ResponseContent.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/TestBasicRequest.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/TestDefaultConnectionReuseStrategy.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/TestDefaultContentLengthStrategy.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestBHttpConnectionBase.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestDefaultBHttpClientConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestDefaultBHttpServerConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestHttpRequestExecutor.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestHttpService.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestRequestParser.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/io/TestResponseParser.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestBasicAsyncClientExchangeHandler.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestBasicAsyncRequestHandler.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestDefaultNHttpClientConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestDefaultNHttpServerConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestErrorResponseProducer.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestHttpAsyncRequestExecutor.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestHttpAsyncService.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestHttpMessageParser.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/impl/nio/TestNHttpConnectionBase.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/integration/SimpleRequestHandler.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/integration/TestClientOutOfSequenceResponse.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/integration/TestHttpAsyncHandlerCancellable.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/integration/TestHttpAsyncHandlers.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/integration/TestHttpAsyncHandlersPipelining.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/integration/TestSyncHttp.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestAbstractMessage.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicHttpResponse.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicLineFormatter.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicLineParser.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/message/TestBasicMessages.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/protocol/TestStandardInterceptors.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/testserver/io/HttpServer.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/testserver/io/LoggingBHttpClientConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/testserver/io/LoggingBHttpServerConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/testserver/nio/LoggingNHttpClientConnection.java
httpcomponents/httpcore/trunk/httpcore5/src/test/java/org/apache/hc/core5/http/testserver/nio/LoggingNHttpServerConnection.java
Modified: httpcomponents/httpcore/trunk/httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/BenchmarkWorker.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/BenchmarkWorker.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/BenchmarkWorker.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/BenchmarkWorker.java Tue Mar 15 20:35:34 2016
@@ -44,12 +44,13 @@ import org.apache.hc.core5.http.HttpHost
import org.apache.hc.core5.http.HttpRequest;
import org.apache.hc.core5.http.HttpResponse;
import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.HttpVersion;
import org.apache.hc.core5.http.entity.ContentType;
import org.apache.hc.core5.http.impl.DefaultConnectionReuseStrategy;
+import org.apache.hc.core5.http.impl.io.HttpRequestExecutor;
import org.apache.hc.core5.http.protocol.HttpCoreContext;
import org.apache.hc.core5.http.protocol.HttpProcessor;
import org.apache.hc.core5.http.protocol.HttpProcessorBuilder;
-import org.apache.hc.core5.http.impl.io.HttpRequestExecutor;
import org.apache.hc.core5.http.protocol.RequestConnControl;
import org.apache.hc.core5.http.protocol.RequestContent;
import org.apache.hc.core5.http.protocol.RequestExpectContinue;
@@ -104,6 +105,7 @@ class BenchmarkWorker implements Runnabl
@Override
public void run() {
HttpResponse response = null;
+ final HttpVersion version = config.isUseHttp1_0() ? HttpVersion.HTTP_1_0 : HttpVersion.HTTP_1_1;
final BenchmarkConnection conn = new BenchmarkConnection(8 * 1024, stats);
final String scheme = targetHost.getSchemeName();
@@ -118,7 +120,8 @@ class BenchmarkWorker implements Runnabl
}
// Populate the execution context
- this.context.setTargetHost(this.targetHost);
+ context.setTargetHost(this.targetHost);
+ context.setProtocolVersion(version);
stats.start();
final int count = config.getRequests();
@@ -161,7 +164,7 @@ class BenchmarkWorker implements Runnabl
verboseOutput(response);
- if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
+ if (response.getCode() == HttpStatus.SC_OK) {
stats.incSuccessCount();
} else {
stats.incFailureCount();
@@ -233,7 +236,7 @@ class BenchmarkWorker implements Runnabl
private void verboseOutput(final HttpResponse response) {
if (config.getVerbosity() >= 3) {
- System.out.println(">> " + request.getRequestLine().toString());
+ System.out.println(">> " + request.getMethod() + " " + request.getUri());
final Header[] headers = request.getAllHeaders();
for (final Header header : headers) {
System.out.println(">> " + header.toString());
@@ -241,10 +244,10 @@ class BenchmarkWorker implements Runnabl
System.out.println();
}
if (config.getVerbosity() >= 2) {
- System.out.println(response.getStatusLine().getStatusCode());
+ System.out.println(response.getCode());
}
if (config.getVerbosity() >= 3) {
- System.out.println("<< " + response.getStatusLine().toString());
+ System.out.println("<< " + response.getCode() + " " + response.getReasonPhrase());
final Header[] headers = response.getAllHeaders();
for (final Header header : headers) {
System.out.println("<< " + header.toString());
Modified: httpcomponents/httpcore/trunk/httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/HttpBenchmark.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/HttpBenchmark.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/HttpBenchmark.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5-ab/src/main/java/org/apache/hc/core5/http/benchmark/HttpBenchmark.java Tue Mar 15 20:35:34 2016
@@ -110,16 +110,13 @@ public class HttpBenchmark {
se.setChunked(config.isUseChunking());
entity = se;
}
- final HttpVersion ver = config.isUseHttp1_0() ? HttpVersion.HTTP_1_0 : HttpVersion.HTTP_1_1;
final HttpRequest request;
if ("POST".equals(config.getMethod())) {
- final BasicHttpRequest httppost =
- new BasicHttpRequest("POST", url.getPath(), ver);
+ final HttpRequest httppost = new BasicHttpRequest("POST", url.getPath());
httppost.setEntity(entity);
request = httppost;
} else if ("PUT".equals(config.getMethod())) {
- final BasicHttpRequest httpput =
- new BasicHttpRequest("PUT", url.getPath(), ver);
+ final HttpRequest httpput = new BasicHttpRequest("PUT", url.getPath());
httpput.setEntity(entity);
request = httpput;
} else {
@@ -129,8 +126,9 @@ public class HttpBenchmark {
} else if (path.trim().length() == 0) {
path = "/";
}
- request = new BasicHttpRequest(config.getMethod(), path, ver);
+ request = new BasicHttpRequest(config.getMethod(), path);
}
+ request.setVersion(config.isUseHttp1_0() ? HttpVersion.HTTP_1_0 : HttpVersion.HTTP_1_1);
if (!config.isKeepAlive()) {
request.addHeader(new DefaultHeader(HttpHeaders.CONNECTION, HeaderElements.CLOSE));
Modified: httpcomponents/httpcore/trunk/httpcore5-ab/src/test/java/org/apache/hc/core5/http/benchmark/SmokeTest.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5-ab/src/test/java/org/apache/hc/core5/http/benchmark/SmokeTest.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5-ab/src/test/java/org/apache/hc/core5/http/benchmark/SmokeTest.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5-ab/src/test/java/org/apache/hc/core5/http/benchmark/SmokeTest.java Tue Mar 15 20:35:34 2016
@@ -35,8 +35,8 @@ import org.apache.hc.core5.http.HttpResp
import org.apache.hc.core5.http.HttpStatus;
import org.apache.hc.core5.http.entity.ContentType;
import org.apache.hc.core5.http.entity.StringEntity;
-import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.http.io.HttpRequestHandler;
+import org.apache.hc.core5.http.protocol.HttpContext;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -55,7 +55,7 @@ public class SmokeTest {
final HttpRequest request,
final HttpResponse response,
final HttpContext context) throws HttpException, IOException {
- response.setStatusCode(HttpStatus.SC_OK);
+ response.setCode(HttpStatus.SC_OK);
response.setEntity(new StringEntity("0123456789ABCDEF", ContentType.TEXT_PLAIN));
}
});
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=1735164&r1=1735163&r2=1735164&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 Tue Mar 15 20:35:34 2016
@@ -81,13 +81,13 @@ public class ElementalHttpGet {
conn.bind(socket);
}
BasicHttpRequest request = new BasicHttpRequest("GET", targets[i]);
- System.out.println(">> Request URI: " + request.getRequestLine().getUri());
+ System.out.println(">> Request URI: " + request.getUri());
httpexecutor.preProcess(request, httpproc, coreContext);
HttpResponse response = httpexecutor.execute(request, conn, coreContext);
httpexecutor.postProcess(response, httpproc, coreContext);
- System.out.println("<< Response: " + response.getStatusLine());
+ System.out.println("<< Response: " + response.getCode());
System.out.println(EntityUtils.toString(response.getEntity()));
System.out.println("==============");
if (!connStrategy.keepAlive(request, response, 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=1735164&r1=1735163&r2=1735164&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 Tue Mar 15 20:35:34 2016
@@ -100,13 +100,13 @@ public class ElementalHttpPost {
HttpRequest request = new BasicHttpRequest("POST",
"/servlets-examples/servlet/RequestInfoExample");
request.setEntity(requestBodies[i]);
- System.out.println(">> Request URI: " + request.getRequestLine().getUri());
+ System.out.println(">> Request URI: " + request.getUri());
httpexecutor.preProcess(request, httpproc, coreContext);
HttpResponse response = httpexecutor.execute(request, conn, coreContext);
httpexecutor.postProcess(response, httpproc, coreContext);
- System.out.println("<< Response: " + response.getStatusLine());
+ System.out.println("<< Response: " + response.getCode());
System.out.println(EntityUtils.toString(response.getEntity()));
System.out.println("==============");
if (!connStrategy.keepAlive(request, response, coreContext)) {
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=1735164&r1=1735163&r2=1735164&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 Tue Mar 15 20:35:34 2016
@@ -75,7 +75,7 @@ public class ElementalHttpPostTrailers {
HttpResponse response = httpexecutor.execute(request, conn, coreContext);
httpexecutor.postProcess(response, httpproc, coreContext);
- System.out.println("<< Response: " + response.getStatusLine());
+ System.out.println("<< Response: " + response.getCode());
System.out.println(EntityUtils.toString(response.getEntity()));
System.out.println("==============");
conn.close();
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=1735164&r1=1735163&r2=1735164&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 Tue Mar 15 20:35:34 2016
@@ -100,13 +100,13 @@ public class ElementalPoolingHttpGet {
coreContext.setTargetHost(this.target);
BasicHttpRequest request = new BasicHttpRequest("GET", "/");
- System.out.println(">> Request URI: " + request.getRequestLine().getUri());
+ System.out.println(">> Request URI: " + request.getUri());
httpexecutor.preProcess(request, httpproc, coreContext);
HttpResponse response = httpexecutor.execute(request, conn, coreContext);
httpexecutor.postProcess(response, httpproc, coreContext);
- System.out.println("<< Response: " + response.getStatusLine());
+ System.out.println("<< Response: " + response.getCode());
System.out.println(EntityUtils.toString(response.getEntity()));
reusable = connStrategy.keepAlive(request, response, 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=1735164&r1=1735163&r2=1735164&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 Tue Mar 15 20:35:34 2016
@@ -121,7 +121,7 @@ public class ElementalReverseProxy {
context.setAttribute(HttpCoreContext.HTTP_CONNECTION, conn);
context.setAttribute(HttpCoreContext.HTTP_TARGET_HOST, this.target);
- System.out.println(">> Request URI: " + request.getRequestLine().getUri());
+ System.out.println(">> Request URI: " + request.getUri());
// Remove hop-by-hop headers
request.removeHeaders(HttpHeaders.CONTENT_LENGTH);
@@ -146,11 +146,11 @@ public class ElementalReverseProxy {
targetResponse.removeHeaders("Trailers");
targetResponse.removeHeaders("Upgrade");
- response.setStatusLine(targetResponse.getStatusLine());
+ response.setCode(targetResponse.getCode());
response.setHeaders(targetResponse.getAllHeaders());
response.setEntity(targetResponse.getEntity());
- System.out.println("<< Response: " + response.getStatusLine());
+ System.out.println("<< Response: " + response.getCode());
final boolean keepalive = this.connStrategy.keepAlive(request, response, context);
context.setAttribute(HTTP_CONN_KEEPALIVE, new Boolean(keepalive));
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=1735164&r1=1735163&r2=1735164&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 Tue Mar 15 20:35:34 2016
@@ -144,11 +144,11 @@ public class HttpFileServer {
final HttpResponse response,
final HttpContext context) throws HttpException, IOException {
- String method = request.getRequestLine().getMethod().toUpperCase(Locale.ROOT);
+ String method = request.getMethod().toUpperCase(Locale.ROOT);
if (!method.equals("GET") && !method.equals("HEAD") && !method.equals("POST")) {
throw new MethodNotSupportedException(method + " method not supported");
}
- String target = request.getRequestLine().getUri();
+ String target = request.getUri();
HttpEntity incomingEntity = request.getEntity();
if (incomingEntity != null) {
@@ -159,7 +159,7 @@ public class HttpFileServer {
final File file = new File(this.docRoot, URLDecoder.decode(target, "UTF-8"));
if (!file.exists()) {
- response.setStatusCode(HttpStatus.SC_NOT_FOUND);
+ response.setCode(HttpStatus.SC_NOT_FOUND);
StringEntity outgoingEntity = new StringEntity(
"<html><body><h1>File" + file.getPath() +
" not found</h1></body></html>",
@@ -169,7 +169,7 @@ public class HttpFileServer {
} else if (!file.canRead() || file.isDirectory()) {
- response.setStatusCode(HttpStatus.SC_FORBIDDEN);
+ response.setCode(HttpStatus.SC_FORBIDDEN);
StringEntity outgoingEntity = new StringEntity(
"<html><body><h1>Access denied</h1></body></html>",
ContentType.create("text/html", "UTF-8"));
@@ -179,7 +179,7 @@ public class HttpFileServer {
} else {
HttpCoreContext coreContext = HttpCoreContext.adapt(context);
HttpConnection conn = coreContext.getConnection(HttpConnection.class);
- response.setStatusCode(HttpStatus.SC_OK);
+ response.setCode(HttpStatus.SC_OK);
FileEntity body = new FileEntity(file, ContentType.create("text/html", (Charset) null));
response.setEntity(body);
System.out.println(conn + ": serving file " + file.getPath());
Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpClient.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpClient.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/NHttpClient.java Tue Mar 15 20:35:34 2016
@@ -126,7 +126,7 @@ public class NHttpClient {
@Override
public void completed(final HttpResponse response) {
latch.countDown();
- System.out.println(target + "->" + response.getStatusLine());
+ System.out.println(target + "->" + response.getCode());
}
@Override
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=1735164&r1=1735163&r2=1735164&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 Tue Mar 15 20:35:34 2016
@@ -146,16 +146,16 @@ public class NHttpFileServer {
final HttpResponse response,
final HttpContext context) throws HttpException, IOException {
- String method = request.getRequestLine().getMethod().toUpperCase(Locale.ENGLISH);
+ String method = request.getMethod().toUpperCase(Locale.ENGLISH);
if (!method.equals("GET") && !method.equals("HEAD") && !method.equals("POST")) {
throw new MethodNotSupportedException(method + " method not supported");
}
- String target = request.getRequestLine().getUri();
+ String target = request.getUri();
final File file = new File(this.docRoot, URLDecoder.decode(target, "UTF-8"));
if (!file.exists()) {
- response.setStatusCode(HttpStatus.SC_NOT_FOUND);
+ response.setCode(HttpStatus.SC_NOT_FOUND);
NStringEntity entity = new NStringEntity(
"<html><body><h1>File" + file.getPath() +
" not found</h1></body></html>",
@@ -165,7 +165,7 @@ public class NHttpFileServer {
} else if (!file.canRead() || file.isDirectory()) {
- response.setStatusCode(HttpStatus.SC_FORBIDDEN);
+ response.setCode(HttpStatus.SC_FORBIDDEN);
NStringEntity entity = new NStringEntity(
"<html><body><h1>Access denied</h1></body></html>",
ContentType.create("text/html", "UTF-8"));
@@ -176,7 +176,7 @@ public class NHttpFileServer {
HttpCoreContext coreContext = HttpCoreContext.adapt(context);
HttpConnection conn = coreContext.getConnection(HttpConnection.class);
- response.setStatusCode(HttpStatus.SC_OK);
+ response.setCode(HttpStatus.SC_OK);
NFileEntity body = new NFileEntity(file, ContentType.create("text/html"));
response.setEntity(body);
System.out.println(conn + ": serving file " + file.getPath());
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=1735164&r1=1735163&r2=1735164&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 Tue Mar 15 20:35:34 2016
@@ -31,7 +31,6 @@ import java.io.InterruptedIOException;
import java.net.InetSocketAddress;
import java.net.URI;
import java.nio.ByteBuffer;
-import java.util.Locale;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.hc.core5.http.ConnectionReuseStrategy;
@@ -41,11 +40,9 @@ import org.apache.hc.core5.http.HttpRequ
import org.apache.hc.core5.http.HttpRequestInterceptor;
import org.apache.hc.core5.http.HttpResponse;
import org.apache.hc.core5.http.HttpStatus;
-import org.apache.hc.core5.http.HttpVersion;
import org.apache.hc.core5.http.config.ConnectionConfig;
import org.apache.hc.core5.http.entity.ContentType;
import org.apache.hc.core5.http.impl.DefaultConnectionReuseStrategy;
-import org.apache.hc.core5.http.impl.EnglishReasonPhraseCatalog;
import org.apache.hc.core5.http.impl.nio.BasicAsyncResponseProducer;
import org.apache.hc.core5.http.impl.nio.DefaultHttpClientIODispatch;
import org.apache.hc.core5.http.impl.nio.DefaultHttpServerIODispatch;
@@ -374,8 +371,7 @@ public class NHttpReverseProxy {
if (ex != null) {
System.out.println("[client<-proxy] " + httpExchange.getId() + " " + ex);
int status = HttpStatus.SC_INTERNAL_SERVER_ERROR;
- HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_0, status,
- EnglishReasonPhraseCatalog.INSTANCE.getReason(status, Locale.US));
+ HttpResponse response = new BasicHttpResponse(status);
String message = ex.getMessage();
if (message == null) {
message = "Unexpected error";
@@ -421,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.getRequestLine());
+ System.out.println("[client->proxy] " + this.httpExchange.getId() + " " + request.getMethod() + " " + request.getUri());
this.httpExchange.setRequest(request);
this.executor.execute(
new ProxyRequestProducer(this.httpExchange),
@@ -518,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.getRequestLine());
+ System.out.println("[proxy->origin] " + this.httpExchange.getId() + " " + request.getMethod() + " " + request.getUri());
// Rewrite request!!!!
- BasicHttpRequest newREquest = new BasicHttpRequest(request.getRequestLine());
+ BasicHttpRequest newREquest = new BasicHttpRequest(request.getMethod(), request.getUri());
newREquest.setEntity(request.getEntity());
return newREquest;
}
@@ -600,7 +596,7 @@ public class NHttpReverseProxy {
@Override
public void responseReceived(final HttpResponse response) {
synchronized (this.httpExchange) {
- System.out.println("[proxy<-origin] " + this.httpExchange.getId() + " " + response.getStatusLine());
+ System.out.println("[proxy<-origin] " + this.httpExchange.getId() + " " + response.getCode());
this.httpExchange.setResponse(response);
HttpAsyncExchange responseTrigger = this.httpExchange.getResponseTrigger();
if (responseTrigger != null && !responseTrigger.isCompleted()) {
@@ -667,8 +663,7 @@ public class NHttpReverseProxy {
if (responseTrigger != null && !responseTrigger.isCompleted()) {
System.out.println("[client<-proxy] " + this.httpExchange.getId() + " " + ex);
int status = HttpStatus.SC_INTERNAL_SERVER_ERROR;
- HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_0, status,
- EnglishReasonPhraseCatalog.INSTANCE.getReason(status, Locale.US));
+ HttpResponse response = new BasicHttpResponse(status);
String message = ex.getMessage();
if (message == null) {
message = "Unexpected error";
@@ -725,9 +720,9 @@ public class NHttpReverseProxy {
public HttpResponse generateResponse() {
synchronized (this.httpExchange) {
HttpResponse response = this.httpExchange.getResponse();
- System.out.println("[client<-proxy] " + this.httpExchange.getId() + " " + response.getStatusLine());
+ System.out.println("[client<-proxy] " + this.httpExchange.getId() + " " + response.getCode());
// Rewrite response!!!!
- BasicHttpResponse r = new BasicHttpResponse(response.getStatusLine());
+ BasicHttpResponse r = new BasicHttpResponse(response.getCode());
r.setEntity(response.getEntity());
return r;
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/PipeliningHttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/PipeliningHttpClient.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/PipeliningHttpClient.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/examples/org/apache/hc/core5/http/examples/PipeliningHttpClient.java Tue Mar 15 20:35:34 2016
@@ -132,7 +132,7 @@ public class PipeliningHttpClient {
public void completed(final List<HttpResponse> result) {
latch.countDown();
for (HttpResponse response: result) {
- System.out.println(target + "->" + response.getStatusLine());
+ System.out.println(target + "->" + response.getCode());
}
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpConnection.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpConnection.java Tue Mar 15 20:35:34 2016
@@ -80,6 +80,13 @@ public interface HttpConnection extends
void shutdown() throws IOException;
/**
+ * Returns protocol version used by this connection or {@code null} if unknown.
+ *
+ * @since 5.0
+ */
+ ProtocolVersion getProtocolVersion();
+
+ /**
* Returns a collection of connection metrics.
*
* @return HttpConnectionMetrics
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpMessage.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpMessage.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpMessage.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpMessage.java Tue Mar 15 20:35:34 2016
@@ -36,9 +36,26 @@ package org.apache.hc.core5.http;
public interface HttpMessage<T> extends MessageHead {
/**
- * Returns the protocol version this message is compatible with.
+ * Sets protocol version.
+ * <p>
+ * For incoming messages it represents protocol version this message was transmitted with.
+ * For outgoing messages it represents a hint what protocol version should be used to transmit
+ * the message.
+ *
+ * @since 5.0
*/
- ProtocolVersion getProtocolVersion();
+ void setVersion(ProtocolVersion version);
+
+ /**
+ * Returns protocol version or {@code null} when not available.
+ * <p>
+ * For incoming messages it represents protocol version this message was transmitted with.
+ * For outgoing messages it represents a hint what protocol version should be used to transmit
+ * the message.
+ *
+ * @since 5.0
+ */
+ ProtocolVersion getVersion();
/**
* Adds a header to this message. The header will be appended to the end of
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=1735164&r1=1735163&r2=1735164&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 Tue Mar 15 20:35:34 2016
@@ -37,9 +37,17 @@ package org.apache.hc.core5.http;
public interface HttpRequest extends HttpMessage<HttpEntity> {
/**
- * Returns the request line of this request.
- * @return the request line.
+ * Obtains the method of this request message.
+ *
+ * @return the request method.
*/
- RequestLine getRequestLine();
+ String getMethod();
+
+ /**
+ * Obtains the URI of this request message.
+ *
+ * @return the request URI.
+ */
+ String getUri();
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpRequestFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpRequestFactory.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpRequestFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpRequestFactory.java Tue Mar 15 20:35:34 2016
@@ -34,10 +34,27 @@ package org.apache.hc.core5.http;
*/
public interface HttpRequestFactory {
- HttpRequest newHttpRequest(RequestLine requestline)
- throws MethodNotSupportedException;
+ /**
+ * Creates request message with the given request method and request URI.
+ *
+ * @param transportVersion protocol version this message was transmitted with.
+ * @param method the request method
+ * @param uri the request URI
+ *
+ * @return request message
+ *
+ * @since 5.0
+ */
+ HttpRequest newHttpRequest(ProtocolVersion transportVersion, String method, String uri) throws MethodNotSupportedException;
- HttpRequest newHttpRequest(String method, String uri)
- throws MethodNotSupportedException;
+ /**
+ * Creates request message with the given request method and request URI.
+ *
+ * @param method the request method
+ * @param uri the request URI
+ *
+ * @return request message
+ */
+ HttpRequest newHttpRequest(String method, String uri) throws MethodNotSupportedException;
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpResponse.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpResponse.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpResponse.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpResponse.java Tue Mar 15 20:35:34 2016
@@ -38,76 +38,40 @@ import java.util.Locale;
public interface HttpResponse extends HttpMessage<HttpEntity> {
/**
- * Obtains the code in the status line of this response.
- * The status line can be set using one of the
- * {@link #setStatusLine setStatusLine} methods,
- * or it can be initialized in a constructor.
+ * Obtains the code of this response message.
*
- * @return the status code, or {@code 0} if not yet set
+ * @return the status code.
*/
int getCode();
/**
- * Obtains the status line of this response.
- * The status line can be set using one of the
- * {@link #setStatusLine setStatusLine} methods,
- * or it can be initialized in a constructor.
+ * Updates status code of this response message.
*
- * @return the status line, or {@code null} if not yet set
- */
- StatusLine getStatusLine();
-
- /**
- * Sets the status line of this response.
- *
- * @param statusline the status line of this response
- */
- void setStatusLine(StatusLine statusline);
-
- /**
- * Sets the status line of this response.
- * The reason phrase will be determined based on the current
- * {@link #getLocale locale}.
- *
- * @param ver the HTTP version
- * @param code the status code
- */
- void setStatusLine(ProtocolVersion ver, int code);
-
- /**
- * Sets the status line of this response with a reason phrase.
+ * @param code the HTTP status code.
*
- * @param ver the HTTP version
- * @param code the status code
- * @param reason the reason phrase, or {@code null} to omit
+ * @see HttpStatus
*/
- void setStatusLine(ProtocolVersion ver, int code, String reason);
+ void setCode(int code);
/**
- * Updates the status line of this response with a new status code.
- *
- * @param code the HTTP status code.
+ * Obtains the reason phrase of this response if available.
*
- * @see HttpStatus
- * @see #setStatusLine(StatusLine)
- * @see #setStatusLine(ProtocolVersion,int)
+ * @return the reason phrase.
*/
- void setStatusCode(int code);
+ String getReasonPhrase();
/**
* Updates the status line of this response with a new reason phrase.
*
* @param reason the new reason phrase as a single-line string, or
* {@code null} to unset the reason phrase
- * @see #setStatusLine(StatusLine)
- * @see #setStatusLine(ProtocolVersion,int)
*/
void setReasonPhrase(String reason);
/**
* Obtains the locale of this response.
* The locale is used to determine the reason phrase
- * for the {@link #setStatusCode status code}.
+ * for the {@link #setCode status code}.
* It can be changed using {@link #setLocale setLocale}.
*
* @return the locale of this response, never {@code null}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpResponseFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpResponseFactory.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpResponseFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpResponseFactory.java Tue Mar 15 20:35:34 2016
@@ -27,8 +27,6 @@
package org.apache.hc.core5.http;
-import org.apache.hc.core5.http.protocol.HttpContext;
-
/**
* A factory for {@link HttpResponse HttpResponse} objects.
*
@@ -37,28 +35,25 @@ import org.apache.hc.core5.http.protocol
public interface HttpResponseFactory {
/**
- * Creates a new response from status line elements.
+ * Creates response message with the given code and reason phrase.
*
+ * @param transportVersion protocol version this message was transmitted with.
* @param status the status code
- * @param context the context from which to determine the locale
- * for looking up a reason phrase to the status code, or
- * {@code null} to use the default locale
+ * @param reasonPhrase the reason phrase
+ *
+ * @return response message
*
- * @return the new response with an initialized status line
+ * @since 5.0
*/
- HttpResponse newHttpResponse(int status, HttpContext context);
+ HttpResponse newHttpResponse(ProtocolVersion transportVersion, int status, String reasonPhrase);
/**
- * Creates a new response from a status line.
+ * Creates a new response with the given code.
*
- * @param statusline the status line
- * @param context the context from which to determine the locale
- * for looking up a reason phrase if the status code
- * is updated, or
- * {@code null} to use the default locale
+ * @param status the status code
*
- * @return the new response with the argument status line
+ * @return response message
*/
- HttpResponse newHttpResponse(StatusLine statusline, HttpContext context);
+ HttpResponse newHttpResponse(int status);
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpVersion.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpVersion.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpVersion.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/HttpVersion.java Tue Mar 15 20:35:34 2016
@@ -60,6 +60,9 @@ public final class HttpVersion extends P
public static final HttpVersion HTTP_2_0 = new HttpVersion(2, 0);
public static final HttpVersion HTTP_2 = HTTP_2_0;
+ /** HTTP/1.1 is default */
+ public static final HttpVersion DEFAULT = HTTP_1_1;
+
/**
* Create an HTTP protocol version designator.
*
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultConnectionReuseStrategy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultConnectionReuseStrategy.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultConnectionReuseStrategy.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultConnectionReuseStrategy.java Tue Mar 15 20:35:34 2016
@@ -94,7 +94,6 @@ public class DefaultConnectionReuseStrat
// Check for a self-terminating entity. If the end of the entity will
// be indicated by closing the connection, there is no keep-alive.
- final ProtocolVersion ver = response.getStatusLine().getProtocolVersion();
final Header teh = response.getFirstHeader(HttpHeaders.TRANSFER_ENCODING);
if (teh != null) {
if (!HeaderElements.CHUNKED_ENCODING.equalsIgnoreCase(teh.getValue())) {
@@ -114,6 +113,7 @@ public class DefaultConnectionReuseStrat
connHeaders = response.getHeaders("Proxy-Connection");
}
+ final ProtocolVersion ver = context.getProtocolVersion();
if (connHeaders.length != 0) {
if (ver.greaterEquals(HttpVersion.HTTP_1_1)) {
final Iterator<String> it = new BasicTokenIterator(new BasicHeaderIterator(connHeaders, null));
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultHttpRequestFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultHttpRequestFactory.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultHttpRequestFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultHttpRequestFactory.java Tue Mar 15 20:35:34 2016
@@ -31,9 +31,8 @@ import org.apache.hc.core5.annotation.Im
import org.apache.hc.core5.http.HttpRequest;
import org.apache.hc.core5.http.HttpRequestFactory;
import org.apache.hc.core5.http.MethodNotSupportedException;
-import org.apache.hc.core5.http.RequestLine;
+import org.apache.hc.core5.http.ProtocolVersion;
import org.apache.hc.core5.http.message.BasicHttpRequest;
-import org.apache.hc.core5.util.Args;
/**
* Default factory for creating {@link HttpRequest} objects.
@@ -57,10 +56,6 @@ public class DefaultHttpRequestFactory i
"CONNECT"
};
- public DefaultHttpRequestFactory() {
- super();
- }
-
private static boolean isOneOf(final String[] methods, final String method) {
for (final String method2 : methods) {
if (method2.equalsIgnoreCase(method)) {
@@ -71,24 +66,18 @@ public class DefaultHttpRequestFactory i
}
@Override
- public HttpRequest newHttpRequest(final RequestLine requestline)
- throws MethodNotSupportedException {
- Args.notNull(requestline, "Request line");
- final String method = requestline.getMethod();
+ public HttpRequest newHttpRequest(final ProtocolVersion transportVersion, final String method, final String uri) throws MethodNotSupportedException {
if (isOneOf(SUPPORTED_METHODS, method)) {
- return new BasicHttpRequest(requestline);
+ final HttpRequest request = new BasicHttpRequest(method, uri);
+ request.setVersion(transportVersion);
+ return request;
}
- throw new MethodNotSupportedException(method + " method not supported");
+ throw new MethodNotSupportedException(method + " method not supported");
}
@Override
- public HttpRequest newHttpRequest(final String method, final String uri)
- throws MethodNotSupportedException {
- if (isOneOf(SUPPORTED_METHODS, method)) {
- return new BasicHttpRequest(method, uri);
- }
- throw new MethodNotSupportedException(method
- + " method not supported");
+ public HttpRequest newHttpRequest(final String method, final String uri) throws MethodNotSupportedException {
+ return new BasicHttpRequest(method, uri);
}
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultHttpResponseFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultHttpResponseFactory.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultHttpResponseFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultHttpResponseFactory.java Tue Mar 15 20:35:34 2016
@@ -27,17 +27,12 @@
package org.apache.hc.core5.http.impl;
-import java.util.Locale;
-
import org.apache.hc.core5.annotation.Immutable;
import org.apache.hc.core5.http.HttpResponse;
import org.apache.hc.core5.http.HttpResponseFactory;
-import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.ProtocolVersion;
import org.apache.hc.core5.http.ReasonPhraseCatalog;
-import org.apache.hc.core5.http.StatusLine;
import org.apache.hc.core5.http.message.BasicHttpResponse;
-import org.apache.hc.core5.http.message.BasicStatusLine;
-import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.util.Args;
/**
@@ -50,9 +45,7 @@ public class DefaultHttpResponseFactory
public static final DefaultHttpResponseFactory INSTANCE = new DefaultHttpResponseFactory();
- /** The catalog for looking up reason phrases. */
- protected final ReasonPhraseCatalog reasonCatalog;
-
+ private final ReasonPhraseCatalog reasonCatalog;
/**
* Creates a new response factory with the given catalog.
@@ -71,37 +64,19 @@ public class DefaultHttpResponseFactory
this(EnglishReasonPhraseCatalog.INSTANCE);
}
-
- // non-javadoc, see interface HttpResponseFactory
@Override
- public HttpResponse newHttpResponse(final int status, final HttpContext context) {
- final Locale loc = determineLocale(context);
- final String reason = this.reasonCatalog.getReason(status, loc);
- final StatusLine statusline = new BasicStatusLine(HttpVersion.HTTP_1_1, status, reason);
- return new BasicHttpResponse(statusline, this.reasonCatalog, loc);
+ public HttpResponse newHttpResponse(final ProtocolVersion transportVersion, final int status, final String reasonPhrase) {
+ final HttpResponse response = new BasicHttpResponse(status, reasonPhrase);
+ response.setVersion(transportVersion);
+ if (reasonPhrase != null) {
+ response.setReasonPhrase(reasonPhrase);
+ }
+ return response;
}
-
- // non-javadoc, see interface HttpResponseFactory
@Override
- public HttpResponse newHttpResponse(
- final StatusLine statusline,
- final HttpContext context) {
- Args.notNull(statusline, "Status line");
- return new BasicHttpResponse(statusline, this.reasonCatalog, determineLocale(context));
- }
-
- /**
- * Determines the locale of the response.
- * The implementation in this class always returns the default locale.
- *
- * @param context the context from which to determine the locale, or
- * {@code null} to use the default locale
- *
- * @return the locale for the response, never {@code null}
- */
- protected Locale determineLocale(final HttpContext context) {
- return Locale.getDefault();
+ public HttpResponse newHttpResponse(final int status) {
+ return new BasicHttpResponse(status, this.reasonCatalog, null);
}
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java Tue Mar 15 20:35:34 2016
@@ -44,6 +44,7 @@ import org.apache.hc.core5.http.HttpConn
import org.apache.hc.core5.http.HttpEntity;
import org.apache.hc.core5.http.HttpHeaders;
import org.apache.hc.core5.http.HttpMessage;
+import org.apache.hc.core5.http.ProtocolVersion;
import org.apache.hc.core5.http.TrailerSupplier;
import org.apache.hc.core5.http.config.MessageConstraints;
import org.apache.hc.core5.http.impl.BasicHttpTransportMetrics;
@@ -63,6 +64,8 @@ class BHttpConnectionBase implements BHt
final HttpConnectionMetricsImpl connMetrics;
final AtomicReference<Socket> socketHolder;
+ volatile ProtocolVersion version;
+
BHttpConnectionBase(
final int buffersize,
final int fragmentSizeHint,
@@ -118,6 +121,14 @@ class BHttpConnectionBase implements BHt
return this.socketHolder.get() != null;
}
+ /**
+ * @since 5.0
+ */
+ @Override
+ public ProtocolVersion getProtocolVersion() {
+ return this.version;
+ }
+
Socket getSocket() {
return this.socketHolder.get();
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnection.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpClientConnection.java Tue Mar 15 20:35:34 2016
@@ -187,6 +187,7 @@ public class DefaultBHttpClientConnectio
public HttpResponse receiveResponseHeader() throws HttpException, IOException {
final Socket socket = ensureOpen();
final HttpResponse response = this.responseParser.parse(this.inbuffer, socket.getInputStream());
+ this.version = response.getVersion();
onResponseReceived(response);
if (response.getCode() >= HttpStatus.SC_SUCCESS) {
incrementResponseCount();
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnection.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultBHttpServerConnection.java Tue Mar 15 20:35:34 2016
@@ -131,6 +131,7 @@ public class DefaultBHttpServerConnectio
public HttpRequest receiveRequestHeader() throws HttpException, IOException {
final Socket socket = ensureOpen();
final HttpRequest request = this.requestParser.parse(this.inbuffer, socket.getInputStream());
+ this.version = request.getVersion();
onRequestReceived(request);
incrementRequestCount();
return request;
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpRequestParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpRequestParser.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpRequestParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpRequestParser.java Tue Mar 15 20:35:34 2016
@@ -36,11 +36,11 @@ import org.apache.hc.core5.http.HttpRequ
import org.apache.hc.core5.http.HttpRequestFactory;
import org.apache.hc.core5.http.HttpVersion;
import org.apache.hc.core5.http.ProtocolVersion;
-import org.apache.hc.core5.http.RequestLine;
import org.apache.hc.core5.http.UnsupportedHttpVersionException;
import org.apache.hc.core5.http.config.MessageConstraints;
import org.apache.hc.core5.http.impl.DefaultHttpRequestFactory;
import org.apache.hc.core5.http.message.LineParser;
+import org.apache.hc.core5.http.message.RequestLine;
import org.apache.hc.core5.util.CharArrayBuffer;
/**
@@ -96,11 +96,11 @@ public class DefaultHttpRequestParser ex
@Override
protected HttpRequest createMessage(final CharArrayBuffer buffer) throws IOException, HttpException {
final RequestLine requestLine = getLineParser().parseRequestLine(buffer);
- final ProtocolVersion version = requestLine.getProtocolVersion();
- if (version.greaterEquals(HttpVersion.HTTP_2)) {
- throw new UnsupportedHttpVersionException("Unsupported version: " + version);
+ final ProtocolVersion transportVersion = requestLine.getProtocolVersion();
+ if (transportVersion.greaterEquals(HttpVersion.HTTP_2)) {
+ throw new UnsupportedHttpVersionException("Unsupported version: " + transportVersion);
}
- return this.requestFactory.newHttpRequest(requestLine);
+ return this.requestFactory.newHttpRequest(requestLine.getProtocolVersion(), requestLine.getMethod(), requestLine.getUri());
}
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpRequestWriter.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpRequestWriter.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpRequestWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpRequestWriter.java Tue Mar 15 20:35:34 2016
@@ -31,7 +31,10 @@ import java.io.IOException;
import org.apache.hc.core5.annotation.NotThreadSafe;
import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.ProtocolVersion;
import org.apache.hc.core5.http.message.LineFormatter;
+import org.apache.hc.core5.http.message.RequestLine;
import org.apache.hc.core5.util.CharArrayBuffer;
/**
@@ -61,7 +64,12 @@ public class DefaultHttpRequestWriter ex
@Override
protected void writeHeadLine(
final HttpRequest message, final CharArrayBuffer lineBuf) throws IOException {
- getLineFormatter().formatRequestLine(lineBuf, message.getRequestLine());
+ ProtocolVersion transportVersion = message.getVersion();
+ if (transportVersion == null || transportVersion.greaterEquals(HttpVersion.HTTP_2_0)) {
+ transportVersion = HttpVersion.HTTP_1_1;
+ }
+ getLineFormatter().formatRequestLine(lineBuf,
+ new RequestLine(message.getMethod(), message.getUri(), transportVersion));
}
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseParser.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseParser.java Tue Mar 15 20:35:34 2016
@@ -36,11 +36,11 @@ import org.apache.hc.core5.http.HttpResp
import org.apache.hc.core5.http.HttpVersion;
import org.apache.hc.core5.http.NoHttpResponseException;
import org.apache.hc.core5.http.ProtocolVersion;
-import org.apache.hc.core5.http.StatusLine;
import org.apache.hc.core5.http.UnsupportedHttpVersionException;
import org.apache.hc.core5.http.config.MessageConstraints;
import org.apache.hc.core5.http.impl.DefaultHttpResponseFactory;
import org.apache.hc.core5.http.message.LineParser;
+import org.apache.hc.core5.http.message.StatusLine;
import org.apache.hc.core5.util.CharArrayBuffer;
/**
@@ -96,11 +96,11 @@ public class DefaultHttpResponseParser e
@Override
protected HttpResponse createMessage(final CharArrayBuffer buffer) throws IOException, HttpException {
final StatusLine statusline = getLineParser().parseStatusLine(buffer);
- final ProtocolVersion version = statusline.getProtocolVersion();
- if (version.greaterEquals(HttpVersion.HTTP_2)) {
- throw new UnsupportedHttpVersionException("Unsupported version: " + version);
+ final ProtocolVersion transportVersion = statusline.getProtocolVersion();
+ if (transportVersion.greaterEquals(HttpVersion.HTTP_2)) {
+ throw new UnsupportedHttpVersionException("Unsupported version: " + transportVersion);
}
- return this.responseFactory.newHttpResponse(statusline, null);
+ return this.responseFactory.newHttpResponse(transportVersion, statusline.getStatusCode(), statusline.getReasonPhrase());
}
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseWriter.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseWriter.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/DefaultHttpResponseWriter.java Tue Mar 15 20:35:34 2016
@@ -31,7 +31,10 @@ import java.io.IOException;
import org.apache.hc.core5.annotation.NotThreadSafe;
import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.ProtocolVersion;
import org.apache.hc.core5.http.message.LineFormatter;
+import org.apache.hc.core5.http.message.StatusLine;
import org.apache.hc.core5.util.CharArrayBuffer;
/**
@@ -61,7 +64,12 @@ public class DefaultHttpResponseWriter e
@Override
protected void writeHeadLine(
final HttpResponse message, final CharArrayBuffer lineBuf) throws IOException {
- getLineFormatter().formatStatusLine(lineBuf, message.getStatusLine());
+ ProtocolVersion transportVersion = message.getVersion();
+ if (transportVersion == null || transportVersion.greaterEquals(HttpVersion.HTTP_2_0)) {
+ transportVersion = HttpVersion.HTTP_1_1;
+ }
+ getLineFormatter().formatStatusLine(lineBuf,
+ new StatusLine(transportVersion, message.getCode(), message.getReasonPhrase()));
}
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpRequestExecutor.java Tue Mar 15 20:35:34 2016
@@ -38,6 +38,7 @@ import org.apache.hc.core5.http.HttpRequ
import org.apache.hc.core5.http.HttpResponse;
import org.apache.hc.core5.http.HttpStatus;
import org.apache.hc.core5.http.ProtocolException;
+import org.apache.hc.core5.http.ProtocolVersion;
import org.apache.hc.core5.http.io.HttpClientConnection;
import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.http.protocol.HttpCoreContext;
@@ -92,7 +93,7 @@ public class HttpRequestExecutor {
protected boolean canResponseHaveBody(final HttpRequest request,
final HttpResponse response) {
- if ("HEAD".equalsIgnoreCase(request.getRequestLine().getMethod())) {
+ if ("HEAD".equalsIgnoreCase(request.getMethod())) {
return false;
}
final int status = response.getCode();
@@ -145,7 +146,7 @@ public class HttpRequestExecutor {
final int status = response.getCode();
if (status < HttpStatus.SC_SUCCESS) {
if (status != HttpStatus.SC_CONTINUE) {
- throw new ProtocolException("Unexpected response: " + response.getStatusLine());
+ throw new ProtocolException("Unexpected response: " + response.getCode());
}
// discard 100-continue
response = null;
@@ -233,6 +234,10 @@ public class HttpRequestExecutor {
Args.notNull(response, "HTTP response");
Args.notNull(processor, "HTTP processor");
Args.notNull(context, "HTTP context");
+ final ProtocolVersion transportVersion = response.getVersion();
+ if (transportVersion != null) {
+ context.setProtocolVersion(transportVersion);
+ }
context.setAttribute(HttpCoreContext.HTTP_RESPONSE, response);
processor.process(response, context);
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java Tue Mar 15 20:35:34 2016
@@ -42,6 +42,7 @@ import org.apache.hc.core5.http.HttpStat
import org.apache.hc.core5.http.MethodNotSupportedException;
import org.apache.hc.core5.http.NotImplementedException;
import org.apache.hc.core5.http.ProtocolException;
+import org.apache.hc.core5.http.ProtocolVersion;
import org.apache.hc.core5.http.UnsupportedHttpVersionException;
import org.apache.hc.core5.http.entity.ContentType;
import org.apache.hc.core5.http.entity.EntityUtils;
@@ -164,19 +165,22 @@ public class HttpService {
context.setAttribute(HttpCoreContext.HTTP_CONNECTION, conn);
final HttpRequest request = conn.receiveRequestHeader();
+ final ProtocolVersion transportVersion = request.getVersion();
+ if (transportVersion != null) {
+ context.setProtocolVersion(transportVersion);
+ }
final Header expect = request.getFirstHeader(HttpHeaders.EXPECT);
final boolean expectContinue = expect != null && "100-continue".equalsIgnoreCase(expect.getValue());
- HttpResponse response = null;
-
+ HttpResponse response;
if (expectContinue) {
- response = this.responseFactory.newHttpResponse(HttpStatus.SC_CONTINUE, context);
+ response = this.responseFactory.newHttpResponse(HttpStatus.SC_CONTINUE);
if (this.expectationVerifier != null) {
try {
this.expectationVerifier.verify(request, response, context);
} catch (final HttpException ex) {
- response = this.responseFactory.newHttpResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR, context);
+ response = this.responseFactory.newHttpResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR);
handleException(ex, response);
}
}
@@ -185,7 +189,6 @@ public class HttpService {
// have been met
conn.sendResponseHeader(response);
conn.flush();
- response = null;
} else {
context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
context.setAttribute(HttpCoreContext.HTTP_RESPONSE, response);
@@ -206,14 +209,14 @@ public class HttpService {
context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
this.processor.process(request, context);
- response = this.responseFactory.newHttpResponse(HttpStatus.SC_OK, context);
+ response = this.responseFactory.newHttpResponse(HttpStatus.SC_OK);
doService(request, response, context);
context.setAttribute(HttpCoreContext.HTTP_RESPONSE, response);
this.processor.process(response, context);
} catch (final HttpException ex) {
- response = this.responseFactory.newHttpResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR, context);
+ response = this.responseFactory.newHttpResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR);
handleException(ex, response);
context.setAttribute(HttpCoreContext.HTTP_RESPONSE, response);
this.processor.process(response, context);
@@ -235,7 +238,7 @@ public class HttpService {
}
private boolean canResponseHaveBody(final HttpRequest request, final HttpResponse response) {
- if (request != null && "HEAD".equalsIgnoreCase(request.getRequestLine().getMethod())) {
+ if (request != null && "HEAD".equalsIgnoreCase(request.getMethod())) {
return false;
}
final int status = response.getCode();
@@ -255,15 +258,15 @@ public class HttpService {
*/
protected void handleException(final HttpException ex, final HttpResponse response) {
if (ex instanceof MethodNotSupportedException) {
- response.setStatusCode(HttpStatus.SC_NOT_IMPLEMENTED);
+ response.setCode(HttpStatus.SC_NOT_IMPLEMENTED);
} else if (ex instanceof UnsupportedHttpVersionException) {
- response.setStatusCode(HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED);
+ response.setCode(HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED);
} else if (ex instanceof NotImplementedException) {
- response.setStatusCode(HttpStatus.SC_NOT_IMPLEMENTED);
+ response.setCode(HttpStatus.SC_NOT_IMPLEMENTED);
} else if (ex instanceof ProtocolException) {
- response.setStatusCode(HttpStatus.SC_BAD_REQUEST);
+ response.setCode(HttpStatus.SC_BAD_REQUEST);
} else {
- response.setStatusCode(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+ response.setCode(HttpStatus.SC_INTERNAL_SERVER_ERROR);
}
String message = ex.getMessage();
if (message == null) {
@@ -301,7 +304,7 @@ public class HttpService {
if (handler != null) {
handler.handle(request, response, context);
} else {
- response.setStatusCode(HttpStatus.SC_NOT_IMPLEMENTED);
+ response.setCode(HttpStatus.SC_NOT_IMPLEMENTED);
}
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncClientExchangeHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncClientExchangeHandler.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncClientExchangeHandler.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/BasicAsyncClientExchangeHandler.java Tue Mar 15 20:35:34 2016
@@ -37,6 +37,7 @@ import org.apache.hc.core5.http.Connecti
import org.apache.hc.core5.http.HttpException;
import org.apache.hc.core5.http.HttpRequest;
import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.ProtocolVersion;
import org.apache.hc.core5.http.nio.ContentDecoder;
import org.apache.hc.core5.http.nio.ContentEncoder;
import org.apache.hc.core5.http.nio.HttpAsyncClientExchangeHandler;
@@ -170,6 +171,10 @@ public class BasicAsyncClientExchangeHan
@Override
public void responseReceived(final HttpResponse response) throws IOException, HttpException {
this.localContext.setAttribute(HttpCoreContext.HTTP_RESPONSE, response);
+ final ProtocolVersion transportVersion = response.getVersion();
+ if (transportVersion != null) {
+ this.localContext.setProtocolVersion(transportVersion);
+ }
this.httppocessor.process(response, this.localContext);
this.responseConsumer.responseReceived(response);
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestParser.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestParser.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestParser.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestParser.java Tue Mar 15 20:35:34 2016
@@ -33,11 +33,11 @@ import org.apache.hc.core5.http.HttpRequ
import org.apache.hc.core5.http.HttpRequestFactory;
import org.apache.hc.core5.http.HttpVersion;
import org.apache.hc.core5.http.ProtocolVersion;
-import org.apache.hc.core5.http.RequestLine;
import org.apache.hc.core5.http.UnsupportedHttpVersionException;
import org.apache.hc.core5.http.config.MessageConstraints;
import org.apache.hc.core5.http.impl.DefaultHttpRequestFactory;
import org.apache.hc.core5.http.message.LineParser;
+import org.apache.hc.core5.http.message.RequestLine;
import org.apache.hc.core5.util.CharArrayBuffer;
/**
@@ -88,11 +88,11 @@ public class DefaultHttpRequestParser ex
@Override
protected HttpRequest createMessage(final CharArrayBuffer buffer) throws HttpException {
final RequestLine requestLine = getLineParser().parseRequestLine(buffer);
- final ProtocolVersion version = requestLine.getProtocolVersion();
- if (version.greaterEquals(HttpVersion.HTTP_2)) {
- throw new UnsupportedHttpVersionException("Unsupported version: " + version);
+ final ProtocolVersion transportVersion = requestLine.getProtocolVersion();
+ if (transportVersion.greaterEquals(HttpVersion.HTTP_2)) {
+ throw new UnsupportedHttpVersionException("Unsupported version: " + transportVersion);
}
- return this.requestFactory.newHttpRequest(requestLine);
+ return this.requestFactory.newHttpRequest(transportVersion, requestLine.getMethod(), requestLine.getUri());
}
}
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestWriter.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestWriter.java?rev=1735164&r1=1735163&r2=1735164&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestWriter.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/DefaultHttpRequestWriter.java Tue Mar 15 20:35:34 2016
@@ -31,7 +31,10 @@ import java.io.IOException;
import org.apache.hc.core5.annotation.NotThreadSafe;
import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.ProtocolVersion;
import org.apache.hc.core5.http.message.LineFormatter;
+import org.apache.hc.core5.http.message.RequestLine;
import org.apache.hc.core5.util.CharArrayBuffer;
/**
@@ -65,7 +68,12 @@ public class DefaultHttpRequestWriter ex
@Override
protected void writeHeadLine(final HttpRequest message, final CharArrayBuffer lineBuf) throws IOException {
lineBuf.clear();
- getLineFormatter().formatRequestLine(lineBuf, message.getRequestLine());
+ ProtocolVersion transportVersion = message.getVersion();
+ if (transportVersion == null || transportVersion.greaterEquals(HttpVersion.HTTP_2_0)) {
+ transportVersion = HttpVersion.HTTP_1_1;
+ }
+ getLineFormatter().formatRequestLine(lineBuf,
+ new RequestLine(message.getMethod(), message.getUri(), transportVersion));
}
}