You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2007/10/25 15:07:47 UTC

svn commit: r588222 [2/2] - in /maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src: main/java/org/apache/maven/jxr/java/src/ test/java/org/apache/maven/jxr/java/src/

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/Pass2.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/Pass2.java?rev=588222&r1=588221&r2=588222&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/Pass2.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/Pass2.java Thu Oct 25 06:07:38 2007
@@ -19,9 +19,6 @@
  * under the License.
  */
 
-import org.apache.log4j.Logger;
-import org.apache.maven.jxr.java.src.symtab.ReferenceTypes;
-
 import java.io.BufferedOutputStream;
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
@@ -42,9 +39,12 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.StringTokenizer;
 import java.util.Vector;
 
+import org.apache.log4j.Logger;
+import org.apache.maven.jxr.java.src.symtab.ReferenceTypes;
+import org.codehaus.plexus.util.StringUtils;
+
 /**
  * Cross-reference generation pass.
  * <p/>
@@ -58,23 +58,11 @@
  * @version $Id$
  */
 public class Pass2
+    extends AbstractPass
 {
-    /** Field USAGE */
-    public static final String USAGE = "Usage: java -DdestDir=<doc dir> [-Dtitle=<title>] [-Dverbose=true] "
-        + Pass2.class.getName();
-
     /** Logger for this class  */
     private static final Logger log = Logger.getLogger( Pass2.class );
 
-    /** Output dir */
-    private String destDir;
-
-    /** Title to be placed in the HTML title tag */
-    private String title;
-
-    /** Specify verbose information */
-    private boolean verbose;
-
     ArrayList packageNames;
 
     Hashtable packageClasses;
@@ -85,9 +73,13 @@
 
     /**
      * Constructor Pass2
+     *
+     * @param conf object
      */
-    public Pass2()
+    public Pass2( JavaSrcOptions conf )
     {
+        super( conf );
+
         packageNames = new ArrayList();
         packageClasses = new Hashtable();
     }
@@ -97,75 +89,9 @@
     // ----------------------------------------------------------------------
 
     /**
-     * @return the output dir
-     */
-    public String getDestDir()
-    {
-        return this.destDir;
-    }
-
-    /**
-     * @param d a new output dir
-     */
-    public void setDestDir( String d )
-    {
-        this.destDir = d;
-    }
-
-    /**
-     * @return the windows title
-     */
-    public String getTitle()
-    {
-        return this.title;
-    }
-
-    /**
-     * @param t a new windows title
-     */
-    public void setTitle( String t )
-    {
-        this.title = t;
-    }
-
-    /**
-     * @return verbose information
-     */
-    public boolean isVerbose()
-    {
-        return this.verbose;
-    }
-
-    /**
-     * @param verbose true to verbose information, false otherwise
-     */
-    public void setVerbose( boolean verbose )
-    {
-        this.verbose = verbose;
-    }
-
-    /**
-     * Main method to pass Java source files.
-     *
-     * @param args not used
-     * @see #initializeDefaults()
-     * @see #run(String[])
-     * @throws Exception if any
-     */
-    public void main( String args[] )
-        throws Exception
-    {
-        Pass2 p2 = new Pass2();
-
-        p2.initializeDefaults();
-        p2.run( args );
-    }
-
-    /**
-     * @param args not used
      * @throws IOException if any
      */
-    public void run( String[] args )
+    public void run()
         throws IOException
     {
         File outDir = new File( getDestDir() );
@@ -196,46 +122,6 @@
         createOverviewSummaryFrame();
     }
 
-    /**
-     * Initialize defaults fields
-     */
-    public void initializeDefaults()
-    {
-        String outdir = System.getProperty( "destDir" );
-
-        if ( outdir == null )
-        {
-            outdir = Pass1.DEFAULT_DIR;
-        }
-
-        setDestDir( outdir );
-
-        String t = System.getProperty( "title" );
-
-        if ( t == null )
-        {
-            t = "Pass2: " + outdir;
-        }
-
-        setTitle( t );
-
-        boolean v = false;
-        String verboseStr = System.getProperty( "verbose" );
-
-        if ( verboseStr != null )
-        {
-            verboseStr = verboseStr.trim();
-
-            if ( verboseStr.equalsIgnoreCase( "on" ) || verboseStr.equalsIgnoreCase( "true" )
-                || verboseStr.equalsIgnoreCase( "yes" ) || verboseStr.equalsIgnoreCase( "1" ) )
-            {
-                v = true;
-            }
-        }
-
-        setVerbose( v );
-    }
-
     // ----------------------------------------------------------------------
     // Private methods
     // ----------------------------------------------------------------------
@@ -254,7 +140,6 @@
 
         if ( refFile.exists() )
         {
-
             // packageNames.add(packageName);
             // processRefFile(packageName, refFile);
             processRefFile( packageName, refFile );
@@ -268,7 +153,6 @@
         }
 
         File[] entries = outDir.listFiles();
-
         for ( int i = 0; i < entries.length; i++ )
         {
             if ( entries[i].isDirectory() )
@@ -344,7 +228,6 @@
 
             if ( !ref.getReferentFileClass().equals( prevReferentFileClass ) )
             {
-
                 // close current section, if any
                 if ( prevReferentTag != null )
                 {
@@ -448,14 +331,24 @@
 
         File outFile = new File( rootDir, relPath );
         FileOutputStream fos = new FileOutputStream( outFile );
-        OutputStreamWriter fw = new OutputStreamWriter( fos, "UTF-8" );
+        OutputStreamWriter fw;
+        if ( StringUtils.isNotEmpty( getOptions().getEncoding() ) )
+        {
+            fw = new OutputStreamWriter( fos, getOptions().getEncoding() );
+        }
+        else
+        {
+            fw = new OutputStreamWriter( fos );
+        }
         BufferedWriter result = new BufferedWriter( fw );
 
         result.write( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
             + "\"http://www.w3.org/TR/html4/loose.dtd\">\n" );
         result.write( "<html>" );
         result.write( "<head>\n" );
-        result.write( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" );
+        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
+            .getDocencoding() : System.getProperty( "file.encoding" ) );
+        result.write( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">\n" );
         result.write( "<title>" + packageName + "." + ref.getReferentFileClass() + " References</title>\n" );
         result.write( "<link rel=\"stylesheet\" type=\"text/css\" " + "href=\"" + getBackupPath( packageName )
             + "styles.css\">\n" );
@@ -598,42 +491,6 @@
         return result;
     }
 
-    // lifted from Pass1.java -- still need it in Pass1?  If so, share.
-
-    /**
-     * Method getBackupPath
-     *
-     * @param packageName
-     * @return
-     */
-    private String getBackupPath( String packageName )
-    {
-        StringTokenizer st = new StringTokenizer( packageName, "." );
-        String backup = "";
-        int dirs = 0;
-        String newPath;
-
-        if ( log.isDebugEnabled() )
-        {
-            log.debug( "getBackupPath(String) - String packageName=" + packageName );
-        }
-        dirs = st.countTokens();
-
-        for ( int j = 0; j < dirs; j++ )
-        {
-            backup = backup + "../"; // _separatorChar;
-        }
-
-        newPath = backup;
-
-        if ( log.isDebugEnabled() )
-        {
-            log.debug( "getBackupPath(String) - String newPath=" + newPath );
-        }
-
-        return ( newPath );
-    }
-
     /**
      * Method createPackageFiles
      */
@@ -674,7 +531,9 @@
                     + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
                 pw.println( "<html>" );
                 pw.println( "<head>" );
-                pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">" );
+                String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
+                    .getDocencoding() : System.getProperty( "file.encoding" ) );
+                pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
                 pw.println( "<title>" + packageName + "</title>" );
                 pw.println( "<LINK rel=\"stylesheet\" type=\"text/css\" " + "href=\"" + getBackupPath( packageName )
                     + "styles.css\">" );
@@ -722,6 +581,7 @@
         }
 
         println( totalClassCount + " classes total" );
+        println( "" );
     }
 
     /**
@@ -801,12 +661,13 @@
     {
         return new Comparator()
         {
-
+            /** {@inheritDoc} */
             public int compare( Object o1, Object o2 )
             {
                 return ( (String) o1 ).compareTo( (String) o2 );
             }
 
+            /** {@inheritDoc} */
             public boolean equals( Object o )
             {
                 return false;
@@ -823,7 +684,7 @@
     {
         return new Comparator()
         {
-
+            /** {@inheritDoc} */
             public int compare( Object o1, Object o2 )
             {
                 ClassFileEntry cf1 = (ClassFileEntry) o1;
@@ -832,6 +693,7 @@
                 return cf1.getClassName().compareTo( cf2.getClassName() );
             }
 
+            /** {@inheritDoc} */
             public boolean equals( Object o )
             {
                 return false;
@@ -841,43 +703,54 @@
 
     /**
      * Method createIndex
+     *
+     * @throws IOException if any
      */
     private void createIndex()
+        throws IOException
     {
         String fileName = getDestDir() + File.separatorChar + "index.html";
         File file = new File( fileName );
 
         createDirs( file );
 
-        try
-        {
-            PrintWriter pw = new PrintWriter( new BufferedOutputStream( new FileOutputStream( file ) ) );
+        PrintWriter pw = new PrintWriter( new BufferedOutputStream( new FileOutputStream( file ) ) );
 
-            pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" "
-                + "\"http://www.w3.org/TR/html4/frameset.dtd\">" );
-            pw.println( "<TITLE>" + getTitle() + "</TITLE>" );
-            pw.println( "<FRAMESET cols=\"20%,80%\">" );
-            pw.println( "  <FRAMESET rows=\"30%,70%\">" );
-            pw.println( "    <FRAME src=\"overview-frame.html\" name=\"packageListFrame\">" );
-            pw.println( "    <FRAME src=\"allclasses-frame.html\" name=\"packageFrame\">" );
-            pw.println( "  </FRAMESET>" );
-            pw.println( "  " );
-            pw.println( "  <FRAMESET rows=\"*\">" );
-            pw.println( "    <FRAME src=\"overview-summary.html\" name=\"classFrame\">" );
-            pw.println( "  </FRAMESET>" );
-            pw.println( "</FRAMESET>" );
-            pw.close();
+        pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" "
+            + "\"http://www.w3.org/TR/html4/frameset.dtd\">" );
+        pw.println( "<head>" );
+        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
+            .getDocencoding() : System.getProperty( "file.encoding" ) );
+        pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
+        if ( StringUtils.isNotEmpty( getOptions().getWindowtitle() ) )
+        {
+            pw.println( "<title>" + getOptions().getWindowtitle() + "</title>" );
         }
-        catch ( Exception e )
+        else
         {
-            log.error( "Exception: " + e.getMessage(), e );
+            pw.println( "<title>JavaSrc</title>" );
         }
+        pw.println( "</head>" );
+        pw.println( "<frameset cols=\"20%,80%\">" );
+        pw.println( "  <frameset rows=\"30%,70%\">" );
+        pw.println( "    <frame src=\"overview-frame.html\" name=\"packageListFrame\">" );
+        pw.println( "    <frame src=\"allclasses-frame.html\" name=\"packageFrame\">" );
+        pw.println( "  </frameset>" );
+        pw.println( "  " );
+        pw.println( "  <frameset rows=\"*\">" );
+        pw.println( "    <frame src=\"overview-summary.html\" name=\"classFrame\">" );
+        pw.println( "  </frameset>" );
+        pw.println( "</frameset>" );
+        pw.close();
     }
 
     /**
      * Create the HTML for the list of all packages.
+     *
+     * @throws IOException if any
      */
     private void createOverviewFrame()
+        throws IOException
     {
         String packageName;
         String packageFileName;
@@ -886,93 +759,92 @@
 
         createDirs( file );
 
-        try
-        {
-            PrintWriter pw = new PrintWriter( new BufferedOutputStream( new FileOutputStream( file ) ) );
-            Iterator iter = packageNames.iterator();
-
-            pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
-                + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
-            pw.println( "<html>" );
-            pw.println( "<head>" );
-            pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">" );
-            pw.println( "<title>Overview</title>" );
-            pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">" );
-            pw.println( "</head>" );
-            pw.println( "<body>" );
-
-            pw.println( "<h3><a href=\"allclasses-frame.html\" target=\"packageFrame\">All Classes</a></h3>" );
-            pw.println( "<h3>Packages</h3>" );
-            while ( iter.hasNext() )
-            {
-                packageName = (String) iter.next();
-                packageFileName = packageName.replace( '.', '/' ) + '/' + "classList.html";
+        PrintWriter pw = new PrintWriter( new BufferedOutputStream( new FileOutputStream( file ) ) );
+        Iterator iter = packageNames.iterator();
 
-                pw.println( "<p class=\"packageListItem\"><A HREF=\"" + packageFileName + "\" TARGET=\"packageFrame\">"
-                    + packageName + "</A></p>" );
-            }
-
-            pw.println( "</body></html>" );
-            pw.close();
+        pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
+            + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
+        pw.println( "<html>" );
+        pw.println( "<head>" );
+        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
+            .getDocencoding() : System.getProperty( "file.encoding" ) );
+        pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
+        pw.println( "<title>Overview</title>" );
+        pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">" );
+        pw.println( "</head>" );
+        pw.println( "<body>" );
+        if ( StringUtils.isNotEmpty( getOptions().getPackagesheader() ) )
+        {
+            pw.println( "<b>" + getOptions().getPackagesheader() + "</b>" );
         }
-        catch ( Exception e )
+        pw.println( "<h3><a href=\"allclasses-frame.html\" target=\"packageFrame\">All Classes</a></h3>" );
+        pw.println( "<h3>Packages</h3>" );
+        while ( iter.hasNext() )
         {
-            log.error( "Exception: " + e.getMessage(), e );
+            packageName = (String) iter.next();
+            packageFileName = packageName.replace( '.', '/' ) + '/' + "classList.html";
+
+            pw.println( "<p class=\"packageListItem\"><A HREF=\"" + packageFileName + "\" TARGET=\"packageFrame\">"
+                + packageName + "</A></p>" );
         }
+
+        pw.println( "</body></html>" );
+        pw.close();
     }
 
     /**
      * Method createAllClassesFrame
+     *
+     * @throws IOException if any
      */
     private void createAllClassesFrame()
+        throws IOException
     {
         String fileName = getDestDir() + File.separatorChar + "allclasses-frame.html";
         File file = new File( fileName );
 
         createDirs( file );
 
-        try
-        {
-            PrintWriter pw = new PrintWriter( new FileOutputStream( file ) );
-
-            pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
-                + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
-            pw.println( "<html>" );
-            pw.println( "<head>" );
-            pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">" );
-            pw.println( "<title>All classes</title>" );
-            pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">" );
-            pw.println( "</head>" );
-            pw.println( "<body>" );
+        PrintWriter pw = new PrintWriter( new FileOutputStream( file ) );
 
-            pw.println( "<h3>All Classes</h3>" );
-            Iterator iter = orderedAllClasses().iterator();
+        pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
+            + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
+        pw.println( "<html>" );
+        pw.println( "<head>" );
+        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
+            .getDocencoding() : System.getProperty( "file.encoding" ) );
+        pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
+        pw.println( "<title>All classes</title>" );
+        pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">" );
+        pw.println( "</head>" );
+        pw.println( "<body>" );
 
-            while ( iter.hasNext() )
-            {
-                ClassFileEntry cf = (ClassFileEntry) iter.next();
-                String className = cf.getClassName();
-                String fileClassName = cf.getFileName();
-                String anchor = className;
-                String tag = "<p class=\"classListItem\"><a href=\"" + fileClassName + "_java.html#" + anchor
-                    + "\" TARGET=\"classFrame\">" + className + "</a></p>";
-
-                pw.println( tag );
-            }
+        pw.println( "<h3>All Classes</h3>" );
+        Iterator iter = orderedAllClasses().iterator();
 
-            pw.println( "</body></html>" );
-            pw.close();
-        }
-        catch ( Exception e )
+        while ( iter.hasNext() )
         {
-            log.error( "Exception: " + e.getMessage(), e );
+            ClassFileEntry cf = (ClassFileEntry) iter.next();
+            String className = cf.getClassName();
+            String fileClassName = cf.getFileName();
+            String anchor = className;
+            String tag = "<p class=\"classListItem\"><a href=\"" + fileClassName + "_java.html#" + anchor
+                + "\" TARGET=\"classFrame\">" + className + "</a></p>";
+
+            pw.println( tag );
         }
+
+        pw.println( "</body></html>" );
+        pw.close();
     }
 
     /**
      * Method createPackageFiles
+     *
+     * @throws IOException if any
      */
     private void createPackageSummaryFiles()
+        throws IOException
     {
         String packageName;
         String fileName;
@@ -1001,65 +873,66 @@
 
             createDirs( file );
 
-            try
-            {
-                pw = new PrintWriter( new BufferedOutputStream( new FileOutputStream( file ) ) );
-
-                pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
-                    + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
-                pw.println( "<html>" );
-                pw.println( "<head>" );
-                pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">" );
-                pw.println( "<title>" + packageName + " Summary</title>" );
-                pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"" + getBackupPath( packageName )
-                    + "styles.css\">" );
-                pw.println( "</head>" );
-                pw.println( "<body>" );
-
-                createPackageSummaryFilesExtras( pw, getBackupPath( packageName ), "package-summary.html" );
+            pw = new PrintWriter( new BufferedOutputStream( new FileOutputStream( file ) ) );
 
-                pw.println( "<h2>" + packageName + "</h2>" );
+            pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
+                + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
+            pw.println( "<html>" );
+            pw.println( "<head>" );
+            String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
+                .getDocencoding() : System.getProperty( "file.encoding" ) );
+            pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
+            pw.println( "<title>" + packageName + " Summary</title>" );
+            pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"" + getBackupPath( packageName )
+                + "styles.css\">" );
+            pw.println( "</head>" );
+            pw.println( "<body>" );
 
-                pw.println( "<table class=\"summary\">" );
-                pw.println( "<thead>" );
-                pw.println( "<tr>" );
-                pw.println( "<th>Class Summary</th>" );
-                pw.println( "</tr>" );
-                pw.println( "</thead>" );
-                pw.println( "<tbody>" );
+            if ( StringUtils.isNotEmpty( getOptions().getTop() ) )
+            {
+                pw.println( getOptions().getTop() );
+                pw.println( "<hr>" );
+            }
 
-                Iterator iter = classes.iterator();
+            createPackageSummaryFilesExtras( pw, getBackupPath( packageName ), "package-summary.html" );
 
-                while ( iter.hasNext() )
-                {
-                    ClassFileEntry cf = (ClassFileEntry) iter.next();
-                    String className = cf.getClassName();
-                    String fileClassName = cf.getFileName();
-                    String anchor;
+            pw.println( "<h2>" + packageName + "</h2>" );
 
-                    anchor = className;
-                    pw.println( "<tr>" );
-                    pw.println( "<td>" );
-                    pw.println( "<a href=\"" + fileClassName + "_java.html#" + anchor + "\" TARGET=\"classFrame\">"
-                        + className + "</a>" );
-                    pw.println( "</td>" );
-                    pw.println( "</tr>" );
-                }
-                pw.println( "</tbody>" );
-                pw.println( "</table>" );
+            pw.println( "<table class=\"summary\">" );
+            pw.println( "<thead>" );
+            pw.println( "<tr>" );
+            pw.println( "<th>Class Summary</th>" );
+            pw.println( "</tr>" );
+            pw.println( "</thead>" );
+            pw.println( "<tbody>" );
 
-                createPackageSummaryFilesExtras( pw, getBackupPath( packageName ), "package-summary.html" );
+            Iterator iter = classes.iterator();
 
-                pw.println( "<hr>" );
-                pw.println( "<div class=\"bottom\">Copyright &copy; 2001-2003 Apache Software Foundation. "
-                    + "All Rights Reserved.</div>" );
-                pw.println( "</body></html>" );
-                pw.close();
-            }
-            catch ( Exception ex )
+            while ( iter.hasNext() )
             {
-                log.error( "Error writing file:" + fileName, ex );
+                ClassFileEntry cf = (ClassFileEntry) iter.next();
+                String className = cf.getClassName();
+                String fileClassName = cf.getFileName();
+                String anchor;
+
+                anchor = className;
+                pw.println( "<tr>" );
+                pw.println( "<td>" );
+                pw.println( "<a href=\"" + fileClassName + "_java.html#" + anchor + "\" TARGET=\"classFrame\">"
+                    + className + "</a>" );
+                pw.println( "</td>" );
+                pw.println( "</tr>" );
             }
+            pw.println( "</tbody>" );
+            pw.println( "</table>" );
+
+            createPackageSummaryFilesExtras( pw, getBackupPath( packageName ), "package-summary.html" );
+
+            pw.println( "<hr>" );
+            pw.println( "<div class=\"bottom\">Copyright &copy; 2001-2003 Apache Software Foundation. "
+                + "All Rights Reserved.</div>" );
+            pw.println( "</body></html>" );
+            pw.close();
         }
     }
 
@@ -1085,67 +958,75 @@
 
     /**
      * Method createOverviewSummaryFrame
+     *
+     * @throws IOException if any
      */
     private void createOverviewSummaryFrame()
+        throws IOException
     {
         String fileName = getDestDir() + File.separatorChar + "overview-summary.html";
         File file = new File( fileName );
 
         createDirs( file );
 
-        try
+        PrintWriter pw = new PrintWriter( new FileOutputStream( file ) );
+
+        pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
+            + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
+        pw.println( "<html>" );
+        pw.println( "<head>" );
+        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
+            .getDocencoding() : System.getProperty( "file.encoding" ) );
+        pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
+        pw.println( "<title>Overview</title>" );
+        pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">" );
+        pw.println( "</head>" );
+        pw.println( "<body>" );
+
+        if ( StringUtils.isNotEmpty( getOptions().getTop() ) )
         {
-            PrintWriter pw = new PrintWriter( new FileOutputStream( file ) );
+            pw.println( getOptions().getTop() );
+            pw.println( "<hr>" );
+        }
 
-            pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
-                + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
-            pw.println( "<html>" );
-            pw.println( "<head>" );
-            pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">" );
-            pw.println( "<title>Overview</title>" );
-            pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">" );
-            pw.println( "</head>" );
-            pw.println( "<body>" );
+        createOverviewSummaryFrameExtras( pw );
 
-            createOverviewSummaryFrameExtras( pw );
+        pw.println( "<h2>" + getOptions().getDoctitle() + "</h2>" );
 
-            pw.println( "<h2>" + getTitle() + "</h2>" );
+        pw.println( "<table class=\"summary\">" );
+        pw.println( "<thead>" );
+        pw.println( "<tr>" );
+        pw.println( "<th>Packages</th>" );
+        pw.println( "</tr>" );
+        pw.println( "</thead>" );
+        pw.println( "<tbody>" );
+
+        Iterator iter = packageNames.iterator();
+        while ( iter.hasNext() )
+        {
+            String packageName = (String) iter.next();
+            String packageFileName = packageName.replace( '.', '/' ) + '/' + "package-summary.html";
 
-            pw.println( "<table class=\"summary\">" );
-            pw.println( "<thead>" );
             pw.println( "<tr>" );
-            pw.println( "<th>Packages</th>" );
+            pw.println( "<td>" );
+            pw.println( "<a href=\"" + packageFileName + "\">" + packageName + "</a>" );
+            pw.println( "</td>" );
             pw.println( "</tr>" );
-            pw.println( "</thead>" );
-            pw.println( "<tbody>" );
-
-            Iterator iter = packageNames.iterator();
-            while ( iter.hasNext() )
-            {
-                String packageName = (String) iter.next();
-                String packageFileName = packageName.replace( '.', '/' ) + '/' + "package-summary.html";
-
-                pw.println( "<tr>" );
-                pw.println( "<td>" );
-                pw.println( "<a href=\"" + packageFileName + "\">" + packageName + "</a>" );
-                pw.println( "</td>" );
-                pw.println( "</tr>" );
-            }
+        }
 
-            pw.println( "</tbody>" );
-            pw.println( "</table>" );
+        pw.println( "</tbody>" );
+        pw.println( "</table>" );
 
-            createOverviewSummaryFrameExtras( pw );
-            pw.println( "<hr>" );
-            pw.println( "<div class=\"bottom\">Copyright &copy; 2001-2003 Apache Software Foundation. "
-                + "All Rights Reserved.</div>" );
-            pw.println( "</body></html>" );
-            pw.close();
-        }
-        catch ( Exception e )
-        {
-            log.error( "Error writing file:" + fileName, e );
+        createOverviewSummaryFrameExtras( pw );
+        pw.println( "<hr>" );
+        if ( StringUtils.isNotEmpty( getOptions().getBottom() ) )
+        {
+            pw.println( "<div class=\"bottom\">" );
+            pw.println( getOptions().getBottom() );
+            pw.println( "</div>" );
         }
+        pw.println( "</body></html>" );
+        pw.close();
     }
 
     private void createOverviewSummaryFrameExtras( PrintWriter pw )
@@ -1166,27 +1047,5 @@
         pw.println( "</li>" );
         pw.println( "</ul>" );
         pw.println( "</div>" );
-    }
-
-    /**
-     * Method createDirs
-     *
-     * @param f
-     */
-    private void createDirs( File f )
-    {
-        String parentDir = f.getParent();
-        File directory = new File( parentDir );
-
-        if ( !directory.exists() )
-        {
-            directory.mkdirs();
-        }
-    }
-
-    private void println( String description )
-    {
-        System.out.print( "\n" );
-        System.out.println( description );
     }
 }

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/test/java/org/apache/maven/jxr/java/src/JavaSrcTaskTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/test/java/org/apache/maven/jxr/java/src/JavaSrcTaskTest.java?rev=588222&r1=588221&r2=588222&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/test/java/org/apache/maven/jxr/java/src/JavaSrcTaskTest.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/test/java/org/apache/maven/jxr/java/src/JavaSrcTaskTest.java Thu Oct 25 06:07:38 2007
@@ -130,7 +130,15 @@
 
         task.setSrcDir( null );
         task.setDestDir( destDir );
-        task.execute();
+        try
+        {
+            task.execute();
+            assertTrue( "Doesnt handle null src dir", false );
+        }
+        catch ( BuildException e )
+        {
+            assertTrue( true );
+        }
 
         task.setSrcDir( srcDir );
         task.setDestDir( null );