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 2018/08/21 15:01:43 UTC
[32/32] httpcomponents-core git commit: Javadocs for core HTTP APIs
Javadocs for core HTTP APIs
Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/commit/e0592bd2
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/tree/e0592bd2
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/diff/e0592bd2
Branch: refs/heads/api_javadocs
Commit: e0592bd2f2e6f7e44634000bb5ad1933d0b0e5a4
Parents: d7d4f0b
Author: Oleg Kalnichevski <ol...@apache.org>
Authored: Fri Aug 10 17:18:17 2018 +0200
Committer: Oleg Kalnichevski <ol...@apache.org>
Committed: Tue Aug 21 17:00:13 2018 +0200
----------------------------------------------------------------------
.../hc/core5/http/config/CharCodingConfig.java | 2 +-
.../core5/http/impl/BasicEndpointDetails.java | 2 +-
.../hc/core5/http/impl/BasicEntityDetails.java | 2 +-
.../http/impl/BasicHttpConnectionMetrics.java | 2 +-
.../core5/http/impl/DefaultAddressResolver.java | 5 ++
.../hc/core5/http/impl/Http1StreamListener.java | 2 +
.../hc/core5/http/impl/HttpProcessors.java | 2 +
.../core5/http/impl/IncomingEntityDetails.java | 2 +
.../http/impl/bootstrap/AsyncRequester.java | 7 +++
.../impl/bootstrap/AsyncRequesterBootstrap.java | 2 +
.../core5/http/impl/bootstrap/AsyncServer.java | 5 ++
.../impl/bootstrap/AsyncServerBootstrap.java | 2 +
.../core5/http/impl/bootstrap/FilterEntry.java | 2 +-
.../http/impl/bootstrap/HttpAsyncRequester.java | 7 +++
.../http/impl/bootstrap/HttpAsyncServer.java | 7 +++
.../http/impl/bootstrap/HttpRequester.java | 7 +++
.../core5/http/impl/bootstrap/HttpServer.java | 4 ++
.../http/impl/bootstrap/RequestListener.java | 5 +-
.../http/impl/bootstrap/RequesterBootstrap.java | 4 +-
.../http/impl/bootstrap/ServerBootstrap.java | 4 +-
.../http/impl/bootstrap/StandardFilters.java | 6 ++
.../hc/core5/http/impl/bootstrap/Worker.java | 3 -
.../http/impl/bootstrap/WorkerPoolExecutor.java | 3 -
.../core5/http/impl/bootstrap/package-info.java | 2 +-
.../hc/core5/http/impl/io/package-info.java | 4 +-
.../impl/nio/ClientHttp1IOEventHandler.java | 8 +--
.../nio/ClientHttp1IOEventHandlerFactory.java | 4 +-
.../impl/nio/ClientHttp1StreamDuplexer.java | 9 +++
.../nio/ClientHttp1StreamDuplexerFactory.java | 6 +-
.../impl/nio/HttpConnectionEventHandler.java | 7 +++
.../impl/nio/ServerHttp1IOEventHandler.java | 4 +-
.../nio/ServerHttp1IOEventHandlerFactory.java | 4 +-
.../impl/nio/ServerHttp1StreamDuplexer.java | 9 +++
.../nio/ServerHttp1StreamDuplexerFactory.java | 6 +-
.../hc/core5/http/impl/nio/ServerSupport.java | 5 ++
.../hc/core5/http/impl/nio/package-info.java | 32 +++++++++++
.../apache/hc/core5/http/impl/package-info.java | 3 +-
.../hc/core5/http/io/HttpFilterChain.java | 23 ++++++++
.../hc/core5/http/io/HttpFilterHandler.java | 15 +++++
.../io/HttpResponseInformationCallback.java | 2 +-
.../core5/http/io/HttpServerRequestHandler.java | 28 +++++++++
.../apache/hc/core5/http/io/SocketConfig.java | 2 +-
.../io/entity/AbstractImmutableHttpEntity.java | 2 +-
.../hc/core5/http/io/entity/EntityUtils.java | 2 +-
.../hc/core5/http/io/entity/package-info.java | 2 +-
.../apache/hc/core5/http/io/package-info.java | 3 +-
.../support/AbstractHttpServerAuthFilter.java | 40 +++++++++++++
.../BasicHttpServerExpectationDecorator.java | 13 +++++
.../support/BasicHttpServerRequestHandler.java | 4 ++
.../io/support/HttpServerExpectationFilter.java | 19 +++++++
.../support/HttpServerFilterChainElement.java | 5 ++
.../HttpServerFilterChainRequestHandler.java | 3 +
.../http/io/support/TerminalServerFilter.java | 8 ++-
.../hc/core5/http/io/support/package-info.java | 31 ++++++++++
.../hc/core5/http/message/MessageSupport.java | 2 +-
.../http/nio/AsyncClientExchangeHandler.java | 32 ++++++++++-
.../http/nio/AsyncDataExchangeHandler.java | 5 ++
.../hc/core5/http/nio/AsyncEntityConsumer.java | 19 +++++++
.../hc/core5/http/nio/AsyncEntityProducer.java | 5 ++
.../hc/core5/http/nio/AsyncFilterChain.java | 31 ++++++++++
.../hc/core5/http/nio/AsyncFilterHandler.java | 21 +++++++
.../hc/core5/http/nio/AsyncPushConsumer.java | 18 +++++-
.../hc/core5/http/nio/AsyncPushProducer.java | 17 +++++-
.../hc/core5/http/nio/AsyncRequestConsumer.java | 27 ++++++++-
.../hc/core5/http/nio/AsyncRequestProducer.java | 21 ++++++-
.../core5/http/nio/AsyncResponseConsumer.java | 35 +++++++++++-
.../core5/http/nio/AsyncResponseProducer.java | 16 +++++-
.../http/nio/AsyncServerExchangeHandler.java | 11 ++++
.../http/nio/AsyncServerRequestHandler.java | 60 ++++++++++++++++++--
.../hc/core5/http/nio/BasicPushProducer.java | 3 +
.../hc/core5/http/nio/BasicRequestConsumer.java | 3 +
.../hc/core5/http/nio/BasicRequestProducer.java | 6 ++
.../core5/http/nio/BasicResponseConsumer.java | 4 ++
.../core5/http/nio/BasicResponseProducer.java | 3 +
.../hc/core5/http/nio/CapacityChannel.java | 2 +-
.../hc/core5/http/nio/DataStreamChannel.java | 2 +-
.../hc/core5/http/nio/HandlerFactory.java | 10 +++-
.../hc/core5/http/nio/RequestChannel.java | 9 ++-
.../hc/core5/http/nio/ResponseChannel.java | 28 ++++++++-
.../http/nio/command/ExecutableCommand.java | 6 +-
.../nio/command/RequestExecutionCommand.java | 2 +
.../core5/http/nio/command/ShutdownCommand.java | 4 +-
.../entity/AbstractBinAsyncEntityConsumer.java | 17 ++++++
.../entity/AbstractBinAsyncEntityProducer.java | 9 +++
.../nio/entity/AbstractBinDataConsumer.java | 22 ++++++-
.../entity/AbstractCharAsyncEntityConsumer.java | 14 +++++
.../entity/AbstractCharAsyncEntityProducer.java | 9 +++
.../nio/entity/AbstractCharDataConsumer.java | 24 +++++++-
.../nio/entity/BasicAsyncEntityConsumer.java | 7 ++-
.../nio/entity/BasicAsyncEntityProducer.java | 3 +
.../nio/entity/DigestingEntityConsumer.java | 14 +++++
.../nio/entity/DigestingEntityProducer.java | 8 +++
.../http/nio/entity/FileEntityProducer.java | 3 +
.../http/nio/entity/NoopEntityConsumer.java | 2 +
.../nio/entity/StringAsyncEntityConsumer.java | 6 ++
.../nio/entity/StringAsyncEntityProducer.java | 6 ++
.../hc/core5/http/nio/entity/package-info.java | 31 ++++++++++
.../apache/hc/core5/http/nio/package-info.java | 4 +-
.../core5/http/nio/ssl/FixedPortStrategy.java | 2 +
.../core5/http/nio/ssl/SecurePortStrategy.java | 6 ++
.../hc/core5/http/nio/ssl/TlsStrategy.java | 14 ++++-
.../hc/core5/http/nio/ssl/package-info.java | 31 ++++++++++
.../nio/support/AbstractAsyncPushHandler.java | 20 ++++++-
.../support/AbstractAsyncRequesterConsumer.java | 16 ++++++
.../support/AbstractAsyncResponseConsumer.java | 16 ++++++
.../support/AbstractAsyncServerAuthFilter.java | 42 +++++++++++++-
.../support/AbstractServerExchangeHandler.java | 19 +++++++
.../support/AsyncServerExpectationFilter.java | 2 +-
.../support/AsyncServerFilterChainElement.java | 5 ++
...ServerFilterChainExchangeHandlerFactory.java | 6 ++
.../BasicAsyncServerExpectationDecorator.java | 4 ++
.../nio/support/BasicClientExchangeHandler.java | 6 +-
.../nio/support/BasicServerExchangeHandler.java | 3 +
...aultAsyncResponseExchangeHandlerFactory.java | 4 ++
.../ImmediateResponseExchangeHandler.java | 4 ++
.../nio/support/TerminalAsyncServerFilter.java | 4 ++
.../classic/AbstractClassicEntityConsumer.java | 13 +++++
.../classic/AbstractClassicEntityProducer.java | 14 ++++-
.../AbstractClassicServerExchangeHandler.java | 23 ++++++--
.../http/nio/support/classic/package-info.java | 32 +++++++++++
.../hc/core5/http/nio/support/package-info.java | 31 ++++++++++
.../org/apache/hc/core5/http/package-info.java | 2 +-
.../http/protocol/RequestHandlerRegistry.java | 9 ++-
.../hc/core5/http/protocol/package-info.java | 3 +-
.../org/apache/hc/core5/reactor/Command.java | 3 +-
.../hc/core5/reactor/ProtocolIOSession.java | 2 +-
126 files changed, 1215 insertions(+), 94 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/config/CharCodingConfig.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/config/CharCodingConfig.java b/httpcore5/src/main/java/org/apache/hc/core5/http/config/CharCodingConfig.java
index cebf584..5c9e749 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/config/CharCodingConfig.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/config/CharCodingConfig.java
@@ -36,7 +36,7 @@ import org.apache.hc.core5.annotation.ThreadingBehavior;
import org.apache.hc.core5.util.Args;
/**
- * HTTP/1.1 connection configuration.
+ * HTTP/1.1 char coding configuration.
*
* @since 4.3
*/
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicEndpointDetails.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicEndpointDetails.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicEndpointDetails.java
index 154879f..f312bff 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicEndpointDetails.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicEndpointDetails.java
@@ -37,7 +37,7 @@ import org.apache.hc.core5.http.HttpConnectionMetrics;
*
* @since 5.0
*/
-public class BasicEndpointDetails extends EndpointDetails {
+public final class BasicEndpointDetails extends EndpointDetails {
private final HttpConnectionMetrics metrics;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicEntityDetails.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicEntityDetails.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicEntityDetails.java
index fb6179b..597449e 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicEntityDetails.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicEntityDetails.java
@@ -37,7 +37,7 @@ import org.apache.hc.core5.http.ContentType;
*
* @since 5.0
*/
-public class BasicEntityDetails implements EntityDetails {
+public final class BasicEntityDetails implements EntityDetails {
private final long len;
private final ContentType contentType;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicHttpConnectionMetrics.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicHttpConnectionMetrics.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicHttpConnectionMetrics.java
index dbad586..6b51631 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicHttpConnectionMetrics.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/BasicHttpConnectionMetrics.java
@@ -37,7 +37,7 @@ import org.apache.hc.core5.http.io.HttpTransportMetrics;
*
* @since 4.0
*/
-public class BasicHttpConnectionMetrics implements HttpConnectionMetrics {
+public final class BasicHttpConnectionMetrics implements HttpConnectionMetrics {
private final HttpTransportMetrics inTransportMetric;
private final HttpTransportMetrics outTransportMetric;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultAddressResolver.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultAddressResolver.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultAddressResolver.java
index e1563d3..9346abb 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultAddressResolver.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/DefaultAddressResolver.java
@@ -33,6 +33,11 @@ import org.apache.hc.core5.function.Resolver;
import org.apache.hc.core5.http.HttpHost;
import org.apache.hc.core5.http.URIScheme;
+/**
+ * Default {@link HttpHost} to {@link InetSocketAddress} resolver.
+ *
+ * @since 5.0
+ */
public final class DefaultAddressResolver implements Resolver<HttpHost, InetSocketAddress> {
public static final DefaultAddressResolver INSTANCE = new DefaultAddressResolver();
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/Http1StreamListener.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/Http1StreamListener.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/Http1StreamListener.java
index 3741d3a..f1ce523 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/Http1StreamListener.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/Http1StreamListener.java
@@ -27,6 +27,7 @@
package org.apache.hc.core5.http.impl;
import org.apache.hc.core5.annotation.Contract;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.annotation.ThreadingBehavior;
import org.apache.hc.core5.http.HttpConnection;
import org.apache.hc.core5.http.HttpRequest;
@@ -38,6 +39,7 @@ import org.apache.hc.core5.http.HttpResponse;
* @since 5.0
*/
@Contract(threading = ThreadingBehavior.STATELESS)
+@Internal
public interface Http1StreamListener {
void onRequestHead(HttpConnection connection, HttpRequest request);
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/HttpProcessors.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/HttpProcessors.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/HttpProcessors.java
index 803b679..ff73665 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/HttpProcessors.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/HttpProcessors.java
@@ -42,6 +42,8 @@ import org.apache.hc.core5.util.TextUtils;
import org.apache.hc.core5.util.VersionInfo;
/**
+ * Factory class for standard {@link HttpProcessor} instances.
+ *
* @since 5.0
*/
public final class HttpProcessors {
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/IncomingEntityDetails.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/IncomingEntityDetails.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/IncomingEntityDetails.java
index 010132c..9712e40 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/IncomingEntityDetails.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/IncomingEntityDetails.java
@@ -30,6 +30,7 @@ package org.apache.hc.core5.http.impl;
import java.util.Collections;
import java.util.Set;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.http.EntityDetails;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.HttpHeaders;
@@ -42,6 +43,7 @@ import org.apache.hc.core5.util.Args;
*
* @since 5.0
*/
+@Internal
public class IncomingEntityDetails implements EntityDetails {
private final MessageHeaders message;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncRequester.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncRequester.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncRequester.java
index ca5a767..1e196c2 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncRequester.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncRequester.java
@@ -32,6 +32,7 @@ import java.net.InetSocketAddress;
import java.util.List;
import java.util.concurrent.Future;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.concurrent.DefaultThreadFactory;
import org.apache.hc.core5.concurrent.FutureCallback;
import org.apache.hc.core5.function.Callback;
@@ -52,11 +53,17 @@ import org.apache.hc.core5.reactor.IOSessionListener;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.TimeValue;
+/**
+ * Protocol agnostic client side I/O session initiator.
+ *
+ * @since 5.0
+ */
public class AsyncRequester extends AbstractConnectionInitiatorBase implements IOReactorService {
private final DefaultConnectingIOReactor ioReactor;
private final Resolver<HttpHost, InetSocketAddress> addressResolver;
+ @Internal
public AsyncRequester(
final IOEventHandlerFactory eventHandlerFactory,
final IOReactorConfig ioReactorConfig,
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncRequesterBootstrap.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncRequesterBootstrap.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncRequesterBootstrap.java
index ca77d02..8f154e3 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncRequesterBootstrap.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncRequesterBootstrap.java
@@ -52,6 +52,8 @@ import org.apache.hc.core5.reactor.IOSessionListener;
import org.apache.hc.core5.util.Timeout;
/**
+ * {@link HttpAsyncRequester} bootstrap.
+ *
* @since 5.0
*/
public class AsyncRequesterBootstrap {
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServer.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServer.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServer.java
index 7e1d6d4..04a4630 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServer.java
@@ -33,6 +33,7 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.Future;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.concurrent.DefaultThreadFactory;
import org.apache.hc.core5.concurrent.FutureCallback;
import org.apache.hc.core5.function.Callback;
@@ -51,10 +52,14 @@ import org.apache.hc.core5.reactor.IOSessionListener;
import org.apache.hc.core5.reactor.ListenerEndpoint;
import org.apache.hc.core5.util.TimeValue;
+/**
+ * Protocol agnostic server side I/O session handler.
+ */
public class AsyncServer extends AbstractConnectionInitiatorBase implements IOReactorService, ConnectionAcceptor {
private final DefaultListeningIOReactor ioReactor;
+ @Internal
public AsyncServer(
final IOEventHandlerFactory eventHandlerFactory,
final IOReactorConfig ioReactorConfig,
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServerBootstrap.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServerBootstrap.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServerBootstrap.java
index 0ed0a31..3cc7d3f 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServerBootstrap.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServerBootstrap.java
@@ -66,6 +66,8 @@ import org.apache.hc.core5.reactor.IOSessionListener;
import org.apache.hc.core5.util.Args;
/**
+ * {@link HttpAsyncServer} bootstrap.
+ *
* @since 5.0
*/
public class AsyncServerBootstrap {
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/FilterEntry.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/FilterEntry.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/FilterEntry.java
index e15adf8..7f2f99c 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/FilterEntry.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/FilterEntry.java
@@ -27,7 +27,7 @@
package org.apache.hc.core5.http.impl.bootstrap;
-class FilterEntry<T> {
+final class FilterEntry<T> {
enum Postion {BEFORE, AFTER, REPLACE, FIRST, LAST}
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpAsyncRequester.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpAsyncRequester.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpAsyncRequester.java
index 00ffc4a..4b13696 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpAsyncRequester.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpAsyncRequester.java
@@ -34,6 +34,7 @@ import java.util.Set;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicReference;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.concurrent.BasicFuture;
import org.apache.hc.core5.concurrent.ComplexFuture;
import org.apache.hc.core5.concurrent.FutureCallback;
@@ -80,6 +81,8 @@ import org.apache.hc.core5.util.TimeValue;
import org.apache.hc.core5.util.Timeout;
/**
+ * HTTP/1.1 client side message exchange initiator.
+ *
* @since 5.0
*/
public class HttpAsyncRequester extends AsyncRequester implements ConnPoolControl<HttpHost> {
@@ -87,6 +90,10 @@ public class HttpAsyncRequester extends AsyncRequester implements ConnPoolContro
private final ManagedConnPool<HttpHost, IOSession> connPool;
private final TlsStrategy tlsStrategy;
+ /**
+ * Use {@link AsyncRequesterBootstrap} to create instances of this class.
+ */
+ @Internal
public HttpAsyncRequester(
final IOReactorConfig ioReactorConfig,
final IOEventHandlerFactory eventHandlerFactory,
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpAsyncServer.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpAsyncServer.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpAsyncServer.java
index c6d0fd6..d4e848f 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpAsyncServer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpAsyncServer.java
@@ -26,6 +26,7 @@
*/
package org.apache.hc.core5.http.impl.bootstrap;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.function.Callback;
import org.apache.hc.core5.function.Decorator;
import org.apache.hc.core5.http.nio.command.ShutdownCommand;
@@ -37,10 +38,16 @@ import org.apache.hc.core5.reactor.IOSession;
import org.apache.hc.core5.reactor.IOSessionListener;
/**
+ * HTTP/1.1 server side message exchange handler.
+ *
* @since 5.0
*/
public class HttpAsyncServer extends AsyncServer {
+ /**
+ * Use {@link AsyncServerBootstrap} to create instances of this class.
+ */
+ @Internal
public HttpAsyncServer(
final IOEventHandlerFactory eventHandlerFactory,
final IOReactorConfig ioReactorConfig,
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpRequester.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpRequester.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpRequester.java
index 16c8dc3..dfe6d0e 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpRequester.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpRequester.java
@@ -40,6 +40,7 @@ import java.util.concurrent.atomic.AtomicReference;
import javax.net.ssl.SSLSocketFactory;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.function.Resolver;
import org.apache.hc.core5.http.ClassicHttpRequest;
import org.apache.hc.core5.http.ClassicHttpResponse;
@@ -77,6 +78,8 @@ import org.apache.hc.core5.util.TimeValue;
import org.apache.hc.core5.util.Timeout;
/**
+ * HTTP/1.1 client side message exchange initiator.
+ *
* @since 5.0
*/
public class HttpRequester implements ConnPoolControl<HttpHost>, ModalCloseable {
@@ -89,6 +92,10 @@ public class HttpRequester implements ConnPoolControl<HttpHost>, ModalCloseable
private final SSLSocketFactory sslSocketFactory;
private final Resolver<HttpHost, InetSocketAddress> addressResolver;
+ /**
+ * Use {@link RequesterBootstrap} to create instances of this class.
+ */
+ @Internal
public HttpRequester(
final HttpRequestExecutor requestExecutor,
final HttpProcessor httpProcessor,
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java
index a71c1cb..ae87342 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/HttpServer.java
@@ -39,6 +39,7 @@ import javax.net.ServerSocketFactory;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.concurrent.DefaultThreadFactory;
import org.apache.hc.core5.http.ExceptionListener;
import org.apache.hc.core5.http.URIScheme;
@@ -56,6 +57,8 @@ import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.TimeValue;
/**
+ * HTTP/1.1 server side message exchange handler.
+ *
* @since 4.4
*/
public class HttpServer implements ModalCloseable {
@@ -78,6 +81,7 @@ public class HttpServer implements ModalCloseable {
private volatile ServerSocket serverSocket;
private volatile RequestListener requestListener;
+ @Internal
public HttpServer(
final int port,
final HttpService httpService,
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequestListener.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequestListener.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequestListener.java
index 39def63..6f49ac3 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequestListener.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequestListener.java
@@ -33,14 +33,11 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.hc.core5.http.ExceptionListener;
-import org.apache.hc.core5.http.io.SocketConfig;
import org.apache.hc.core5.http.impl.io.HttpService;
import org.apache.hc.core5.http.io.HttpConnectionFactory;
import org.apache.hc.core5.http.io.HttpServerConnection;
+import org.apache.hc.core5.http.io.SocketConfig;
-/**
- * @since 4.4
- */
class RequestListener implements Runnable {
private final SocketConfig socketConfig;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequesterBootstrap.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequesterBootstrap.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequesterBootstrap.java
index cdc18bb..0513d1d 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequesterBootstrap.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/RequesterBootstrap.java
@@ -33,7 +33,6 @@ import org.apache.hc.core5.http.ConnectionReuseStrategy;
import org.apache.hc.core5.http.HttpHost;
import org.apache.hc.core5.http.config.CharCodingConfig;
import org.apache.hc.core5.http.config.H1Config;
-import org.apache.hc.core5.http.io.SocketConfig;
import org.apache.hc.core5.http.impl.DefaultAddressResolver;
import org.apache.hc.core5.http.impl.DefaultConnectionReuseStrategy;
import org.apache.hc.core5.http.impl.Http1StreamListener;
@@ -42,6 +41,7 @@ import org.apache.hc.core5.http.impl.io.DefaultBHttpClientConnectionFactory;
import org.apache.hc.core5.http.impl.io.HttpRequestExecutor;
import org.apache.hc.core5.http.io.HttpClientConnection;
import org.apache.hc.core5.http.io.HttpConnectionFactory;
+import org.apache.hc.core5.http.io.SocketConfig;
import org.apache.hc.core5.http.protocol.HttpProcessor;
import org.apache.hc.core5.pool.ConnPoolListener;
import org.apache.hc.core5.pool.LaxConnPool;
@@ -52,6 +52,8 @@ import org.apache.hc.core5.pool.StrictConnPool;
import org.apache.hc.core5.util.Timeout;
/**
+ * {@link HttpRequester} bootstrap.
+ *
* @since 5.0
*/
public class RequesterBootstrap {
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/ServerBootstrap.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/ServerBootstrap.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/ServerBootstrap.java
index 0c875a2..629e6c7 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/ServerBootstrap.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/ServerBootstrap.java
@@ -42,7 +42,6 @@ import org.apache.hc.core5.http.URIScheme;
import org.apache.hc.core5.http.config.CharCodingConfig;
import org.apache.hc.core5.http.config.H1Config;
import org.apache.hc.core5.http.config.NamedElementChain;
-import org.apache.hc.core5.http.io.SocketConfig;
import org.apache.hc.core5.http.impl.DefaultConnectionReuseStrategy;
import org.apache.hc.core5.http.impl.Http1StreamListener;
import org.apache.hc.core5.http.impl.HttpProcessors;
@@ -54,6 +53,7 @@ import org.apache.hc.core5.http.io.HttpConnectionFactory;
import org.apache.hc.core5.http.io.HttpFilterHandler;
import org.apache.hc.core5.http.io.HttpRequestHandler;
import org.apache.hc.core5.http.io.HttpServerRequestHandler;
+import org.apache.hc.core5.http.io.SocketConfig;
import org.apache.hc.core5.http.io.support.BasicHttpServerExpectationDecorator;
import org.apache.hc.core5.http.io.support.BasicHttpServerRequestHandler;
import org.apache.hc.core5.http.io.support.HttpServerExpectationFilter;
@@ -67,6 +67,8 @@ import org.apache.hc.core5.net.InetAddressUtils;
import org.apache.hc.core5.util.Args;
/**
+ * {@link HttpServer} bootstrap.
+ *
* @since 4.4
*/
public class ServerBootstrap {
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/StandardFilters.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/StandardFilters.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/StandardFilters.java
index 1aaca85..9864901 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/StandardFilters.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/StandardFilters.java
@@ -27,6 +27,12 @@
package org.apache.hc.core5.http.impl.bootstrap;
+/**
+ * Filters supported by async and classic server implementations
+ *
+ * @see AsyncServerBootstrap
+ * @see ServerBootstrap
+ */
public enum StandardFilters {
EXPECT_CONTINUE, MAIN_HANDLER
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/Worker.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/Worker.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/Worker.java
index b943e68..8d6a883 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/Worker.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/Worker.java
@@ -33,9 +33,6 @@ import org.apache.hc.core5.http.protocol.BasicHttpContext;
import org.apache.hc.core5.http.protocol.HttpCoreContext;
import org.apache.hc.core5.io.CloseMode;
-/**
- * @since 4.4
- */
class Worker implements Runnable {
private final HttpService httpservice;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/WorkerPoolExecutor.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/WorkerPoolExecutor.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/WorkerPoolExecutor.java
index fde6d0c..15f2b92 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/WorkerPoolExecutor.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/WorkerPoolExecutor.java
@@ -35,9 +35,6 @@ import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
-/**
- * @since 4.4
- */
class WorkerPoolExecutor extends ThreadPoolExecutor {
private final Map<Worker, Boolean> workerSet;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/package-info.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/package-info.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/package-info.java
index 632bd0d..1070ff9 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/package-info.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/package-info.java
@@ -26,6 +26,6 @@
*/
/**
- * HTTP requester and server bootstrap.
+ * HTTP/1.1 requester and server bootstrap.
*/
package org.apache.hc.core5.http.impl.bootstrap;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/package-info.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/package-info.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/package-info.java
index 4b8027c..6e8bed7 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/package-info.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/package-info.java
@@ -26,7 +26,7 @@
*/
/**
- * Default implementations of message parses and writers
- * for synchronous, blocking communication.
+ * Default implementation of HTTP/1.1 transport based on the classic
+ * (blocking) I/O model.
*/
package org.apache.hc.core5.http.impl.io;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1IOEventHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1IOEventHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1IOEventHandler.java
index 1800d4b..013f599 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1IOEventHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1IOEventHandler.java
@@ -27,15 +27,13 @@
package org.apache.hc.core5.http.impl.nio;
-import org.apache.hc.core5.annotation.Contract;
-import org.apache.hc.core5.annotation.ThreadingBehavior;
-
/**
- * {@link org.apache.hc.core5.reactor.IOEventHandler} that implements client side HTTP/1.1 messaging protocol.
+ * {@link org.apache.hc.core5.reactor.IOEventHandler} that implements
+ * client side HTTP/1.1 messaging protocol with support for
+ * full duplex message transmission.
*
* @since 5.0
*/
-@Contract(threading = ThreadingBehavior.IMMUTABLE_CONDITIONAL)
public class ClientHttp1IOEventHandler extends AbstractHttp1IOEventHandler {
public ClientHttp1IOEventHandler(final ClientHttp1StreamDuplexer streamDuplexer) {
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1IOEventHandlerFactory.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1IOEventHandlerFactory.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1IOEventHandlerFactory.java
index 6d94c57..5055a95 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1IOEventHandlerFactory.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1IOEventHandlerFactory.java
@@ -35,9 +35,11 @@ import org.apache.hc.core5.reactor.ProtocolIOSession;
import org.apache.hc.core5.util.Args;
/**
+ * {@link ClientHttp1IOEventHandler} factory.
+ *
* @since 5.0
*/
-@Contract(threading = ThreadingBehavior.IMMUTABLE)
+@Contract(threading = ThreadingBehavior.IMMUTABLE_CONDITIONAL)
public class ClientHttp1IOEventHandlerFactory implements IOEventHandlerFactory {
private final ClientHttp1StreamDuplexerFactory streamDuplexerFactory;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamDuplexer.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamDuplexer.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamDuplexer.java
index c3bdcfa..6280276 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamDuplexer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamDuplexer.java
@@ -35,6 +35,7 @@ import java.util.List;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.http.ConnectionClosedException;
import org.apache.hc.core5.http.ConnectionReuseStrategy;
import org.apache.hc.core5.http.ContentLengthStrategy;
@@ -68,6 +69,14 @@ import org.apache.hc.core5.reactor.ProtocolIOSession;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.Asserts;
+/**
+ * I/O event handler for events fired by {@link ProtocolIOSession} that implements
+ * client side HTTP/1.1 messaging protocol with support for full duplex message
+ * transmission.
+ *
+ * @since 5.0
+ */
+@Internal
public class ClientHttp1StreamDuplexer extends AbstractHttp1StreamDuplexer<HttpResponse, HttpRequest> {
private final HttpProcessor httpProcessor;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamDuplexerFactory.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamDuplexerFactory.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamDuplexerFactory.java
index 0272faa..1f54f38 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamDuplexerFactory.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ClientHttp1StreamDuplexerFactory.java
@@ -28,6 +28,7 @@
package org.apache.hc.core5.http.impl.nio;
import org.apache.hc.core5.annotation.Contract;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.annotation.ThreadingBehavior;
import org.apache.hc.core5.http.ConnectionReuseStrategy;
import org.apache.hc.core5.http.ContentLengthStrategy;
@@ -45,9 +46,12 @@ import org.apache.hc.core5.reactor.ProtocolIOSession;
import org.apache.hc.core5.util.Args;
/**
+ * {@link ClientHttp1StreamDuplexer} factory.
+ *
* @since 5.0
*/
-@Contract(threading = ThreadingBehavior.IMMUTABLE)
+@Contract(threading = ThreadingBehavior.IMMUTABLE_CONDITIONAL)
+@Internal
public final class ClientHttp1StreamDuplexerFactory {
private final HttpProcessor httpProcessor;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpConnectionEventHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpConnectionEventHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpConnectionEventHandler.java
index a3fcf58..e378781 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpConnectionEventHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/HttpConnectionEventHandler.java
@@ -26,8 +26,15 @@
*/
package org.apache.hc.core5.http.impl.nio;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.http.HttpConnection;
import org.apache.hc.core5.reactor.IOEventHandler;
+/**
+ * {@link IOEventHandler} that also exposes {@link HttpConnection} properties.
+ *
+ * @since 5.0
+ */
+@Internal
public interface HttpConnectionEventHandler extends IOEventHandler, HttpConnection {
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandler.java
index 57218dd..5ec1080 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandler.java
@@ -31,7 +31,9 @@ import org.apache.hc.core5.annotation.Contract;
import org.apache.hc.core5.annotation.ThreadingBehavior;
/**
- * {@link org.apache.hc.core5.reactor.IOEventHandler} that implements server side HTTP/1.1 messaging protocol.
+ * {@link org.apache.hc.core5.reactor.IOEventHandler} that implements
+ * server side HTTP/1.1 messaging protocol with support for
+ * full duplex message transmission.
*
* @since 5.0
*/
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandlerFactory.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandlerFactory.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandlerFactory.java
index ee84dfa..7a47a1d 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandlerFactory.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1IOEventHandlerFactory.java
@@ -37,9 +37,11 @@ import org.apache.hc.core5.reactor.ProtocolIOSession;
import org.apache.hc.core5.util.Args;
/**
+ * {@link ServerHttp1IOEventHandler} factory.
+ *
* @since 5.0
*/
-@Contract(threading = ThreadingBehavior.IMMUTABLE)
+@Contract(threading = ThreadingBehavior.IMMUTABLE_CONDITIONAL)
public class ServerHttp1IOEventHandlerFactory implements IOEventHandlerFactory {
private final ServerHttp1StreamDuplexerFactory streamDuplexerFactory;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamDuplexer.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamDuplexer.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamDuplexer.java
index edfca1e..1398548 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamDuplexer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamDuplexer.java
@@ -35,6 +35,7 @@ import java.util.List;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.http.ConnectionClosedException;
import org.apache.hc.core5.http.ConnectionReuseStrategy;
import org.apache.hc.core5.http.ContentLengthStrategy;
@@ -67,6 +68,14 @@ import org.apache.hc.core5.reactor.ProtocolIOSession;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.Asserts;
+/**
+ * I/O event handler for events fired by {@link ProtocolIOSession} that implements
+ * server side HTTP/1.1 messaging protocol with support for full duplex message
+ * transmission.
+ *
+ * @since 5.0
+ */
+@Internal
public class ServerHttp1StreamDuplexer extends AbstractHttp1StreamDuplexer<HttpRequest, HttpResponse> {
private final String scheme;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamDuplexerFactory.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamDuplexerFactory.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamDuplexerFactory.java
index e92cd0a..b34c8e5 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamDuplexerFactory.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamDuplexerFactory.java
@@ -28,6 +28,7 @@
package org.apache.hc.core5.http.impl.nio;
import org.apache.hc.core5.annotation.Contract;
+import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.annotation.ThreadingBehavior;
import org.apache.hc.core5.http.ConnectionReuseStrategy;
import org.apache.hc.core5.http.ContentLengthStrategy;
@@ -47,9 +48,12 @@ import org.apache.hc.core5.reactor.ProtocolIOSession;
import org.apache.hc.core5.util.Args;
/**
+ * {@link ServerHttp1StreamDuplexer} factory.
+ *
* @since 5.0
*/
-@Contract(threading = ThreadingBehavior.IMMUTABLE)
+@Contract(threading = ThreadingBehavior.IMMUTABLE_CONDITIONAL)
+@Internal
public final class ServerHttp1StreamDuplexerFactory {
private final HttpProcessor httpProcessor;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerSupport.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerSupport.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerSupport.java
index 5cf9f78..c6d0c56 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerSupport.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerSupport.java
@@ -38,6 +38,11 @@ import org.apache.hc.core5.http.UnsupportedHttpVersionException;
import org.apache.hc.core5.http.nio.AsyncResponseProducer;
import org.apache.hc.core5.http.nio.BasicResponseProducer;
+/**
+ * HTTP Server support methods.
+ *
+ * @since 5.0
+ */
@Internal
public class ServerSupport {
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/package-info.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/package-info.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/package-info.java
new file mode 100644
index 0000000..02424b5
--- /dev/null
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/package-info.java
@@ -0,0 +1,32 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+/**
+ * Default implementation of HTTP/1.1 transport based on
+ * the asynchronous (non-blocking) I/O model.
+ */
+package org.apache.hc.core5.http.impl.nio;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/impl/package-info.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/package-info.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/package-info.java
index 0c0fbb4..b408113 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/package-info.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/package-info.java
@@ -26,7 +26,6 @@
*/
/**
- * Default implementations of HTTP connections for synchronous,
- * blocking communication.
+ * Default implementations of core HTTP APIs.
*/
package org.apache.hc.core5.http.impl;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpFilterChain.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpFilterChain.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpFilterChain.java
index f863307..0d81a6f 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpFilterChain.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpFilterChain.java
@@ -36,19 +36,42 @@ import org.apache.hc.core5.http.HttpException;
import org.apache.hc.core5.http.protocol.HttpContext;
/**
+ * HttpFilterChain represents a single element in the server side request processing chain.
+ *
* @since 5.0
*/
@Contract(threading = ThreadingBehavior.STATELESS)
public interface HttpFilterChain {
+ /**
+ * Response trigger that can be used to generate the final HTTP response
+ * and terminate HTTP request processing.
+ */
interface ResponseTrigger {
+ /**
+ * Sends an intermediate informational HTTP response to the client.
+ *
+ * @param response an intermediate (1xx) HTTP response.
+ */
void sendInformation(ClassicHttpResponse response) throws HttpException, IOException;
+ /**
+ * Sends a final HTTP response to the client.
+ *
+ * @param response a final (non 1xx) HTTP response.
+ */
void submitResponse(ClassicHttpResponse response) throws HttpException, IOException;
}
+ /**
+ * Proceeds to the next element in the request processing chain.
+ *
+ * @param request the actual request.
+ * @param responseTrigger the response trigger.
+ * @param context the actual execution context.
+ */
void proceed(
ClassicHttpRequest request,
ResponseTrigger responseTrigger,
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpFilterHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpFilterHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpFilterHandler.java
index 4409784..10bec16 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpFilterHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpFilterHandler.java
@@ -35,11 +35,26 @@ import org.apache.hc.core5.http.HttpException;
import org.apache.hc.core5.http.protocol.HttpContext;
/**
+ * HttpFilterHandler represents a routine for handling all incoming requests
+ * in the server side request processing chain.
+ *
* @since 5.0
*/
@Contract(threading = ThreadingBehavior.STATELESS)
public interface HttpFilterHandler {
+ /**
+ * Processes the incoming HTTP request and if processing has been completed
+ * submits a final response to the client. The handler must not use
+ * the response trigger after passing control to the next filter with the
+ * {@link HttpFilterChain#proceed(ClassicHttpRequest, HttpFilterChain.ResponseTrigger, HttpContext)}
+ * method.
+ *
+ * @param request the actual request.
+ * @param responseTrigger the response trigger.
+ * @param context the actual execution context.
+ * @param chain the next element in the request processing chain.
+ */
void handle(
ClassicHttpRequest request,
HttpFilterChain.ResponseTrigger responseTrigger,
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpResponseInformationCallback.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpResponseInformationCallback.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpResponseInformationCallback.java
index 76e5c97..394c537 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpResponseInformationCallback.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpResponseInformationCallback.java
@@ -33,7 +33,7 @@ import org.apache.hc.core5.http.HttpResponse;
import org.apache.hc.core5.http.protocol.HttpContext;
/**
- * Information message callback.
+ * Informational (1xx) HTTP response callback.
*
* @since 5.0
*/
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpServerRequestHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpServerRequestHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpServerRequestHandler.java
index 648b781..8d07104 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpServerRequestHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/HttpServerRequestHandler.java
@@ -36,19 +36,47 @@ import org.apache.hc.core5.http.HttpException;
import org.apache.hc.core5.http.protocol.HttpContext;
/**
+ * HttpServerRequestHandler represents a routine for processing of a specific group
+ * of HTTP requests. Request execution filters are designed to take care of protocol
+ * specific aspects, whereas individual request handlers are expected to take
+ * care of application specific HTTP processing. The main purpose of a request
+ * handler is to generate a response object with a content entity to be sent
+ * back to the client in response to the given request.
+ *
* @since 5.0
*/
@Contract(threading = ThreadingBehavior.STATELESS)
public interface HttpServerRequestHandler {
+ /**
+ * Response trigger that can be used to submit a final HTTP response
+ * and terminate HTTP request processing.
+ */
interface ResponseTrigger {
+ /**
+ * Sends an intermediate informational HTTP response to the client.
+ *
+ * @param response the intermediate (1xx) HTTP response
+ */
void sendInformation(ClassicHttpResponse response) throws HttpException, IOException;
+ /**
+ * Sends a final HTTP response to the client.
+ *
+ * @param response the final (non 1xx) HTTP response
+ */
void submitResponse(ClassicHttpResponse response) throws HttpException, IOException;
}
+ /**
+ * Handles the request and submits a final response to be sent back to the client.
+ *
+ * @param request the actual request.
+ * @param responseTrigger the response trigger.
+ * @param context the actual execution context.
+ */
void handle(
ClassicHttpRequest request,
ResponseTrigger responseTrigger,
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/SocketConfig.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/SocketConfig.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/SocketConfig.java
index 65fc3b5..8afa462 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/SocketConfig.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/SocketConfig.java
@@ -36,7 +36,7 @@ import org.apache.hc.core5.util.TimeValue;
import org.apache.hc.core5.util.Timeout;
/**
- * Socket configuration.
+ * Classic I/O network socket configuration.
*
* @since 4.3
*/
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/AbstractImmutableHttpEntity.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/AbstractImmutableHttpEntity.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/AbstractImmutableHttpEntity.java
index 1ec31ee..bbc6f53 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/AbstractImmutableHttpEntity.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/AbstractImmutableHttpEntity.java
@@ -39,7 +39,7 @@ import org.apache.hc.core5.util.Args;
*
* @since 5.0
*/
-public abstract class AbstractImmutableHttpEntity implements HttpEntity, HttpContentProducer {
+public abstract class AbstractImmutableHttpEntity implements HttpEntity {
static final int OUTPUT_BUFFER_SIZE = 4096;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/EntityUtils.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/EntityUtils.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/EntityUtils.java
index 1873af8..a806ead 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/EntityUtils.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/EntityUtils.java
@@ -49,7 +49,7 @@ import org.apache.hc.core5.util.ByteArrayBuffer;
import org.apache.hc.core5.util.CharArrayBuffer;
/**
- * Static helpers for dealing with {@link HttpEntity}s.
+ * Support methods for {@link HttpEntity}.
*
* @since 4.0
*/
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/package-info.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/package-info.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/package-info.java
index 5f9fef2..f350a77 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/package-info.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/entity/package-info.java
@@ -26,6 +26,6 @@
*/
/**
- * Core HTTP entity implementations.
+ * HTTP message entity APIs for the classic (blocking) I/O model.
*/
package org.apache.hc.core5.http.io.entity;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/package-info.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/package-info.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/package-info.java
index d0f516c..2372cc8 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/package-info.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/package-info.java
@@ -26,7 +26,6 @@
*/
/**
- * HTTP message parser and writer APIs for synchronous, blocking
- * communication.
+ * Core HTTP transport APIs for the classic (blocking) I/O model.
*/
package org.apache.hc.core5.http.io;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/AbstractHttpServerAuthFilter.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/AbstractHttpServerAuthFilter.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/AbstractHttpServerAuthFilter.java
index a000c27..7eae508 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/AbstractHttpServerAuthFilter.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/AbstractHttpServerAuthFilter.java
@@ -47,6 +47,10 @@ import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.net.URIAuthority;
/**
+ * Abstract HTTP request filter that implements standard HTTP authentication handshake.
+ *
+ * @param <T> authorization token representation.
+ *
* @since 5.0
*/
@Contract(threading = ThreadingBehavior.STATELESS)
@@ -58,12 +62,48 @@ public abstract class AbstractHttpServerAuthFilter<T> implements HttpFilterHandl
this.respondImmediately = respondImmediately;
}
+ /**
+ * Parses authorization header value into an authentication token sent by the client
+ * as a response to an authentication challenge.
+ *
+ * @param authorizationValue the authorization header value.
+ * @param context the actual execution context.
+ * @return authorization token
+ */
protected abstract T parseChallengeResponse(String authorizationValue, HttpContext context) throws HttpException;
+ /**
+ * Authenticates the client using the authentication token sent by the client
+ * as a response to an authentication challenge.
+ *
+ * @param challengeResponse the authentication token sent by the client
+ * as a response to an authentication challenge.
+ * @param authority the URI authority.
+ * @param requestUri the request URI.
+ * @param context the actual execution context.
+ * @return {@code true} if the client could be successfully authenticated {@code false} otherwise.
+ */
protected abstract boolean authenticate(T challengeResponse, URIAuthority authority, String requestUri, HttpContext context);
+ /**
+ * Generates an authentication challenge in case of unsuccessful authentication.
+ *
+ * @param challengeResponse the authentication token sent by the client
+ * as a response to an authentication challenge
+ * or {@code null} if the client has not sent any.
+ * @param authority the URI authority.
+ * @param requestUri the request URI.
+ * @param context the actual execution context.
+ * @return an authorization challenge value.
+ */
protected abstract String generateChallenge(T challengeResponse, URIAuthority authority, String requestUri, HttpContext context);
+ /**
+ * Generates response body for UNAUTHORIZED response.
+ *
+ * @param unauthorized the response to return as a result of authentication failure.
+ * @return the response content entity.
+ */
protected HttpEntity generateResponseContent(final HttpResponse unauthorized) {
return new StringEntity("Unauthorized");
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/BasicHttpServerExpectationDecorator.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/BasicHttpServerExpectationDecorator.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/BasicHttpServerExpectationDecorator.java
index 1920a4c..c4f25e8 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/BasicHttpServerExpectationDecorator.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/BasicHttpServerExpectationDecorator.java
@@ -41,6 +41,10 @@ import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.util.Args;
/**
+ * {@link HttpServerRequestHandler} implementation that adds support
+ * for the Expect-Continue handshake to an existing
+ * {@link HttpServerRequestHandler}.
+ *
* @since 5.0
*/
public class BasicHttpServerExpectationDecorator implements HttpServerRequestHandler {
@@ -51,6 +55,15 @@ public class BasicHttpServerExpectationDecorator implements HttpServerRequestHan
this.requestHandler = Args.notNull(requestHandler, "Request handler");
}
+ /**
+ * Verifies the HTTP request and decides whether it meets server expectations and the request
+ * processing can continue.
+ *
+ * @param request the incoming HTTP request.
+ * @param context the actual execution context.
+ * @return {@code null} if the request meets expectations or a final HTTP response
+ * with an error status representing the cause of expectation failure.
+ */
protected ClassicHttpResponse verify(final ClassicHttpRequest request, final HttpContext context) {
return null;
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/BasicHttpServerRequestHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/BasicHttpServerRequestHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/BasicHttpServerRequestHandler.java
index 1fa9a47..c317846 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/BasicHttpServerRequestHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/BasicHttpServerRequestHandler.java
@@ -42,6 +42,10 @@ import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.util.Args;
/**
+ * Basic {@link HttpServerRequestHandler} implementation that makes use of
+ * {@link HttpRequestMapper} to dispatch the request to a particular
+ * {@link HttpRequestHandler} for processing.
+ *
* @since 5.0
*/
public class BasicHttpServerRequestHandler implements HttpServerRequestHandler {
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerExpectationFilter.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerExpectationFilter.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerExpectationFilter.java
index 9b5aacf..a419959 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerExpectationFilter.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerExpectationFilter.java
@@ -44,15 +44,34 @@ import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
import org.apache.hc.core5.http.protocol.HttpContext;
/**
+ * HttpServerExpectationFilter add support for the Expect-Continue handshake
+ * to the request processing pipeline.
+ *
* @since 5.0
*/
@Contract(threading = ThreadingBehavior.STATELESS)
public class HttpServerExpectationFilter implements HttpFilterHandler {
+ /**
+ * Verifies the HTTP request and decides whether it meets server expectations and the request
+ * processing can continue.
+ *
+ * @param request the incoming HTTP request.
+ * @param context the actual execution context.
+ * @return {@code true} if the request meets expectations or {@code false} otherwise.
+ */
protected boolean verify(final ClassicHttpRequest request, final HttpContext context) throws HttpException {
return true;
}
+ /**
+ * Generates response content entity for the final HTTP response with an error status
+ * representing the cause of expectation failure.
+ *
+ * @param expectationFailed the final HTTP response.
+ * @return the content entity for the final HTTP response with an error status
+ * representing the cause of expectation failure.
+ */
protected HttpEntity generateResponseContent(final HttpResponse expectationFailed) throws HttpException {
return null;
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerFilterChainElement.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerFilterChainElement.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerFilterChainElement.java
index 69d429f..939c468 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerFilterChainElement.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerFilterChainElement.java
@@ -35,6 +35,11 @@ import org.apache.hc.core5.http.io.HttpFilterChain;
import org.apache.hc.core5.http.io.HttpFilterHandler;
import org.apache.hc.core5.http.protocol.HttpContext;
+/**
+ * An element in a request processing chain.
+ *
+ * @since 5.0
+ */
public final class HttpServerFilterChainElement {
private final HttpFilterHandler handler;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerFilterChainRequestHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerFilterChainRequestHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerFilterChainRequestHandler.java
index c6064b9..b008345 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerFilterChainRequestHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/HttpServerFilterChainRequestHandler.java
@@ -38,6 +38,9 @@ import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.util.Args;
/**
+ * {@link HttpServerRequestHandler} implementation that delegates request processing
+ * to a {@link HttpServerFilterChainElement}.
+ *
* @since 5.0
*/
public class HttpServerFilterChainRequestHandler implements HttpServerRequestHandler {
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/TerminalServerFilter.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/TerminalServerFilter.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/TerminalServerFilter.java
index a059f4c..5955f68 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/TerminalServerFilter.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/TerminalServerFilter.java
@@ -44,6 +44,10 @@ import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.util.Args;
/**
+ * {@link HttpFilterHandler} implementation represents a terminal handler
+ * in a request processing pipeline that makes use of {@link HttpRequestMapper}
+ * to dispatch the request to a particular {@link HttpRequestHandler}.
+ *
* @since 5.0
*/
@Contract(threading = ThreadingBehavior.STATELESS)
@@ -52,7 +56,9 @@ public final class TerminalServerFilter implements HttpFilterHandler {
private final HttpRequestMapper<HttpRequestHandler> handlerMapper;
private final HttpResponseFactory<ClassicHttpResponse> responseFactory;
- public TerminalServerFilter(final HttpRequestMapper<HttpRequestHandler> handlerMapper, final HttpResponseFactory<ClassicHttpResponse> responseFactory) {
+ public TerminalServerFilter(
+ final HttpRequestMapper<HttpRequestHandler> handlerMapper,
+ final HttpResponseFactory<ClassicHttpResponse> responseFactory) {
this.handlerMapper = Args.notNull(handlerMapper, "Handler mapper");
this.responseFactory = responseFactory != null ? responseFactory : DefaultClassicHttpResponseFactory.INSTANCE;
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/package-info.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/package-info.java b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/package-info.java
new file mode 100644
index 0000000..207f7d5
--- /dev/null
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/io/support/package-info.java
@@ -0,0 +1,31 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+/**
+ * Support classes for the classic (blocking) I/O model.
+ */
+package org.apache.hc.core5.http.io.support;
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java b/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java
index f015ed3..faa2ac6 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java
@@ -47,7 +47,7 @@ import org.apache.hc.core5.util.CharArrayBuffer;
import org.apache.hc.core5.util.TextUtils;
/**
- * Message support functions.
+ * Support methods for HTTP message processing.
*
* @since 5.0
*/
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncClientExchangeHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncClientExchangeHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncClientExchangeHandler.java
index 160168d..75f8c56 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncClientExchangeHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncClientExchangeHandler.java
@@ -41,12 +41,38 @@ import org.apache.hc.core5.http.protocol.HttpContext;
*/
public interface AsyncClientExchangeHandler extends AsyncDataExchangeHandler {
- void produceRequest(RequestChannel channel, HttpContext httpContext) throws HttpException, IOException;
+ /**
+ * Triggered to signal the ability of the underlying request channel
+ * to accept a request messages. The data producer can choose to send
+ * a request message immediately inside the call or asynchronously
+ * at some later point.
+ *
+ * @param channel the request channel capable to accepting a request message.
+ * @param context the actual execution context.
+ */
+ void produceRequest(RequestChannel channel, HttpContext context) throws HttpException, IOException;
- void consumeResponse(HttpResponse response, EntityDetails entityDetails, HttpContext httpContext) throws HttpException, IOException;
+ /**
+ * Triggered to signal receipt of a response message head.
+ *
+ * @param response the response message head.
+ * @param entityDetails the response entity details or {@code null} if the response
+ * does not enclose an entity.
+ * @param context the actual execution context.
+ */
+ void consumeResponse(HttpResponse response, EntityDetails entityDetails, HttpContext context) throws HttpException, IOException;
- void consumeInformation(HttpResponse response, HttpContext httpContext) throws HttpException, IOException;
+ /**
+ * Triggered to signal receipt of an intermediate (1xx) HTTP response.
+ *
+ * @param response the intermediate (1xx) HTTP response.
+ * @param context the actual execution context.
+ */
+ void consumeInformation(HttpResponse response, HttpContext context) throws HttpException, IOException;
+ /**
+ * Triggered to cancel the message exchange.
+ */
void cancel();
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncDataExchangeHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncDataExchangeHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncDataExchangeHandler.java
index 3bc09e5..e942e39 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncDataExchangeHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncDataExchangeHandler.java
@@ -34,6 +34,11 @@ package org.apache.hc.core5.http.nio;
*/
public interface AsyncDataExchangeHandler extends AsyncDataConsumer, AsyncDataProducer {
+ /**
+ * Triggered to signal a failure in data processing.
+ *
+ * @param cause the cause of the failure.
+ */
void failed(Exception cause);
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncEntityConsumer.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncEntityConsumer.java b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncEntityConsumer.java
index 027e147..b276e39 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncEntityConsumer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncEntityConsumer.java
@@ -35,14 +35,33 @@ import org.apache.hc.core5.http.HttpException;
/**
* Abstract asynchronous message entity consumer.
*
+ * @param <T> entity representation.
+ *
* @since 5.0
*/
public interface AsyncEntityConsumer<T> extends AsyncDataConsumer {
+ /**
+ * Signals beginning of an incoming request entity stream.
+ *
+ * @param entityDetails the details of the incoming message entity.
+ * @param resultCallback the result callback.
+ */
void streamStart(EntityDetails entityDetails, FutureCallback<T> resultCallback) throws HttpException, IOException;
+ /**
+ * Triggered to signal a failure in data processing.
+ *
+ * @param cause the cause of the failure.
+ */
void failed(Exception cause);
+ /**
+ * Returns the result of entity processing when it becomes available or {@code null}
+ * if the entity is still being received.
+ *
+ * @return the response processing result.
+ */
T getContent();
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncEntityProducer.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncEntityProducer.java b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncEntityProducer.java
index 0814760..6fa519f 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncEntityProducer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncEntityProducer.java
@@ -41,6 +41,11 @@ public interface AsyncEntityProducer extends AsyncDataProducer, EntityDetails {
*/
boolean isRepeatable();
+ /**
+ * Triggered to signal a failure in data generation.
+ *
+ * @param cause the cause of the failure.
+ */
void failed(Exception cause);
}
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncFilterChain.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncFilterChain.java b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncFilterChain.java
index c2ef87d..33a892a 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncFilterChain.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncFilterChain.java
@@ -37,21 +37,52 @@ import org.apache.hc.core5.http.HttpResponse;
import org.apache.hc.core5.http.protocol.HttpContext;
/**
+ * AsyncFilterChain represents a single element in the server side request processing chain.
+ *
* @since 5.0
*/
@Contract(threading = ThreadingBehavior.STATELESS)
public interface AsyncFilterChain {
+ /**
+ * Response trigger that can be used to generate the final HTTP response
+ * and terminate HTTP request processing.
+ */
interface ResponseTrigger {
+ /**
+ * Sends an intermediate informational HTTP response to the client.
+ *
+ * @param response the intermediate (1xx) HTTP response.
+ */
void sendInformation(HttpResponse response) throws HttpException, IOException;
+ /**
+ * Sends a final HTTP response to the client.
+ *
+ * @param response the final (non 1xx) HTTP response.
+ */
void submitResponse(HttpResponse response, AsyncEntityProducer entityProducer) throws HttpException, IOException;
+ /**
+ * Pushes a request message head as a promise to deliver a response message.
+ *
+ * @param promise the request message header used as a promise.
+ * @param responseProducer the push response message producer.
+ */
void pushPromise(HttpRequest promise, AsyncPushProducer responseProducer) throws HttpException, IOException;
}
+ /**
+ * Proceeds to the next element in the request processing chain.
+ *
+ * @param request the actual request.
+ * @param entityDetails the request entity details or {@code null} if the request
+ * does not enclose an entity.
+ * @param responseTrigger the response trigger.
+ * @param context the actual execution context.
+ */
AsyncDataConsumer proceed(
HttpRequest request,
EntityDetails entityDetails,
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/e0592bd2/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncFilterHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncFilterHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncFilterHandler.java
index 83f0dea..4e6dfae 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncFilterHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/nio/AsyncFilterHandler.java
@@ -36,11 +36,32 @@ import org.apache.hc.core5.http.HttpRequest;
import org.apache.hc.core5.http.protocol.HttpContext;
/**
+ * AsyncFilterHandler represents a routine for handling all incoming requests
+ * in the server side request processing chain.
+ *
* @since 5.0
*/
@Contract(threading = ThreadingBehavior.STATELESS)
public interface AsyncFilterHandler {
+ /**
+ * Processes the incoming HTTP request and if processing has been completed
+ * submits a final response to the client. The handler can choose to send
+ * response messages immediately inside the call or asynchronously at some later point.
+ * The handler must not use the response trigger after passing control to the next filter
+ * with the
+ * {@link AsyncFilterChain#proceed(HttpRequest, EntityDetails, HttpContext, AsyncFilterChain.ResponseTrigger)}
+ * method.
+ *
+ * @param request the actual request head.
+ * @param entityDetails the request entity details or {@code null} if the request
+ * does not enclose an entity.
+ * @param context the actual execution context.
+ * @param responseTrigger the response trigger.
+ * @param chain the next element in the request processing chain.
+ * @return the data consumer to be used to process incoming request data. It is
+ * expected to be {@code null} if entityDetails parameter is {@code null}.
+ */
AsyncDataConsumer handle(
HttpRequest request,
EntityDetails entityDetails,