diff --git a/linkcheck/plugin.jelly b/linkcheck/plugin.jelly index 903f95ea..362b4a50 100644 --- a/linkcheck/plugin.jelly +++ b/linkcheck/plugin.jelly @@ -7,18 +7,15 @@ xmlns:doc="doc"> - - - - - - + + + @@ -38,8 +35,8 @@ --> - This run of linkcheck does nothing except create a template linkcheck file - + @@ -48,39 +45,30 @@ - BaseDir: ${basedir} + description="Generate link check results and then transform to HTML"> - - - Generating the LinkCheck report - + + - + - - maven.xdoc.src: ${maven.xdoc.src} - - - - LinkCheck not enabled as maven.linkcheck.enable is not defined. - - - + + /www/jakarta.apache.org/builds/jakarta-turbine-maven/ + + commons-beanutils + 1.6 + + root.maven + + + + commons-collections + 2.1 + + root.maven + + + + commons-jelly + 20030211.141339 + + root.maven + + commons-util final @@ -46,6 +67,15 @@ root.maven + + commons-jelly + commons-jelly-tags-ant + 20030211.142045 + http://jakarta.apache.org/commons/jelly/tags/ant/ + + root.maven + + commons-logging 1.0 @@ -53,6 +83,13 @@ root.maven + + dom4j + 1.4-dev-8 + + root.maven + + httpunit 1.5.1 @@ -67,6 +104,15 @@ root.maven + + + maven + + maven.jar + + root.maven + + rhino 1.5R4-RC3 @@ -75,6 +121,15 @@ root.maven + + werkz + 1.0-beta-7 + http://werkz.sourceforge.net/ + + root.maven + + + diff --git a/linkcheck/src/main/org/apache/maven/linkcheck/FileToCheck.java b/linkcheck/src/main/org/apache/maven/linkcheck/FileToCheck.java index abe4c4c2..135c70ed 100644 --- a/linkcheck/src/main/org/apache/maven/linkcheck/FileToCheck.java +++ b/linkcheck/src/main/org/apache/maven/linkcheck/FileToCheck.java @@ -75,7 +75,7 @@ import com.meterware.httpunit.WebResponse; /** * @author Ben Walding - * @version $Id: FileToCheck.java,v 1.4 2003/02/15 08:03:23 bwalding Exp $ + * @version $Id: FileToCheck.java,v 1.5 2003/02/22 00:37:31 bwalding Exp $ * */ public class FileToCheck @@ -106,6 +106,8 @@ public class FileToCheck status = STATUS_OK; message = ""; + + try { WebConversation wc = new WebConversation(); diff --git a/linkcheck/src/main/org/apache/maven/linkcheck/LinkCheck.java b/linkcheck/src/main/org/apache/maven/linkcheck/LinkCheck.java index 8ce9577a..a8952f3c 100644 --- a/linkcheck/src/main/org/apache/maven/linkcheck/LinkCheck.java +++ b/linkcheck/src/main/org/apache/maven/linkcheck/LinkCheck.java @@ -67,10 +67,12 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.maven.jelly.MavenJellyContext; import org.apache.maven.linkcheck.validation.FileLinkValidator; import org.apache.maven.linkcheck.validation.HTTPLinkValidator; import org.apache.maven.linkcheck.validation.LinkValidatorManager; import org.apache.maven.linkcheck.validation.MailtoLinkValidator; +import org.apache.maven.project.Project; import com.meterware.httpunit.HttpUnitOptions; @@ -79,7 +81,7 @@ import com.meterware.httpunit.HttpUnitOptions; * their links checked. * * @author Ben Walding - * @version $Id: LinkCheck.java,v 1.5 2003/02/15 08:04:20 bwalding Exp $ + * @version $Id: LinkCheck.java,v 1.6 2003/02/22 00:37:31 bwalding Exp $ */ public class LinkCheck { @@ -97,6 +99,7 @@ public class LinkCheck private File baseDir; private String cache; private String exclude; + private Project project; /** * Set the base directory for the change log generator. @@ -261,7 +264,16 @@ public class LinkCheck lvm = new LinkValidatorManager(); lvm.setExclude(exclude); lvm.addLinkValidator(new FileLinkValidator()); - lvm.addLinkValidator(new HTTPLinkValidator()); + MavenJellyContext ctx; + if (getProject() == null) { + System.out.println("No project set."); + ctx = new MavenJellyContext(); + } else { + System.out.println("Project set:" + getProject()); + ctx = ((Project) getProject()).getContext(); + } + + lvm.addLinkValidator(new HTTPLinkValidator(ctx.getProxyHost(), ctx.getProxyPort(), ctx.getProxyUserName(), ctx.getProxyPassword())); lvm.addLinkValidator(new MailtoLinkValidator()); lvm.loadCache(cache); } @@ -321,4 +333,22 @@ public class LinkCheck return buf.toString(); } + /** + * @return Project + */ + public Object getProject() + { + return project; + } + + /** + * Sets the project. + * @param project The project to set + */ + public void setProject(Object project) + { + System.out.println("Setting project: " + project); + this.project = (Project) project; + } + } \ No newline at end of file diff --git a/linkcheck/src/main/org/apache/maven/linkcheck/validation/HTTPLinkValidator.java b/linkcheck/src/main/org/apache/maven/linkcheck/validation/HTTPLinkValidator.java index 67906161..3fbd94a8 100644 --- a/linkcheck/src/main/org/apache/maven/linkcheck/validation/HTTPLinkValidator.java +++ b/linkcheck/src/main/org/apache/maven/linkcheck/validation/HTTPLinkValidator.java @@ -55,10 +55,11 @@ package org.apache.maven.linkcheck.validation; * * ==================================================================== */ - + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import com.meterware.httpunit.Base64; import com.meterware.httpunit.GetMethodWebRequest; import com.meterware.httpunit.WebConversation; import com.meterware.httpunit.WebRequest; @@ -67,9 +68,10 @@ import com.meterware.httpunit.WebResponse; /** * Checks links which are normal URLs * @author Ben Walding - * @version $Id: HTTPLinkValidator.java,v 1.2 2003/02/03 14:13:54 bwalding Exp $ + * @version $Id: HTTPLinkValidator.java,v 1.3 2003/02/22 00:37:31 bwalding Exp $ */ -public class HTTPLinkValidator implements LinkValidator { +public class HTTPLinkValidator implements LinkValidator +{ /** * Log for debug output */ @@ -78,28 +80,73 @@ public class HTTPLinkValidator implements LinkValidator { private final static LinkValidationResult LVR_INVALID = new LinkValidationResult(LinkValidationResult.INVALID, true); - private final static LinkValidationResult LVR_VALID = - new LinkValidationResult(LinkValidationResult.VALID, true); + private final static LinkValidationResult LVR_VALID = new LinkValidationResult(LinkValidationResult.VALID, true); + + private boolean proxy; + private String proxyHost; + private int proxyPort; + private String proxyUser; + private String proxyPass; + + public HTTPLinkValidator(String proxyHost, String proxyPort, String proxyUser, String proxyPass) + { + if (proxyHost == null) + { + proxy = false; + LOG.info("Not using a proxy"); + } + else + { + proxy = true; + this.proxyHost = proxyHost; + this.proxyPass = proxyPass; + this.proxyUser = proxyUser; + this.proxyPort = Integer.parseInt(proxyPort); + LOG.info("Using Proxy Host:" + proxyHost); + LOG.info("Using Proxy Port:" + proxyPort); + LOG.info("Using Proxy User:" + proxyUser); + } + } /** * @see org.apache.maven.linkcheck.LinkValidator#validateLink(org.apache.maven.linkcheck.LinkValidationItem) */ - public LinkValidationResult validateLink(LinkValidationItem lvi) { - try { + public LinkValidationResult validateLink(LinkValidationItem lvi) + { + try + { String link = lvi.getLink(); LOG.debug("Checking web link:" + link); WebConversation wc = new WebConversation(); + if (proxy) + { + wc.setProxyServer(proxyHost, proxyPort); + if (proxyUser != null) + { + String auth = proxyUser + ":" + proxyPass; + wc.setHeaderField("Proxy-Authorization", "Basic " + Base64.encode(auth)); + } + } + wc.setExceptionsThrownOnErrorStatus(false); WebRequest req = new GetMethodWebRequest(link); WebResponse resp = wc.getResponse(req); //FIXME: This constant is defined somewhere, but I can't remember where... - if (resp.getResponseCode() == 200) { + if (resp.getResponseCode() == 200) + { return LVR_VALID; - } else { + } + else + { + String msg = "Received: [" + resp.getResponseCode() + "] \"" + resp.getResponseMessage() + "\" for " + link; + LOG.info(msg); + System.out.println(msg); return LVR_INVALID; } - } catch (Exception e) { + } + catch (Exception e) + { LOG.warn("Error accessing " + lvi.getLink(), e); e.printStackTrace(); return LVR_INVALID; @@ -110,7 +157,8 @@ public class HTTPLinkValidator implements LinkValidator { /** * @see org.apache.maven.linkcheck.LinkValidator#getResourceKey(org.apache.maven.linkcheck.LinkValidationItem) */ - public Object getResourceKey(LinkValidationItem lvi) { + public Object getResourceKey(LinkValidationItem lvi) + { String link = lvi.getLink(); if (!link.startsWith("http://")) diff --git a/linkcheck/src/test/org/apache/maven/linkcheck/LinkCheckTest.java b/linkcheck/src/test/org/apache/maven/linkcheck/LinkCheckTest.java index 948cc71a..75df9cd0 100644 --- a/linkcheck/src/test/org/apache/maven/linkcheck/LinkCheckTest.java +++ b/linkcheck/src/test/org/apache/maven/linkcheck/LinkCheckTest.java @@ -61,6 +61,7 @@ import java.util.Iterator; import java.util.Map; + import junit.framework.TestCase; /** @@ -73,7 +74,7 @@ public class LinkCheckTest extends TestCase public void setUp() { - baseDir = System.getProperty("basedir"); + baseDir = System.getProperty("basedir"); } public void testScan() throws Exception