You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ni...@apache.org on 2002/08/24 02:11:08 UTC

cvs commit: xml-cocoon2/src/java/org/apache/cocoon Main.java

nicolaken    2002/08/23 17:11:08

  Modified:    .        changes.xml
               src/java/org/apache/cocoon Main.java
  Log:
    <action dev="NKB" type="update">
     Commandline Cocoon (Main.java) now doesn't stop anymore on broken links,
     but inserts an error page instead and correctly notifies it in the
     broken links file if requested.
    </action>
  
  Revision  Changes    Path
  1.236     +6 -1      xml-cocoon2/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/changes.xml,v
  retrieving revision 1.235
  retrieving revision 1.236
  diff -u -r1.235 -r1.236
  --- changes.xml	19 Aug 2002 08:27:42 -0000	1.235
  +++ changes.xml	24 Aug 2002 00:11:08 -0000	1.236
  @@ -39,6 +39,11 @@
    </devs>
   
    <release version="@version@" date="@date@">
  +  <action dev="NKB" type="update">
  +   Commandline Cocoon (Main.java) now doesn't stop anymore on broken links, 
  +   but inserts an error page instead and correctly notifies it in the
  +   broken links file if requested.
  +  </action>
     <action dev="SMS" type="update">
      Add the methods 'copy', 'move' and 'delete' to the WriteableSource 
      interface.
  
  
  
  1.24      +64 -22    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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- Main.java	31 Jul 2002 13:13:21 -0000	1.23
  +++ Main.java	24 Aug 2002 00:11:08 -0000	1.24
  @@ -67,6 +67,11 @@
   import org.apache.cocoon.util.IOUtils;
   import org.apache.cocoon.util.MIMEUtils;
   import org.apache.cocoon.util.NetUtils;
  +import org.apache.cocoon.ProcessingException;
  +import org.apache.cocoon.components.notification.Notifying;
  +import org.apache.cocoon.components.notification.SimpleNotifyingBean;
  +import org.apache.cocoon.components.notification.DefaultNotifyingBuilder;
  +import org.apache.cocoon.components.notification.Notifier;
   import org.apache.log.Hierarchy;
   import org.apache.log.Logger;
   import org.apache.log.Priority;
  @@ -329,7 +334,7 @@
           Hierarchy.getDefaultHierarchy().setDefaultPriority(priority);
           log = Hierarchy.getDefaultHierarchy().getLoggerFor("");
           
  -        System.out.print(".");
  +        if (verbose) System.out.print(".");
           
           if (destDir.equals("")) {
               String error = "Careful, you must specify a destination dir when using the -d/--destDir argument";
  @@ -639,6 +644,7 @@
                       this.brokenLinkWriter.println(url);
                   }
               }
  +        
               links.remove(url);
               nCount++;
   
  @@ -726,7 +732,7 @@
        * @exception Exception if an error occurs
        */
       public Collection processURI(String uri) throws Exception {
  -    
  +
           log.info("Processing URI: " + uri);
           if (verbose) System.out.println("URI: " + uri);
           if (verbose) System.out.print("  getting links: .");
  @@ -749,6 +755,7 @@
           }
   
           String filename = (String)allTranslatedLinks.get(suri);
  +        
           if (filename == null) {
               filename = mangle(suri);
               final String type = getType(deparameterizedURI, parameters);
  @@ -758,6 +765,7 @@
                   filename += defaultExt;
               }
               allTranslatedLinks.put(suri, filename);
  +      
           }
           // Store processed URI list to avoid eternal loop
           allProcessedLinks.put(suri, filename);
  @@ -791,17 +799,22 @@
                       if (verbose) System.out.print(".");                    
                       allTranslatedLinks.put(absoluteLink, translatedAbsoluteLink);
                       absoluteLinks.add(absoluteLink);
  -                } catch (ResourceNotFoundException rnfe) {
  +                }    
  +                catch (ProcessingException pe) {
                       log.warn("  [broken link]--> " + absoluteLink);
                       if (verbose) System.out.println("\n  [broken link]--> " + absoluteLink);
                       
                       if (null != this.brokenLinkWriter) {
                           this.brokenLinkWriter.println(absoluteLink);
                       }
  -                    continue;
  -                }
  -            }
   
  +                    //continue;
  +                }                
  +            }
  +            
  +            //I have to add also broken links to the absolute links
  +            //to be able to generate the "broken link" page
  +            absoluteLinks.add(absoluteLink);  
               final String translatedRelativeLink = NetUtils.relativize(path, translatedAbsoluteLink);
               translatedLinks.put(link, translatedRelativeLink);
           }
  @@ -814,7 +827,7 @@
               OutputStream output = new BufferedOutputStream(new FileOutputStream(file));
               String type = getPage(deparameterizedURI, parameters, translatedLinks, output);
               output.close();
  -
  +            //NKB impossible, already checked before
               if (type == null) {
                   log.warn("  [broken link]--> " + filename);
                   if (verbose) System.out.println("  [broken link]--> " + filename);
  @@ -822,7 +835,7 @@
                   if (null != this.brokenLinkWriter) {
                       this.brokenLinkWriter.println(filename);
                   }
  -                resourceUnavailable(file);
  +                resourceUnavailable(file, uri);
               } else {
                   log.info("  [" + type + "]--> " + filename);
                   if (verbose) System.out.println("  [" + type + "]--> " + filename);    
  @@ -833,6 +846,7 @@
           }
   
           return absoluteLinks;
  +      
       }
   
       /**
  @@ -871,16 +885,22 @@
        * @param file being unavailable
        * @exception IOException if an error occurs
        */
  -    private void resourceUnavailable(File file) throws IOException {
  +    private void resourceUnavailable(File file, String uri) throws IOException {
  +    
  +        SimpleNotifyingBean n = new SimpleNotifyingBean(this);
  +        n.setType("resource-not-found");
  +        n.setTitle("Resource not Found");
  +        n.setSource("Cocoon commandline (Main.java)");
  +        n.setMessage("Page Not Available.");
  +        n.setDescription("The requested resource couldn't be found.");
  +        n.addExtraDescription("request-uri", uri);
  +        n.addExtraDescription("missing-file", file.toString());
  +
           PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream(file)));
  -        out.println(
  -            new StringBuffer("<html><head><title>Page Not Available</title></head>")
  -                .append("<body><h1 align=\"center\">Page Not Available</h1>")
  -                .append("<body><p align=\"center\">Generated by ")
  -                .append(Constants.COMPLETE_NAME)
  -                .append("</p></body></html>")
  -        );
  -        out.close();
  +        Notifier.notify(n, out, "text/html");
  +        out.flush();
  +        out.close();  
  +
       }
   
       /**
  @@ -946,7 +966,7 @@
                     attributes,
                     parameters,
                     new LogKitLogger(this.log));
  -        cocoon.process(env);
  +        processLenient(env);
           return env.getLinks();
       }
   
  @@ -968,8 +988,12 @@
                           links,
                           stream,
                           new LogKitLogger(this.log));
  -        cocoon.process(env);
  -        return env.getContentType();
  +        if(processLenient(env)==true){
  +          return env.getContentType();
  +        }
  +        else{
  +          return null;
  +        }
       }
   
       /** Class <code>NullOutputStream</code> here. */
  @@ -996,10 +1020,28 @@
                        empty,
                        new NullOutputStream(),
                        new LogKitLogger(this.log));
  -        cocoon.process(env);
  +        processLenient(env);
           return env.getContentType();
       }
   
  +    /**
  +     * Try to process something but don't throw a ProcessingException.
  +     *
  +     * @param env the <code>Environment</code> to process
  +     * @returns boolean true if no error were cast, false otherwise
  +     * @exception Exception if an error occurs, except RNFE
  +     */
  +    private boolean processLenient(Environment env) throws Exception {
  +       try{
  +            cocoon.process(env);
  +       }
  +       catch(ProcessingException pe){
  +         return false;
  +       }
  +
  +       return true;
  +    }
  +    
       /**
        * This builds the important ClassPath used by this class.  It
        * does so in a neutral way.
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org