Return-Path: X-Original-To: apmail-hc-commits-archive@www.apache.org Delivered-To: apmail-hc-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1450A6940 for ; Thu, 21 Jul 2011 19:49:32 +0000 (UTC) Received: (qmail 59266 invoked by uid 500); 21 Jul 2011 19:49:32 -0000 Delivered-To: apmail-hc-commits-archive@hc.apache.org Received: (qmail 59218 invoked by uid 500); 21 Jul 2011 19:49:31 -0000 Mailing-List: contact commits-help@hc.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "HttpComponents Project" Delivered-To: mailing list commits@hc.apache.org Received: (qmail 59211 invoked by uid 99); 21 Jul 2011 19:49:31 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 21 Jul 2011 19:49:31 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 21 Jul 2011 19:49:28 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 8FAB223889BB for ; Thu, 21 Jul 2011 19:49:08 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1149337 - in /httpcomponents/httpasyncclient/trunk/httpasyncclient/src: examples/org/apache/http/examples/nio/client/ main/java/org/apache/http/impl/nio/client/ main/java/org/apache/http/nio/client/methods/ test/java/org/apache/http/impl/n... Date: Thu, 21 Jul 2011 19:49:07 -0000 To: commits@hc.apache.org From: olegk@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110721194908.8FAB223889BB@eris.apache.org> Author: olegk Date: Thu Jul 21 19:49:03 2011 New Revision: 1149337 URL: http://svn.apache.org/viewvc?rev=1149337&view=rev Log: Better API for building common HttpAsyncRequestProducers Added: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BasicHttpAsyncResponseConsumer.java (contents, props changed) - copied, changed from r1149330, httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/BasicHttpAsyncResponseConsumer.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncMethods.java (with props) httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncRequestProducerImpl.java (with props) httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/NHttpEntityWrapper.java (contents, props changed) - copied, changed from r1149330, httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/NHttpEntityWrapper.java Removed: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/BasicHttpAsyncRequestProducer.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/BasicHttpAsyncResponseConsumer.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/NHttpEntityWrapper.java Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/examples/org/apache/http/examples/nio/client/AsyncClientHttpExchangeStreaming.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/AbstractHttpAsyncClient.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BaseHttpAsyncEntityRequestProducer.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BaseHttpAsyncRequestProducer.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncDelete.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncGet.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncHead.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncOptions.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncPost.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncPut.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncTrace.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/client/TestHttpAsync.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/client/TestHttpsAsync.java httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/nio/client/methods/TestAsyncConsumers.java Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/examples/org/apache/http/examples/nio/client/AsyncClientHttpExchangeStreaming.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/examples/org/apache/http/examples/nio/client/AsyncClientHttpExchangeStreaming.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/examples/org/apache/http/examples/nio/client/AsyncClientHttpExchangeStreaming.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/examples/org/apache/http/examples/nio/client/AsyncClientHttpExchangeStreaming.java Thu Jul 21 19:49:03 2011 @@ -35,7 +35,7 @@ import org.apache.http.impl.nio.client.D import org.apache.http.nio.IOControl; import org.apache.http.nio.client.HttpAsyncClient; import org.apache.http.nio.client.methods.AsyncCharConsumer; -import org.apache.http.nio.client.methods.HttpAsyncGet; +import org.apache.http.nio.client.methods.HttpAsyncMethods; public class AsyncClientHttpExchangeStreaming { @@ -44,7 +44,7 @@ public class AsyncClientHttpExchangeStre httpclient.start(); try { Future future = httpclient.execute( - new HttpAsyncGet("http://localhost:8080/"), + HttpAsyncMethods.createGet("http://localhost:8080/"), new MyResponseConsumer(), null); Boolean result = future.get(); if (result != null && result.booleanValue()) { Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/AbstractHttpAsyncClient.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/AbstractHttpAsyncClient.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/AbstractHttpAsyncClient.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/AbstractHttpAsyncClient.java Thu Jul 21 19:49:03 2011 @@ -78,6 +78,7 @@ import org.apache.http.nio.client.HttpAs import org.apache.http.nio.client.HttpAsyncExchangeHandler; import org.apache.http.nio.client.HttpAsyncRequestProducer; import org.apache.http.nio.client.HttpAsyncResponseConsumer; +import org.apache.http.nio.client.methods.HttpAsyncMethods; import org.apache.http.nio.concurrent.BasicFuture; import org.apache.http.nio.concurrent.FutureCallback; import org.apache.http.nio.conn.ClientConnectionManager; @@ -528,8 +529,8 @@ public abstract class AbstractHttpAsyncC final HttpHost target, final HttpRequest request, final HttpContext context, final FutureCallback callback) { return execute( - new BasicHttpAsyncRequestProducer(target, request), - new BasicHttpAsyncResponseConsumer(), + HttpAsyncMethods.create(target, request), + HttpAsyncMethods.createConsumer(), context, callback); } Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BaseHttpAsyncEntityRequestProducer.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BaseHttpAsyncEntityRequestProducer.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BaseHttpAsyncEntityRequestProducer.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BaseHttpAsyncEntityRequestProducer.java Thu Jul 21 19:49:03 2011 @@ -45,6 +45,7 @@ import org.apache.http.nio.entity.NStrin import org.apache.http.nio.entity.ProducingNHttpEntity; import org.apache.http.protocol.HTTP; +@Deprecated abstract class BaseHttpAsyncEntityRequestProducer implements HttpAsyncRequestProducer, Closeable { private final URI requestURI; Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BaseHttpAsyncRequestProducer.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BaseHttpAsyncRequestProducer.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BaseHttpAsyncRequestProducer.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BaseHttpAsyncRequestProducer.java Thu Jul 21 19:49:03 2011 @@ -37,6 +37,7 @@ import org.apache.http.nio.ContentEncode import org.apache.http.nio.IOControl; import org.apache.http.nio.client.HttpAsyncRequestProducer; +@Deprecated abstract class BaseHttpAsyncRequestProducer implements HttpAsyncRequestProducer { private final URI requestURI; Copied: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BasicHttpAsyncResponseConsumer.java (from r1149330, httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/BasicHttpAsyncResponseConsumer.java) URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BasicHttpAsyncResponseConsumer.java?p2=httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BasicHttpAsyncResponseConsumer.java&p1=httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/BasicHttpAsyncResponseConsumer.java&r1=1149330&r2=1149337&rev=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/BasicHttpAsyncResponseConsumer.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BasicHttpAsyncResponseConsumer.java Thu Jul 21 19:49:03 2011 @@ -24,19 +24,18 @@ * . * */ -package org.apache.http.impl.nio.client; +package org.apache.http.nio.client.methods; import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.nio.ContentDecoder; import org.apache.http.nio.IOControl; -import org.apache.http.nio.client.methods.AbstractHttpAsyncResponseConsumer; import org.apache.http.nio.entity.BufferingNHttpEntity; import org.apache.http.nio.entity.ConsumingNHttpEntity; import org.apache.http.nio.util.HeapByteBufferAllocator; -class BasicHttpAsyncResponseConsumer extends AbstractHttpAsyncResponseConsumer { +public class BasicHttpAsyncResponseConsumer extends AbstractHttpAsyncResponseConsumer { private volatile HttpResponse response; private volatile ConsumingNHttpEntity consumer; Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BasicHttpAsyncResponseConsumer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BasicHttpAsyncResponseConsumer.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/BasicHttpAsyncResponseConsumer.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncDelete.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncDelete.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncDelete.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncDelete.java Thu Jul 21 19:49:03 2011 @@ -31,6 +31,10 @@ import java.net.URI; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpUriRequest; +/** + * @deprecated use {@link HttpAsyncMethods#createDelete(URI)} + */ +@Deprecated public class HttpAsyncDelete extends BaseHttpAsyncRequestProducer { public HttpAsyncDelete(final URI requestURI) { Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncGet.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncGet.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncGet.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncGet.java Thu Jul 21 19:49:03 2011 @@ -31,6 +31,10 @@ import java.net.URI; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpUriRequest; +/** + * @deprecated use {@link HttpAsyncMethods#createGet(URI)} + */ +@Deprecated public class HttpAsyncGet extends BaseHttpAsyncRequestProducer { public HttpAsyncGet(final URI requestURI) { Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncHead.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncHead.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncHead.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncHead.java Thu Jul 21 19:49:03 2011 @@ -31,6 +31,10 @@ import java.net.URI; import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpUriRequest; +/** + * @deprecated use {@link HttpAsyncMethods#createHead(URI)} + */ +@Deprecated public class HttpAsyncHead extends BaseHttpAsyncRequestProducer { public HttpAsyncHead(final URI requestURI) { Added: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncMethods.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncMethods.java?rev=1149337&view=auto ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncMethods.java (added) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncMethods.java Thu Jul 21 19:49:03 2011 @@ -0,0 +1,196 @@ +/* + * ==================================================================== + * 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 + * . + * + */ +package org.apache.http.nio.client.methods; + +import java.io.UnsupportedEncodingException; +import java.net.URI; + +import org.apache.http.HttpHost; +import org.apache.http.HttpRequest; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpOptions; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.client.methods.HttpTrace; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.client.utils.URIUtils; +import org.apache.http.nio.client.HttpAsyncRequestProducer; +import org.apache.http.nio.client.HttpAsyncResponseConsumer; +import org.apache.http.nio.entity.NByteArrayEntity; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.protocol.HTTP; + +public final class HttpAsyncMethods { + + public static HttpAsyncRequestProducer create(final HttpHost target, final HttpRequest request) { + if (target == null) { + throw new IllegalArgumentException("HTTP host may not be null"); + } + if (request == null) { + throw new IllegalArgumentException("HTTP request may not be null"); + } + return new HttpAsyncRequestProducerImpl(target, request); + } + + public static HttpAsyncRequestProducer create(final HttpUriRequest request) { + if (request == null) { + throw new IllegalArgumentException("HTTP request may not be null"); + } + HttpHost target = URIUtils.extractHost(request.getURI()); + return new HttpAsyncRequestProducerImpl(target, request); + } + + public static HttpAsyncRequestProducer createGet(final URI requestURI) { + return create(new HttpGet(requestURI)); + } + + public static HttpAsyncRequestProducer createGet(final String requestURI) { + return create(new HttpGet(URI.create(requestURI))); + } + + public static HttpAsyncRequestProducer createHead(final URI requestURI) { + return create(new HttpGet(requestURI)); + } + + public static HttpAsyncRequestProducer createHead(final String requestURI) { + return create(new HttpGet(URI.create(requestURI))); + } + + public static HttpAsyncRequestProducer createDelete(final URI requestURI) { + return create(new HttpDelete(requestURI)); + } + + public static HttpAsyncRequestProducer createDelete(final String requestURI) { + return create(new HttpDelete(URI.create(requestURI))); + } + + public static HttpAsyncRequestProducer createOptions(final URI requestURI) { + return create(new HttpOptions(requestURI)); + } + + public static HttpAsyncRequestProducer createOptions(final String requestURI) { + return create(new HttpOptions(URI.create(requestURI))); + } + + public static HttpAsyncRequestProducer createTrace(final URI requestURI) { + return create(new HttpTrace(requestURI)); + } + + public static HttpAsyncRequestProducer createTrace(final String requestURI) { + return create(new HttpTrace(URI.create(requestURI))); + } + + public static HttpAsyncRequestProducer createPost( + final URI requestURI, + final String content, + String mimeType, String charset) throws UnsupportedEncodingException { + HttpPost httppost = new HttpPost(requestURI); + if (mimeType == null) { + mimeType = HTTP.PLAIN_TEXT_TYPE; + } + if (charset == null) { + charset = HTTP.DEFAULT_CONTENT_CHARSET; + } + NStringEntity entity = new NStringEntity(content, charset); + entity.setContentType(mimeType + HTTP.CHARSET_PARAM + charset); + httppost.setEntity(entity); + HttpHost target = URIUtils.extractHost(requestURI); + return new HttpAsyncRequestProducerImpl(target, httppost, entity); + } + + public static HttpAsyncRequestProducer createPost( + final String requestURI, + final String content, + String mimeType, String charset) throws UnsupportedEncodingException { + return createPost(URI.create(requestURI), content, mimeType, charset); + } + + public static HttpAsyncRequestProducer createPost( + final URI requestURI, + final byte[] content, final String contentType) { + HttpPost httppost = new HttpPost(requestURI); + NByteArrayEntity entity = new NByteArrayEntity(content); + entity.setContentType(contentType); + HttpHost target = URIUtils.extractHost(requestURI); + return new HttpAsyncRequestProducerImpl(target, httppost, entity); + } + + public static HttpAsyncRequestProducer createPost( + final String requestURI, + final byte[] content, final String contentType) { + return createPost(URI.create(requestURI), content, contentType); + } + + public static HttpAsyncRequestProducer createPut( + final URI requestURI, + final String content, + String mimeType, String charset) throws UnsupportedEncodingException { + HttpPut httpput = new HttpPut(requestURI); + if (mimeType == null) { + mimeType = HTTP.PLAIN_TEXT_TYPE; + } + if (charset == null) { + charset = HTTP.DEFAULT_CONTENT_CHARSET; + } + NStringEntity entity = new NStringEntity(content, charset); + entity.setContentType(mimeType + HTTP.CHARSET_PARAM + charset); + httpput.setEntity(entity); + HttpHost target = URIUtils.extractHost(requestURI); + return new HttpAsyncRequestProducerImpl(target, httpput, entity); + } + + public static HttpAsyncRequestProducer createPut( + final String requestURI, + final String content, + String mimeType, String charset) throws UnsupportedEncodingException { + return createPut(URI.create(requestURI), content, mimeType, charset); + } + + public static HttpAsyncRequestProducer createPut( + final URI requestURI, + final byte[] content, + final String contentType) { + HttpPut httpput = new HttpPut(requestURI); + NByteArrayEntity entity = new NByteArrayEntity(content); + entity.setContentType(contentType); + HttpHost target = URIUtils.extractHost(requestURI); + return new HttpAsyncRequestProducerImpl(target, httpput, entity); + } + + public static HttpAsyncRequestProducer createPut( + final String requestURI, + final byte[] content, final String contentType) { + return createPut(URI.create(requestURI), content, contentType); + } + + public static HttpAsyncResponseConsumer createConsumer() { + return new BasicHttpAsyncResponseConsumer(); + } + +} Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncMethods.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncMethods.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncMethods.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncOptions.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncOptions.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncOptions.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncOptions.java Thu Jul 21 19:49:03 2011 @@ -31,6 +31,10 @@ import java.net.URI; import org.apache.http.client.methods.HttpOptions; import org.apache.http.client.methods.HttpUriRequest; +/** + * @deprecated use {@link HttpAsyncMethods#createOptions(URI)} + */ +@Deprecated public class HttpAsyncOptions extends BaseHttpAsyncRequestProducer { public HttpAsyncOptions(final URI requestURI) { Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncPost.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncPost.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncPost.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncPost.java Thu Jul 21 19:49:03 2011 @@ -32,6 +32,11 @@ import org.apache.http.HttpEntity; import org.apache.http.HttpEntityEnclosingRequest; import org.apache.http.client.methods.HttpPost; +/** + * @deprecated use {@link HttpAsyncMethods#createPost(URI, String, String, String)} + * or {@link HttpAsyncMethods#createPost(URI, byte[], String)} + */ +@Deprecated public class HttpAsyncPost extends BaseHttpAsyncEntityRequestProducer { public HttpAsyncPost(final URI requestURI, final byte[] content, final String contentType) { Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncPut.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncPut.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncPut.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncPut.java Thu Jul 21 19:49:03 2011 @@ -32,6 +32,11 @@ import org.apache.http.HttpEntity; import org.apache.http.HttpEntityEnclosingRequest; import org.apache.http.client.methods.HttpPut; +/** + * @deprecated use {@link HttpAsyncMethods#createPut(URI, String, String, String)} + * or {@link HttpAsyncMethods#createPut(URI, byte[], String)} + */ +@Deprecated public class HttpAsyncPut extends BaseHttpAsyncEntityRequestProducer { public HttpAsyncPut(final URI requestURI, final byte[] content, final String contentType) { Added: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncRequestProducerImpl.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncRequestProducerImpl.java?rev=1149337&view=auto ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncRequestProducerImpl.java (added) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncRequestProducerImpl.java Thu Jul 21 19:49:03 2011 @@ -0,0 +1,114 @@ +/* + * ==================================================================== + * 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 + * . + * + */ +package org.apache.http.nio.client.methods; + +import java.io.Closeable; +import java.io.IOException; + +import org.apache.http.HttpEntity; +import org.apache.http.HttpEntityEnclosingRequest; +import org.apache.http.HttpHost; +import org.apache.http.HttpRequest; +import org.apache.http.nio.ContentEncoder; +import org.apache.http.nio.IOControl; +import org.apache.http.nio.client.HttpAsyncRequestProducer; +import org.apache.http.nio.entity.ProducingNHttpEntity; + +class HttpAsyncRequestProducerImpl implements HttpAsyncRequestProducer, Closeable { + + private final HttpHost target; + private final HttpRequest request; + private final ProducingNHttpEntity producer; + + HttpAsyncRequestProducerImpl( + final HttpHost target, + final HttpRequest request, + final ProducingNHttpEntity producer) { + super(); + if (request == null) { + throw new IllegalArgumentException("Request may not be null"); + } + this.target = target; + this.request = request; + this.producer = producer; + } + + HttpAsyncRequestProducerImpl(final HttpHost target, final HttpRequest request) { + this(target, request, getProducer(request)); + } + + private static ProducingNHttpEntity getProducer(final HttpRequest request) { + if (request instanceof HttpEntityEnclosingRequest) { + HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity(); + if (entity instanceof ProducingNHttpEntity) { + return (ProducingNHttpEntity) entity; + } else { + return new NHttpEntityWrapper(entity); + } + } else { + return null; + } + } + + public synchronized HttpRequest generateRequest() { + return this.request; + } + + public synchronized HttpHost getTarget() { + return this.target; + } + + public synchronized void produceContent( + final ContentEncoder encoder, final IOControl ioctrl) throws IOException { + if (this.producer != null) { + this.producer.produceContent(encoder, ioctrl); + if (encoder.isCompleted()) { + this.producer.finish(); + } + } + } + + public synchronized boolean isRepeatable() { + return this.producer == null || this.producer.isRepeatable(); + } + + public synchronized void resetRequest() { + if (this.producer != null) { + try { + this.producer.finish(); + } catch (IOException ignore) { + } + } + } + + public synchronized void close() throws IOException { + if (this.producer != null) { + this.producer.finish(); + } + } + +} Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncRequestProducerImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncRequestProducerImpl.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncRequestProducerImpl.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncTrace.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncTrace.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncTrace.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/HttpAsyncTrace.java Thu Jul 21 19:49:03 2011 @@ -31,6 +31,10 @@ import java.net.URI; import org.apache.http.client.methods.HttpTrace; import org.apache.http.client.methods.HttpUriRequest; +/** + * @deprecated use {@link HttpAsyncMethods#createTrace(URI)} + */ +@Deprecated public class HttpAsyncTrace extends BaseHttpAsyncRequestProducer { public HttpAsyncTrace(final URI requestURI) { Copied: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/NHttpEntityWrapper.java (from r1149330, httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/NHttpEntityWrapper.java) URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/NHttpEntityWrapper.java?p2=httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/NHttpEntityWrapper.java&p1=httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/NHttpEntityWrapper.java&r1=1149330&r2=1149337&rev=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/NHttpEntityWrapper.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/NHttpEntityWrapper.java Thu Jul 21 19:49:03 2011 @@ -25,7 +25,7 @@ * */ -package org.apache.http.impl.nio.client; +package org.apache.http.nio.client.methods; import java.io.IOException; import java.io.InputStream; Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/NHttpEntityWrapper.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/NHttpEntityWrapper.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/NHttpEntityWrapper.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/client/TestHttpAsync.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/client/TestHttpAsync.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/client/TestHttpAsync.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/client/TestHttpAsync.java Thu Jul 21 19:49:03 2011 @@ -40,6 +40,9 @@ import org.apache.http.client.methods.Ht import org.apache.http.localserver.AsyncHttpTestBase; import org.apache.http.nio.ContentDecoder; import org.apache.http.nio.IOControl; +import org.apache.http.nio.client.HttpAsyncRequestProducer; +import org.apache.http.nio.client.methods.BasicHttpAsyncResponseConsumer; +import org.apache.http.nio.client.methods.HttpAsyncMethods; import org.apache.http.nio.entity.NByteArrayEntity; import org.apache.http.util.EntityUtils; import org.junit.Assert; @@ -140,7 +143,7 @@ public class TestHttpAsync extends Async @Test public void testRequestFailure() throws Exception { HttpGet httpget = new HttpGet("/random/2048"); - BasicHttpAsyncRequestProducer requestProducer = new BasicHttpAsyncRequestProducer(this.target, httpget) ; + HttpAsyncRequestProducer requestProducer = HttpAsyncMethods.create(this.target, httpget) ; BasicHttpAsyncResponseConsumer responseConsumer = new BasicHttpAsyncResponseConsumer() { @Override Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/client/TestHttpsAsync.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/client/TestHttpsAsync.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/client/TestHttpsAsync.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/impl/nio/client/TestHttpsAsync.java Thu Jul 21 19:49:03 2011 @@ -52,6 +52,9 @@ import org.apache.http.localserver.Async import org.apache.http.localserver.LocalTestServer; import org.apache.http.nio.ContentDecoder; import org.apache.http.nio.IOControl; +import org.apache.http.nio.client.HttpAsyncRequestProducer; +import org.apache.http.nio.client.methods.BasicHttpAsyncResponseConsumer; +import org.apache.http.nio.client.methods.HttpAsyncMethods; import org.apache.http.nio.conn.scheme.Scheme; import org.apache.http.nio.conn.scheme.SchemeRegistry; import org.apache.http.nio.conn.ssl.SSLLayeringStrategy; @@ -227,7 +230,7 @@ public class TestHttpsAsync extends Asyn @Test public void testRequestFailure() throws Exception { HttpGet httpget = new HttpGet("/random/2048"); - BasicHttpAsyncRequestProducer requestProducer = new BasicHttpAsyncRequestProducer(this.target, httpget) ; + HttpAsyncRequestProducer requestProducer = HttpAsyncMethods.create(this.target, httpget) ; BasicHttpAsyncResponseConsumer responseConsumer = new BasicHttpAsyncResponseConsumer() { @Override Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/nio/client/methods/TestAsyncConsumers.java URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/nio/client/methods/TestAsyncConsumers.java?rev=1149337&r1=1149336&r2=1149337&view=diff ============================================================================== --- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/nio/client/methods/TestAsyncConsumers.java (original) +++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/nio/client/methods/TestAsyncConsumers.java Thu Jul 21 19:49:03 2011 @@ -38,6 +38,8 @@ import org.apache.http.HttpResponse; import org.apache.http.localserver.AsyncHttpTestBase; import org.apache.http.nio.ContentDecoder; import org.apache.http.nio.IOControl; +import org.apache.http.nio.client.HttpAsyncRequestProducer; +import org.apache.http.protocol.HTTP; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; @@ -79,7 +81,7 @@ public class TestAsyncConsumers extends @Test public void testByteConsumer() throws Exception { for (int i = 0; i < 5; i++) { - HttpAsyncGet httpget = new HttpAsyncGet(this.target.toURI() + "/random/20480"); + HttpAsyncRequestProducer httpget = HttpAsyncMethods.createGet(this.target.toURI() + "/random/20480"); AsyncByteConsumer consumer = new ByteCountingConsumer(); Future future = this.httpclient.execute(httpget, consumer, null); Long count = future.get(); @@ -90,7 +92,7 @@ public class TestAsyncConsumers extends @Test public void testByteConsumerSmallBufffer() throws Exception { for (int i = 0; i < 5; i++) { - HttpAsyncGet httpget = new HttpAsyncGet(this.target.toURI() + "/random/20480"); + HttpAsyncRequestProducer httpget = HttpAsyncMethods.createGet(this.target.toURI() + "/random/20480"); AsyncByteConsumer consumer = new ByteCountingConsumer(512); Future future = this.httpclient.execute(httpget, consumer, null); Long count = future.get(); @@ -143,7 +145,8 @@ public class TestAsyncConsumers extends String s = sb.toString(); for (int i = 0; i < 5; i++) { - HttpAsyncPost httppost = new HttpAsyncPost(this.target.toURI() + "/echo/stuff", s); + HttpAsyncRequestProducer httppost = HttpAsyncMethods.createPost( + this.target.toURI() + "/echo/stuff", s, "text/plain", HTTP.ASCII); AsyncCharConsumer consumer = new BufferingCharConsumer(); Future future = this.httpclient.execute(httppost, consumer, null); String result = future.get(); @@ -161,7 +164,8 @@ public class TestAsyncConsumers extends String s = sb.toString(); for (int i = 0; i < 5; i++) { - HttpAsyncPost httppost = new HttpAsyncPost(this.target.toURI() + "/echo/stuff", s); + HttpAsyncRequestProducer httppost = HttpAsyncMethods.createPost( + this.target.toURI() + "/echo/stuff", s, "text/plain", HTTP.ASCII); AsyncCharConsumer consumer = new BufferingCharConsumer(512); Future future = this.httpclient.execute(httppost, consumer, null); String result = future.get(); @@ -178,7 +182,8 @@ public class TestAsyncConsumers extends } String s = sb.toString(); - HttpAsyncPost httppost = new HttpAsyncPost(this.target.toURI() + "/echo/stuff", s); + HttpAsyncRequestProducer httppost = HttpAsyncMethods.createPost( + this.target.toURI() + "/echo/stuff", s, "text/plain", HTTP.ASCII); AsyncCharConsumer consumer = Mockito.spy(new BufferingCharConsumer()); Future future = this.httpclient.execute(httppost, consumer, null); String result = future.get(); @@ -191,7 +196,8 @@ public class TestAsyncConsumers extends @Test public void testResourceReleaseOnException() throws Exception { - HttpAsyncPost httppost = new HttpAsyncPost(this.target.toURI() + "/echo/stuff", "stuff"); + HttpAsyncRequestProducer httppost = HttpAsyncMethods.createPost( + this.target.toURI() + "/echo/stuff", "stuff", "text/plain", HTTP.ASCII); AsyncCharConsumer consumer = Mockito.spy(new BufferingCharConsumer()); Mockito.doThrow(new IOException("Kaboom")).when(consumer).consumeContent( Mockito.any(ContentDecoder.class), Mockito.any(IOControl.class)); @@ -213,7 +219,8 @@ public class TestAsyncConsumers extends @Test public void testResourceReleaseOnBuildFailure() throws Exception { - HttpAsyncPost httppost = new HttpAsyncPost(this.target.toURI() + "/echo/stuff", "stuff"); + HttpAsyncRequestProducer httppost = HttpAsyncMethods.createPost( + this.target.toURI() + "/echo/stuff", "stuff", "text/plain", HTTP.ASCII); AsyncCharConsumer consumer = Mockito.spy(new BufferingCharConsumer()); Mockito.doThrow(new HttpException("Kaboom")).when(consumer).buildResult();