You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ah...@apache.org on 2006/01/17 15:15:25 UTC
svn commit: r369784 -
/maven/maven-1/plugins/trunk/linkcheck/src/main/org/apache/maven/plugin/linkcheck/validation/OnlineHTTPLinkValidator.java
Author: aheritier
Date: Tue Jan 17 06:15:18 2006
New Revision: 369784
URL: http://svn.apache.org/viewcvs?rev=369784&view=rev
Log:
- Add a maximum number of redirections (10) to prevent loops
- Release the connection before to check a redirection
Modified:
maven/maven-1/plugins/trunk/linkcheck/src/main/org/apache/maven/plugin/linkcheck/validation/OnlineHTTPLinkValidator.java
Modified: maven/maven-1/plugins/trunk/linkcheck/src/main/org/apache/maven/plugin/linkcheck/validation/OnlineHTTPLinkValidator.java
URL: http://svn.apache.org/viewcvs/maven/maven-1/plugins/trunk/linkcheck/src/main/org/apache/maven/plugin/linkcheck/validation/OnlineHTTPLinkValidator.java?rev=369784&r1=369783&r2=369784&view=diff
==============================================================================
--- maven/maven-1/plugins/trunk/linkcheck/src/main/org/apache/maven/plugin/linkcheck/validation/OnlineHTTPLinkValidator.java (original)
+++ maven/maven-1/plugins/trunk/linkcheck/src/main/org/apache/maven/plugin/linkcheck/validation/OnlineHTTPLinkValidator.java Tue Jan 17 06:15:18 2006
@@ -14,6 +14,7 @@
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpState;
import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.NTCredentials;
import org.apache.commons.httpclient.StatusLine;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
@@ -35,6 +36,9 @@
*/
private final static Log LOG = LogFactory.getLog( OnlineHTTPLinkValidator.class );
+ /** The maximum number of redirections for a link */
+ private final static int MAX_NB_REDIRECT = 10;
+
private String proxyHost;
private int proxyPort;
@@ -96,7 +100,7 @@
HttpMethod hm = null;
try
{
- hm = checkLink( cl, link );
+ hm = checkLink( cl, link, 0 );
}
catch ( Throwable t )
{
@@ -147,7 +151,6 @@
LOG.error( "Received: [" + t + "] for [" + lvi.getLink() + "] in page [" + lvi.getSource() + "]" );
return new LinkValidationResult( LinkValidationResult.ERROR, false, t.getMessage() );
}
-
}
private void initHttpClient()
@@ -155,8 +158,7 @@
LOG.debug( "A new HttpClient instance is needed ..." );
// Some web servers doesn't allow the default user-agent sent by httpClient
System.setProperty( "httpclient.useragent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" );
- //cl = new HttpClient( new MultiThreadedHttpConnectionManager() );
- cl = new HttpClient();
+ cl = new HttpClient( new MultiThreadedHttpConnectionManager() );
HostConfiguration hc = new HostConfiguration();
HttpState state = new HttpState();
if ( this.proxyHost != null )
@@ -194,9 +196,13 @@
LOG.debug( "New HttpClient instance created." );
}
- private HttpMethod checkLink( HttpClient cl, String link )
+ private HttpMethod checkLink( HttpClient cl, String link, int nbRedirect )
throws HttpException, IOException
{
+ if ( nbRedirect > MAX_NB_REDIRECT )
+ {
+ throw new HttpException( "Maximum number of redirections (" + MAX_NB_REDIRECT + ") exceeded" );
+ }
// execute the HEAD (a GET without the body returned)
HttpMethod hm = new HeadMethod( link );
try
@@ -243,7 +249,8 @@
}
HttpMethod oldHm = hm;
LOG.info( "[" + link + "] is redirected to [" + newLink + "]" );
- hm = checkLink( cl, newLink );
+ hm.releaseConnection();
+ hm = checkLink( cl, newLink, nbRedirect + 1 );
// Restore the hm to "Moved permanently" if the new location is found to allow us to report it
if ( oldHm.getStatusCode() == HttpStatus.SC_MOVED_PERMANENTLY
&& hm.getStatusCode() == HttpStatus.SC_OK )