This is an automated email from the ASF dual-hosted git repository. elharo pushed a commit to branch http in repository https://gitbox.apache.org/repos/asf/maven-doxia-linkcheck.git
The following commit(s) were added to refs/heads/http by this push: new 5aef4b2 handle invalid URLs 5aef4b2 is described below commit 5aef4b26b551c768c5d6290d5114a2381de4db49 Author: Elliotte Rusty Harold <elh...@ibiblio.org> AuthorDate: Sun Jan 17 11:32:42 2021 -0500 handle invalid URLs --- .../validation/OnlineHTTPLinkValidator.java | 57 +++++++++++----------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/src/main/java/org/apache/maven/doxia/linkcheck/validation/OnlineHTTPLinkValidator.java b/src/main/java/org/apache/maven/doxia/linkcheck/validation/OnlineHTTPLinkValidator.java index 2a124a9..44aba60 100644 --- a/src/main/java/org/apache/maven/doxia/linkcheck/validation/OnlineHTTPLinkValidator.java +++ b/src/main/java/org/apache/maven/doxia/linkcheck/validation/OnlineHTTPLinkValidator.java @@ -160,11 +160,8 @@ public final class OnlineHTTPLinkValidator { if ( getBaseURL() == null ) { - if ( LOG.isWarnEnabled() ) - { - LOG.warn( "Cannot check link [" + link + "] in page [" + lvi.getSource() + LOG.warn( "Cannot check link [" + link + "] in page [" + lvi.getSource() + "], as no base URL has been set!" ); - } return new LinkValidationResult( LinkcheckFileResult.WARNING_LEVEL, false, "No base URL specified" ); @@ -178,12 +175,9 @@ public final class OnlineHTTPLinkValidator { response = checkLink( link, 0 ); } - catch ( IOException ex ) + catch ( IOException | HttpException ex ) { - if ( LOG.isDebugEnabled() ) - { - LOG.debug( "Received: [" + ex + "] for [" + link + "] in page [" + lvi.getSource() + "]", ex ); - } + LOG.debug( "Received: [" + ex + "] for [" + link + "] in page [" + lvi.getSource() + "]", ex ); return new LinkValidationResult( LinkcheckFileResult.ERROR_LEVEL, false, ex.getClass().getName() + " : " + ex.getMessage() ); @@ -231,12 +225,12 @@ public final class OnlineHTTPLinkValidator return new HTTPLinkValidationResult( LinkcheckFileResult.ERROR_LEVEL, false, statusCode, response.getStatusLine().getReasonPhrase() ); } - catch ( Exception t ) + catch ( IOException ex ) { - String msg = "Received: [" + t + "] for [" + link + "] in page [" + lvi.getSource() + "]"; - LOG.error( msg, t ); + String msg = "Received: [" + ex + "] for [" + link + "] in page [" + lvi.getSource() + "]"; + LOG.error( msg, ex ); - return new LinkValidationResult( LinkcheckFileResult.ERROR_LEVEL, false, t.getMessage() ); + return new LinkValidationResult( LinkcheckFileResult.ERROR_LEVEL, false, ex.getMessage() ); } finally { @@ -319,11 +313,11 @@ public final class OnlineHTTPLinkValidator /** * Checks the given link. * - * @param link the link to check + * @param url the link to check * @param nbRedirect the number of current redirects * @throws IOException if something goes wrong */ - private HttpResponse checkLink( String link, int nbRedirect ) + private HttpResponse checkLink( String url, int nbRedirect ) throws IOException, HttpException { @@ -349,18 +343,25 @@ public final class OnlineHTTPLinkValidator } HttpUriRequest request; - if ( "HEAD".equalsIgnoreCase( this.http.getMethod() ) ) - { - request = new HttpHead( link ); - } - else if ( "GET".equalsIgnoreCase( this.http.getMethod() ) ) + try { - request = new HttpGet( link ); + if ( "HEAD".equalsIgnoreCase( this.http.getMethod() ) ) + { + request = new HttpHead( url ); + } + else if ( "GET".equalsIgnoreCase( this.http.getMethod() ) ) + { + request = new HttpGet( url ); + } + else + { + LOG.error( "Unsupported method: " + this.http.getMethod() + ", using 'get'." ); + request = new HttpGet( url ); + } } - else + catch ( IllegalArgumentException ex ) { - LOG.error( "Unsupported method: " + this.http.getMethod() + ", using 'get'." ); - request = new HttpGet( link ); + throw new HttpException( "Invalid URL " + url, ex ); } HttpResponse response = cl.execute( request ); @@ -368,7 +369,7 @@ public final class OnlineHTTPLinkValidator StatusLine statusLine = response.getStatusLine(); if ( statusLine == null ) { - LOG.error( "Unknown error validating link : " + link ); + LOG.error( "Unknown error validating link : " + url ); return null; } @@ -392,17 +393,17 @@ public final class OnlineHTTPLinkValidator { if ( newLink.startsWith( "/" ) ) { - URL oldUrl = new URL( link ); + URL oldUrl = new URL( url ); newLink = oldUrl.getProtocol() + "://" + oldUrl.getHost() + ( oldUrl.getPort() > 0 ? ":" + oldUrl.getPort() : "" ) + newLink; } else { - newLink = link + newLink; + newLink = url + newLink; } } - LOG.debug( "[" + link + "] is redirected to [" + newLink + "]" ); + LOG.debug( "[" + url + "] is redirected to [" + newLink + "]" ); HttpResponse oldResponse = response; response = checkLink( newLink, nbRedirect + 1 );