Author: dennisl Date: Tue Sep 14 20:23:12 2010 New Revision: 997076 URL: http://svn.apache.org/viewvc?rev=997076&view=rev Log: [DOXIA-406] Upgrade httpclient Combined my own work with the patch from Robert Scholte.
Modified: maven/doxia/doxia/trunk/doxia-core/pom.xml maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java Modified: maven/doxia/doxia/trunk/doxia-core/pom.xml URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/pom.xml?rev=997076&r1=997075&r2=997076&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/pom.xml (original) +++ maven/doxia/doxia/trunk/doxia-core/pom.xml Tue Sep 14 20:23:12 2010 @@ -61,9 +61,9 @@ under the License. <version>2.4</version> </dependency> <dependency> - <groupId>commons-httpclient</groupId> - <artifactId>commons-httpclient</artifactId> - <version>3.1</version> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>4.0.2</version> </dependency> <!-- test --> Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java?rev=997076&r1=997075&r2=997076&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java Tue Sep 14 20:23:12 2010 @@ -37,12 +37,15 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.HttpException; -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.httpclient.methods.GetMethod; -import org.apache.commons.httpclient.params.HttpMethodParams; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpRequestRetryHandler; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; +import org.apache.http.util.EntityUtils; import org.apache.maven.doxia.macro.MacroExecutionException; import org.apache.maven.doxia.markup.XmlMarkup; @@ -398,7 +401,7 @@ public abstract class AbstractXmlParser * @param type the tag event type. This should be one of HtmlMarkup.TAG_TYPE_SIMPLE, * HtmlMarkup.TAG_TYPE_START, HtmlMarkup.TAG_TYPE_END or HtmlMarkup.ENTITY_TYPE. * It will be passed as the first argument of the required parameters to the Sink - * {...@link org.apache.maven.doxia.sink.Sink#unknown(String, Object[], SinkEventAttributes)} + * {...@link org.apache.maven.doxia.sink.Sink#unknown(String, Object[], org.apache.maven.doxia.sink.SinkEventAttributes)} * method. */ protected void handleUnknown( XmlPullParser parser, Sink sink, int type ) @@ -758,7 +761,7 @@ public abstract class AbstractXmlParser /** * If url is not an http/https urls, call {...@link IOUtil#toByteArray(java.io.InputStream)} to get the url * content. - * Otherwise, call {...@link GetMethod#getResponseBody()} from HttpClient to get the http content. + * Otherwise, use HttpClient to get the http content. * Wrap all internal exceptions to throw SAXException. * * @param url not null @@ -791,25 +794,28 @@ public abstract class AbstractXmlParser } // it is an HTTP url, using HttpClient... - HttpClient client = new HttpClient(); - GetMethod method = new GetMethod( url.toString() ); + DefaultHttpClient client = new DefaultHttpClient(); + HttpGet method = new HttpGet( url.toString() ); - method.getParams().setParameter( HttpMethodParams.RETRY_HANDLER, - new DefaultHttpMethodRetryHandler( 3, false ) ); + HttpRequestRetryHandler retryHandler = new DefaultHttpRequestRetryHandler( 3, false ); + client.setHttpRequestRetryHandler(retryHandler); + HttpEntity entity = null; try { - int statusCode = client.executeMethod( method ); + HttpResponse response = client.execute( method ); + int statusCode = response.getStatusLine().getStatusCode(); if ( statusCode != HttpStatus.SC_OK ) { - throw new IOException( "Method failed: " + method.getStatusLine() ); + throw new IOException( "Method failed: " + response.getStatusLine().getReasonPhrase() ); } - return method.getResponseBody(); + entity = response.getEntity(); + return EntityUtils.toByteArray( entity ); } - catch ( HttpException e ) + catch ( ClientProtocolException e ) { - throw new SAXException( "HttpException: Fatal protocol violation: " + e.getMessage(), e ); + throw new SAXException( "ClientProtocolException: Fatal protocol violation: " + e.getMessage(), e ); } catch ( IOException e ) { @@ -817,7 +823,16 @@ public abstract class AbstractXmlParser } finally { - method.releaseConnection(); + if ( entity != null ) { + try + { + entity.consumeContent(); + } + catch ( IOException e ) + { + // Ignore + } + } } }