--- old/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/RequestPublishers.java 2017-12-15 15:27:28.013038668 +0000 +++ new/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/RequestPublishers.java 2017-12-15 15:27:27.797043350 +0000 @@ -43,8 +43,10 @@ import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; +import java.util.Objects; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.Flow; +import java.util.concurrent.Flow.Publisher; import java.util.function.Supplier; import jdk.incubator.http.HttpRequest.BodyPublisher; import jdk.incubator.http.internal.common.Utils; @@ -348,4 +350,26 @@ return -1; } } + + static final class PublisherAdapter implements BodyPublisher { + + private final Publisher publisher; + private final long contentLength; + + PublisherAdapter(Publisher publisher, + long contentLength) { + this.publisher = Objects.requireNonNull(publisher); + this.contentLength = contentLength; + } + + @Override + public final long contentLength() { + return contentLength; + } + + @Override + public final void subscribe(Flow.Subscriber subscriber) { + publisher.subscribe(subscriber); + } + } }