bwalding 2003/09/13 14:48:08 Modified: src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/validation LinkValidationResult.java LinkValidationItem.java LinkValidatorCache.java HTTPLinkValidator.java src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck FileToCheck.java LinkCheck.java LinkCheckResult.java src/plugins-build/linkcheck/src/plugin-resources linkcheck-temp.xml src/plugins-build/linkcheck project.xml .cvsignore maven.xml Log: o Now follow 302 redirects (one level only) o Cleaned up logging a little bit and added more logging o Doesn't address the MacOSX bug (test failure bug), but the logging increase might help Revision Changes Path 1.3 +4 -4 maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/validation/LinkValidationResult.java Index: LinkValidationResult.java =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/validation/LinkValidationResult.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- LinkValidationResult.java 3 Feb 2003 14:13:54 -0000 1.2 +++ LinkValidationResult.java 13 Sep 2003 21:48:08 -0000 1.3 @@ -57,14 +57,14 @@ */ /** - * @author <a href="mailto:[EMAIL PROTECTED]">Ben Walding</a> - * @version $Id$ * <b>This is an immutable class.</b><br/> * <p> * This class is used to return status responses from the * validation handlers. A persistent result means that it * can be stored in the persistent cache and used across runs. * </p> + * @author <a href="mailto:[EMAIL PROTECTED]">Ben Walding</a> + * @version $Id$ */ public class LinkValidationResult { public static final int NOTMINE = 0; @@ -72,14 +72,14 @@ public static final int VALID = 2; public static final int UNKNOWN = 3; - private int status = UNKNOWN; + private final boolean persistent; + private final int status; public LinkValidationResult(int status, boolean persistent) { this.status = status; this.persistent = persistent; } - boolean persistent; public boolean isPersistent() { return persistent; } 1.3 +5 -21 maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/validation/LinkValidationItem.java Index: LinkValidationItem.java =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/validation/LinkValidationItem.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- LinkValidationItem.java 3 Feb 2003 14:13:54 -0000 1.2 +++ LinkValidationItem.java 13 Sep 2003 21:48:08 -0000 1.3 @@ -63,8 +63,8 @@ * @version $Id$ */ public class LinkValidationItem { - private File source; - private String link; + private final File source; + private final String link; public LinkValidationItem(File source, String link) { if (source == null) { @@ -89,7 +89,8 @@ return false; if (!lvi.source.equals(source)) - return false; + return false; + return true; } @@ -116,22 +117,5 @@ public File getSource() { return source; } - - /** - * Sets the link. - * @param link The link to set - */ - public void setLink(String link) { - this.link = link; - } - - /** - * Sets the source. - * @param source The source to set - */ - public void setSource(File source) { - this.source = source; - } - } 1.3 +6 -6 maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/validation/LinkValidatorCache.java Index: LinkValidatorCache.java =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/validation/LinkValidatorCache.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- LinkValidatorCache.java 3 Feb 2003 14:13:54 -0000 1.2 +++ LinkValidatorCache.java 13 Sep 2003 21:48:08 -0000 1.3 @@ -70,7 +70,7 @@ */ public class LinkValidatorCache { private LinkValidatorManager lvm; - private Map cache = new HashMap(); + private final Map cache = new HashMap(); public LinkValidatorCache(LinkValidatorManager lvm) { this.lvm = lvm; @@ -80,10 +80,10 @@ } /** - * - * @param lvi - * @return int Will return a status level, VALID, INVALID, UNKNOWN - */ + * + * @param lvi + * @return int Will return a status level, VALID, INVALID, UNKNOWN + */ public LinkValidationResult getCachedResult(LinkValidationItem lvi) { Iterator iter = lvm.getValidators().iterator(); 1.8 +40 -22 maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/validation/HTTPLinkValidator.java Index: HTTPLinkValidator.java =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/validation/HTTPLinkValidator.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- HTTPLinkValidator.java 17 Apr 2003 13:07:03 -0000 1.7 +++ HTTPLinkValidator.java 13 Sep 2003 21:48:08 -0000 1.8 @@ -56,6 +56,7 @@ * ==================================================================== */ +import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HostConfiguration; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpState; @@ -81,7 +82,6 @@ private static final LinkValidationResult LVR_VALID = new LinkValidationResult(LinkValidationResult.VALID, true); - private boolean proxy; private String proxyHost; private int proxyPort; private String proxyUser; @@ -91,19 +91,18 @@ { if (proxyHost == null) { - proxy = false; - System.out.println("maven-linkcheck-plugin: Not using a proxy"); + LOG.info("maven-linkcheck-plugin: Not using a proxy"); + this.proxyHost = null; } else { - proxy = true; this.proxyHost = proxyHost; this.proxyPort = Integer.parseInt(proxyPort); this.proxyUser = proxyUser; this.proxyPass = proxyPass; - System.out.println("maven-linkcheck-plugin: Proxy Host:" + proxyHost); - System.out.println("maven-linkcheck-plugin: Proxy Port:" + proxyPort); - System.out.println("maven-linkcheck-plugin: Proxy User:" + proxyUser); + LOG.info("maven-linkcheck-plugin: Proxy Host:" + proxyHost); + LOG.info("maven-linkcheck-plugin: Proxy Port:" + proxyPort); + LOG.info("maven-linkcheck-plugin: Proxy User:" + proxyUser); } } @@ -125,36 +124,38 @@ hc.setProxy(proxyHost, proxyPort); } HttpState state = new HttpState(); - + if (proxyUser != null && proxyPass != null) { - state.setProxyCredentials(null, new UsernamePasswordCredentials(proxyUser, proxyPass)); + state.setProxyCredentials(null, null, new UsernamePasswordCredentials(proxyUser, proxyPass)); } - GetMethod get = new GetMethod(link); cl.setHostConfiguration(hc); cl.setState(state); - get.setFollowRedirects(true); - + // execute the GET - int status = 404; - try - { - status = cl.executeMethod(get); - } - catch (Exception e) + GetMethod gm = checkLink(cl, link); + + if (gm.getStatusCode() == 302) { - System.out.println(e); + Header locationHeader = gm.getResponseHeader("Location"); + if (locationHeader == null) { + LOG.info("Site sent redirect, but did not set Location header"); + } else { + String newLink = locationHeader.getValue(); + LOG.debug("Following 1 redirect to " + newLink); + gm = checkLink(cl, newLink); + } } //FIXME: This constant is defined somewhere, but I can't remember where... - if (status == 200) + if (gm.getStatusCode() == 200) { return LVR_VALID; } else { - String msg = "Received: [" + status + "] for " + link; + String msg = "Received: [" + gm.getStatusCode() + "] for " + link; LOG.info(msg); System.out.println(msg); return LVR_INVALID; @@ -168,6 +169,23 @@ return LVR_INVALID; } + } + + private GetMethod checkLink(HttpClient cl, String link) + { + GetMethod gm = new GetMethod(link); + try + { + LOG.info("Checking link " + link); + gm.setFollowRedirects(true); + cl.executeMethod(gm); + LOG.debug("Checked link " + link); + } + catch (Exception e) + { + LOG.warn("Error validating " + link, e); + } + return gm; } /** 1.12 +12 -10 maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/FileToCheck.java Index: FileToCheck.java =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/FileToCheck.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- FileToCheck.java 7 Mar 2003 22:46:39 -0000 1.11 +++ FileToCheck.java 13 Sep 2003 21:48:08 -0000 1.12 @@ -146,9 +146,8 @@ { //We catch Throwable, because there is a chance that the domReader will throw //a stack overflow exception for some files - if (!(e instanceof Exception)) { - LOG.info("Caught " + e.toString()); - } + LOG.info("Caught " + e.toString() + " processing " + getName()); + LOG.info("Exception Message: " + e.getLocalizedMessage()); LinkCheckResult lcr = new LinkCheckResult(); lcr.setStatus("PARSE FAILURE"); lcr.setTarget("N/A"); @@ -179,7 +178,7 @@ { String href = (String) iter.next(); - //System.out.println("Link Found: " + href); + LOG.debug("Link Found: " + href); LinkCheckResult lcr = new LinkCheckResult(); @@ -189,21 +188,24 @@ switch (result.getStatus()) { - case LinkValidationResult.UNKNOWN : - unsuccessful++; - lcr.setStatus("UNKNOWN REF"); - break; case LinkValidationResult.VALID : successful++; lcr.setStatus("OK"); + this.links.add(lcr); //At some point we won't want to store valid links. The tests require that we do at present + break; + case LinkValidationResult.UNKNOWN : + unsuccessful++; + lcr.setStatus("UNKNOWN REF"); + this.links.add(lcr); break; case LinkValidationResult.INVALID : unsuccessful++; lcr.setStatus("NOT FOUND"); + this.links.add(lcr); break; } - this.links.add(lcr); + } } catch (Exception e) 1.10 +11 -12 maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/LinkCheck.java Index: LinkCheck.java =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/LinkCheck.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- LinkCheck.java 17 Apr 2003 12:58:33 -0000 1.9 +++ LinkCheck.java 13 Sep 2003 21:48:08 -0000 1.10 @@ -86,12 +86,10 @@ /** Log */ private static final Log LOG = LogFactory.getLog(LinkCheck.class); - /** - * Output file for xml document - */ + /** Output file for xml document */ private File output; - /** output encoding for the xml document */ + /** Output encoding for the xml document */ private String outputEncoding; private File baseDir; @@ -134,21 +132,21 @@ * @throws UnsupportedEncodingException if the underlying platform doesn't * support ISO-8859-1 encoding */ - List filesToCheck = null; //of FileToCheck + private List filesToCheck = null; //of FileToCheck public void doExecute() throws Exception { - - if (output == null) { throw new NullPointerException("output must be set"); } - LinkValidatorManager lvm = getLinkValidatorManager(); + LinkValidatorManager validator = getLinkValidatorManager(); filesToCheck = new ArrayList(); - lvm.loadCache(cache); + validator.loadCache(cache); List files = new ArrayList(); + LOG.debug("Locating all files to be checked..."); findFiles(files, baseDir); + LOG.debug("Located all files to be checked."); Iterator fileIter = files.iterator(); while (fileIter.hasNext()) { @@ -156,7 +154,8 @@ try { filesToCheck.add(flc); - flc.check(lvm); + LOG.info("Validating " + flc.getName()); + flc.check(validator); } catch (Exception e) { @@ -165,7 +164,7 @@ } createDocument(files); - lvm.saveCache(cache); + validator.saveCache(cache); } public List getFiles() 1.4 +6 -1 maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/LinkCheckResult.java Index: LinkCheckResult.java =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/src/main/org/apache/maven/linkcheck/LinkCheckResult.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- LinkCheckResult.java 3 Feb 2003 14:13:54 -0000 1.3 +++ LinkCheckResult.java 13 Sep 2003 21:48:08 -0000 1.4 @@ -104,6 +104,10 @@ this.target = target; } + /** + * Creates an XML representation of this link check result + * @return xml fragment representation of this result + */ public String toXML() { StringBuffer buf = new StringBuffer(); @@ -112,6 +116,7 @@ buf.append(" <target>" + XmlUtils.escapeXml(getTarget()) + "</target>\n"); buf.append(" <status>" + getStatus() + "</status>\n"); buf.append(" </result>\n"); + return buf.toString(); } 1.3 +0 -6 maven/src/plugins-build/linkcheck/src/plugin-resources/linkcheck-temp.xml Index: linkcheck-temp.xml =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/src/plugin-resources/linkcheck-temp.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- linkcheck-temp.xml 4 Feb 2003 06:37:34 -0000 1.2 +++ linkcheck-temp.xml 13 Sep 2003 21:48:08 -0000 1.3 @@ -10,12 +10,6 @@ <p> This file is used as a placeholder until the final link check can occur. </p> - - <p> - At present, you MUST set maven.linkcheck.enable=true in your project properties - to have the linkchecker run. Once it has stabilised, it will be turned on by default - (except in offline mode). - </p> </section> </body> </document> 1.31 +2 -2 maven/src/plugins-build/linkcheck/project.xml Index: project.xml =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/project.xml,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- project.xml 6 Sep 2003 07:28:55 -0000 1.30 +++ project.xml 13 Sep 2003 21:48:08 -0000 1.31 @@ -39,7 +39,7 @@ </dependency> <dependency> <id>commons-httpclient</id> - <version>2.0-alpha3</version> + <version>2.0-rc1</version> </dependency> <dependency> <id>commons-jelly</id> @@ -132,7 +132,7 @@ </dependency> <dependency> <id>werkz</id> - <version>1.0-beta-7</version> + <version>1.0-beta-10</version> <url>http://werkz.sourceforge.net/</url> <properties> <classloader>root.maven</classloader> 1.2 +2 -0 maven/src/plugins-build/linkcheck/.cvsignore Index: .cvsignore =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/.cvsignore,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- .cvsignore 30 Jan 2003 10:59:05 -0000 1.1 +++ .cvsignore 13 Sep 2003 21:48:08 -0000 1.2 @@ -1,3 +1,5 @@ target velocity.log maven.log +.classpath +.project 1.4 +0 -11 maven/src/plugins-build/linkcheck/maven.xml Index: maven.xml =================================================================== RCS file: /home/cvs/maven/src/plugins-build/linkcheck/maven.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- maven.xml 31 Jul 2003 05:39:57 -0000 1.3 +++ maven.xml 13 Sep 2003 21:48:08 -0000 1.4 @@ -1,14 +1,3 @@ <project default="jar:jar"> - - - <postGoal name="java:compile"> - <copy toDir="target/classes"> - <fileset dir="src/main"> - <includes name="**/*"/> - <excludes name="**/*.java"/> - </fileset> - </copy> - </postGoal> - </project>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]