bloritsch    02/01/11 11:58:39

  Modified:    src/java/org/apache/cocoon Main.java
  Log:
  add facility to list all broken links to a file
  
  Revision  Changes    Path
  1.10      +32 -3     xml-cocoon2/src/java/org/apache/cocoon/Main.java
  
  Index: Main.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/Main.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Main.java 11 Jan 2002 19:32:10 -0000      1.9
  +++ Main.java 11 Jan 2002 19:58:39 -0000      1.10
  @@ -81,6 +81,8 @@
   import java.io.FileNotFoundException;
   import java.io.FileOutputStream;
   import java.io.FileReader;
  +import java.io.FileWriter;
  +import java.io.PrintWriter;
   import java.io.IOException;
   import java.io.OutputStream;
   import java.io.PrintStream;
  @@ -97,7 +99,7 @@
    * Command line entry point.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Stefano Mazzocchi</a>
  - * @version CVS $Revision: 1.9 $ $Date: 2002/01/11 19:32:10 $
  + * @version CVS $Revision: 1.10 $ $Date: 2002/01/11 19:58:39 $
    */
   public class Main {
   
  @@ -118,11 +120,16 @@
       protected static final int URI_FILE =         'f';
       protected static final int FOLLOW_LINKS_OPT = 'r';
       protected static final int CONFIG_FILE =      'C';
  +    protected static final int BROKEN_LINK_FILE = 'b';
   
       protected static final String DEFAULT_USER_AGENT = Constants.COMPLETE_NAME;
       protected static final String DEFAULT_ACCEPT = "text/html, */*";
   
       protected static final CLOptionDescriptor [] OPTIONS = new CLOptionDescriptor 
[] {
  +        new CLOptionDescriptor("brokenLinkFile",
  +                               CLOptionDescriptor.ARGUMENT_REQUIRED,
  +                               BROKEN_LINK_FILE,
  +                               "send a list of broken links to a file (1 uri per 
line)"),
           new CLOptionDescriptor("uriFile",
                                  CLOptionDescriptor.ARGUMENT_REQUIRED,
                                  URI_FILE,
  @@ -222,6 +229,7 @@
           String destDir = Constants.DEFAULT_DEST_DIR;
           String contextDir = Constants.DEFAULT_CONTEXT_DIR;
           String configFile = null;
  +        File brokenLinkFile = null;
           String workDir = Constants.DEFAULT_WORK_DIR;
           List targets = new ArrayList();
           CLArgsParser parser = new CLArgsParser(args, OPTIONS);
  @@ -299,6 +307,11 @@
                   case Main.FOLLOW_LINKS_OPT:
                       followLinks = "yes".equals(option.getArgument())
                           || "true".equals(option.getArgument());
  +                    break;
  +
  +                case Main.BROKEN_LINK_FILE:
  +                    brokenLinkFile = new File(option.getArgument());
  +                    break;
               }
           }
   
  @@ -383,7 +396,7 @@
               c.contextualize(appContext);
               c.setLogKitManager(logKitManager);
               c.initialize();
  -            Main main = new Main(c, context, dest);
  +            Main main = new Main(c, context, dest, brokenLinkFile);
               main.userAgent = userAgent;
               main.accept = accept;
               main.followLinks = followLinks;
  @@ -499,6 +512,7 @@
       private Cocoon cocoon;
       private File destDir;
       private File context;
  +    private PrintWriter brokenLinkWriter;
       private Map attributes;
       private HashMap empty;
       private Map allProcessedLinks;
  @@ -513,10 +527,15 @@
        * @param context a <code>File</code> for the context directory
        * @param destDir a <code>File</code> for the destination directory
        */
  -    public Main(Cocoon cocoon, File context, File destDir) {
  +    public Main(Cocoon cocoon, File context, File destDir, File brokenLinks) {
           this.cocoon = cocoon;
           this.context = context;
           this.destDir = destDir;
  +        try {
  +            this.brokenLinkWriter = new PrintWriter(new FileWriter(brokenLinks), 
true);
  +        } catch (IOException ioe) {
  +            log.error("File does not exist: " + brokenLinks.getAbsolutePath());
  +        }
           this.attributes = new HashMap();
           this.empty = new HashMap();
           this.allProcessedLinks = new HashMap();
  @@ -575,6 +594,9 @@
                   }
               } catch (ResourceNotFoundException rnfe) {
                   log.warn("  [broken link]--> " + url);
  +                if (null != this.brokenLinkWriter) {
  +                    this.brokenLinkWriter.println(url);
  +                }
               }
               links.remove(url);
               nCount++;
  @@ -702,6 +724,10 @@
                       absoluteLinks.add(absoluteLink);
                   } catch (ResourceNotFoundException rnfe) {
                       log.warn("  [broken link]--> " + absoluteLink);
  +
  +                    if (null != this.brokenLinkWriter) {
  +                        this.brokenLinkWriter.println(absoluteLink);
  +                    }
                       continue;
                   }
               }
  @@ -719,6 +745,9 @@
   
               if (type == null) {
                   log.warn("  [broken link]--> " + filename);
  +                if (null != this.brokenLinkWriter) {
  +                    this.brokenLinkWriter.println(filename);
  +                }
                   resourceUnavailable(file);
               } else {
                   log.info("  [" + type + "]--> " + filename);
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to