Author: vsiveton
Date: Tue Feb  3 00:37:01 2009
New Revision: 740164

URL: http://svn.apache.org/viewvc?rev=740164&view=rev
Log:
o be sure that sink.close() is called
o using WriterFactory
o fixed reader/writer leaks

Modified:
    
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/AbstractITextBookRenderer.java
    
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java
    
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/LatexBookRenderer.java
    
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java
    
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java

Modified: 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/AbstractITextBookRenderer.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/AbstractITextBookRenderer.java?rev=740164&r1=740163&r2=740164&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/AbstractITextBookRenderer.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/AbstractITextBookRenderer.java
 Tue Feb  3 00:37:01 2009
@@ -22,8 +22,8 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
-import java.io.FileWriter;
 import java.io.IOException;
+import java.io.Writer;
 import java.text.DateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -43,6 +43,7 @@
 import org.apache.maven.doxia.sink.Sink;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.WriterFactory;
 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
 
 /**
@@ -82,11 +83,10 @@
 
         File bookFile = new File( context.getOutputDirectory(), book.getId() + 
".xml" );
 
-        FileWriter fileWriter;
-
+        Writer fileWriter;
         try
         {
-            fileWriter = new FileWriter( bookFile );
+            fileWriter = WriterFactory.newXmlWriter( bookFile );
         }
         catch ( IOException e )
         {

Modified: 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java?rev=740164&r1=740163&r2=740164&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/DocbookBookRenderer.java
 Tue Feb  3 00:37:01 2009
@@ -22,8 +22,8 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
-import java.io.FileWriter;
 import java.io.IOException;
+import java.io.Reader;
 import java.io.Writer;
 import java.util.Iterator;
 
@@ -38,7 +38,9 @@
 import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
 import org.apache.maven.doxia.sink.Sink;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.WriterFactory;
 
 /**
  * An implementation of <code>BookRenderer</code> for docbook
@@ -77,11 +79,10 @@
 
         File bookFile = new File( context.getOutputDirectory(), book.getId() + 
".xml" );
 
-        FileWriter fileWriter;
-
+        Writer fileWriter;
         try
         {
-            fileWriter = new FileWriter( bookFile );
+            fileWriter = WriterFactory.newXmlWriter( bookFile );
         }
         catch ( IOException e )
         {
@@ -96,60 +97,62 @@
 
         DocBookBookSink sink = new DocBookBookSink( fileWriter );
 
-        sink.book();
-
-        // TODO: symmetrize bookHead?
-
-        if ( StringUtils.isNotEmpty( book.getTitle() ) )
+        try
         {
-            sink.bookTitle();
-            sink.text( book.getTitle() );
-            sink.bookTitle_();
-        }
+            sink.book();
 
-        if ( StringUtils.isNotEmpty( book.getDate() ) )
-        {
-            sink.bookDate();
-            sink.text( book.getDate() );
-            sink.bookDate_();
-        }
+            // TODO: symmetrize bookHead?
 
-        if ( StringUtils.isNotEmpty( book.getAuthor() ) )
-        {
-            sink.bookAuthor();
-            sink.text( book.getAuthor() );
-            sink.bookAuthor_();
-        }
+            if ( StringUtils.isNotEmpty( book.getTitle() ) )
+            {
+                sink.bookTitle();
+                sink.text( book.getTitle() );
+                sink.bookTitle_();
+            }
 
-        sink.bookHead_();
+            if ( StringUtils.isNotEmpty( book.getDate() ) )
+            {
+                sink.bookDate();
+                sink.text( book.getDate() );
+                sink.bookDate_();
+            }
 
-        for ( Iterator it = book.getChapters().iterator(); it.hasNext(); )
-        {
-            Chapter chapter = (Chapter) it.next();
+            if ( StringUtils.isNotEmpty( book.getAuthor() ) )
+            {
+                sink.bookAuthor();
+                sink.text( book.getAuthor() );
+                sink.bookAuthor_();
+            }
 
-            sink.chapter();
+            sink.bookHead_();
 
-            if (StringUtils.isNotEmpty( chapter.getTitle()))
+            for ( Iterator it = book.getChapters().iterator(); it.hasNext(); )
             {
-                sink.chapterTitle();
-                sink.text( chapter.getTitle() );
-                sink.chapterTitle_();
-            }
+                Chapter chapter = (Chapter) it.next();
 
-            renderChapter( fileWriter, chapter, context, sink );
+                sink.chapter();
 
-            sink.chapter_();
-        }
+                if (StringUtils.isNotEmpty( chapter.getTitle()))
+                {
+                    sink.chapterTitle();
+                    sink.text( chapter.getTitle() );
+                    sink.chapterTitle_();
+                }
 
-        sink.book_();
+                renderChapter( fileWriter, chapter, context, sink );
 
-        try
-        {
-            fileWriter.close();
+                sink.chapter_();
+            }
+
+            sink.book_();
         }
-        catch ( IOException e )
+        finally
         {
-            throw new BookDoxiaException( "Error while closing file.", e );
+            sink.flush();
+
+            sink.close();
+
+            IOUtil.close( fileWriter );
         }
     }
 
@@ -192,9 +195,11 @@
             throw new BookDoxiaException( "No document that matches section 
with id=" + section.getId() + "." );
         }
 
+        Reader reader = null;
         try
         {
-            doxia.parse( new FileReader( bookFile.getFile() ), 
bookFile.getParserId(), sink );
+            reader = new FileReader( bookFile.getFile() );
+            doxia.parse( reader, bookFile.getParserId(), sink );
         }
         catch ( ParserNotFoundException e )
         {
@@ -210,5 +215,9 @@
         {
             throw new BookDoxiaException( "Could not find document: " + 
bookFile.getFile().getAbsolutePath() + ".", e );
         }
+        finally
+        {
+            IOUtil.close( reader );
+        }
     }
 }

Modified: 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/LatexBookRenderer.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/LatexBookRenderer.java?rev=740164&r1=740163&r2=740164&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/LatexBookRenderer.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/LatexBookRenderer.java
 Tue Feb  3 00:37:01 2009
@@ -25,7 +25,6 @@
 import org.apache.maven.doxia.book.model.BookModel;
 import org.apache.maven.doxia.book.model.Chapter;
 import org.apache.maven.doxia.book.model.Section;
-import org.apache.maven.doxia.module.latex.LatexSink;
 import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.Doxia;
@@ -38,6 +37,7 @@
 import java.io.PrintWriter;
 import java.io.FileReader;
 import java.io.FileNotFoundException;
+import java.io.Reader;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.HashMap;
@@ -213,9 +213,11 @@
                         + section.getId() + "." );
         }
 
+        Reader reader = null;
         try
         {
-            doxia.parse( new FileReader( bookFile.getFile() ), 
bookFile.getParserId(), sink );
+            reader = new FileReader( bookFile.getFile() );
+            doxia.parse( reader, bookFile.getParserId(), sink );
         }
         catch ( ParserNotFoundException e )
         {
@@ -232,6 +234,11 @@
             throw new BookDoxiaException( "Could not find document: "
                         + bookFile.getFile().getAbsolutePath() + ".", e );
         }
+        finally
+        {
+            IOUtil.close( reader );
+            IOUtil.close( writer );
+        }
 
         SectionInfo info = new SectionInfo();
         info.id = section.getId();

Modified: 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java?rev=740164&r1=740163&r2=740164&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java
 Tue Feb  3 00:37:01 2009
@@ -30,12 +30,14 @@
 import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
 import org.apache.maven.doxia.parser.ParseException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.IOUtil;
 
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.Reader;
 import java.io.Writer;
 import java.util.Iterator;
 
@@ -89,35 +91,37 @@
         XhtmlBookSink sink = new XhtmlBookSink( fileWriter,
               new RenderingContext( context.getOutputDirectory(), 
bookFile.getAbsolutePath() ) );
 
-        sink.bookHead();
-        // TODO: book author, title?
-        sink.bookHead_();
-        sink.bookBody();
-
-        int chapterNumber = 1;
-
-        for ( Iterator it = book.getChapters().iterator(); it.hasNext(); )
+        try
         {
-            Chapter chapter = (Chapter) it.next();
+            sink.bookHead();
+            // TODO: book author, title?
+            sink.bookHead_();
+            sink.bookBody();
 
-            sink.sectionTitle();
-            sink.text( Integer.toString( chapterNumber ) + ". " + 
chapter.getTitle() );
-            sink.sectionTitle_();
+            int chapterNumber = 1;
 
-            renderChapter( sink, chapter, context );
+            for ( Iterator it = book.getChapters().iterator(); it.hasNext(); )
+            {
+                Chapter chapter = (Chapter) it.next();
 
-            chapterNumber++;
-        }
+                sink.sectionTitle();
+                sink.text( Integer.toString( chapterNumber ) + ". " + 
chapter.getTitle() );
+                sink.sectionTitle_();
 
-        sink.bookBody_();
+                renderChapter( sink, chapter, context );
 
-        try
-        {
-            fileWriter.close();
+                chapterNumber++;
+            }
+
+            sink.bookBody_();
         }
-        catch ( IOException e )
+        finally
         {
-            throw new BookDoxiaException( "Error while closing file.", e );
+            sink.flush();
+
+            sink.close();
+
+            IOUtil.close( fileWriter );
         }
     }
 
@@ -164,9 +168,11 @@
             throw new BookDoxiaException( "No document that matches section 
with id=" + section.getId() + "." );
         }
 
+        Reader reader = null;
         try
         {
-            doxia.parse( new FileReader( bookFile.getFile() ), 
bookFile.getParserId(), sink );
+            reader = new FileReader( bookFile.getFile() );
+            doxia.parse( reader, bookFile.getParserId(), sink );
         }
         catch ( ParserNotFoundException e )
         {
@@ -183,6 +189,10 @@
             throw new BookDoxiaException( "Could not find document: "
                       + bookFile.getFile().getAbsolutePath() + ".", e );
         }
+        finally
+        {
+            IOUtil.close( reader );
+        }
 
         sink.section2_();
     }

Modified: 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java?rev=740164&r1=740163&r2=740164&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-book/src/main/java/org/apache/maven/doxia/book/services/renderer/XdocBookRenderer.java
 Tue Feb  3 00:37:01 2009
@@ -22,8 +22,9 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
-import java.io.FileWriter;
 import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -47,7 +48,9 @@
 import org.apache.maven.doxia.util.HtmlTools;
 import org.codehaus.plexus.i18n.I18N;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.WriterFactory;
 
 /**
  * An implementation of <code>BookRenderer</code> for Xdoc
@@ -169,43 +172,54 @@
     private void writeBookIndex( File index, BookModel book, BookContext 
context )
         throws IOException
     {
-        FileWriter writer = new FileWriter( index );
+        Writer writer = WriterFactory.newXmlWriter( index );
 
         XdocSink sink = new IndexXdocBookSink( writer, 
context.getIndex().getFirstEntry(), i18n );
 
-        // 
-----------------------------------------------------------------------
-        // Head
-        // 
-----------------------------------------------------------------------
+        try
+        {
+            // 
-----------------------------------------------------------------------
+            // Head
+            // 
-----------------------------------------------------------------------
 
-        sink.head();
+            sink.head();
 
-        sink.title();
-        sink.text( book.getTitle() + " - " + getString( "toc" ) );
-        sink.title_();
+            sink.title();
+            sink.text( book.getTitle() + " - " + getString( "toc" ) );
+            sink.title_();
 
-        sink.head_();
+            sink.head_();
 
-        // 
-----------------------------------------------------------------------
-        // Body
-        // 
-----------------------------------------------------------------------
+            // 
-----------------------------------------------------------------------
+            // Body
+            // 
-----------------------------------------------------------------------
 
-        sink.body();
+            sink.body();
 
-        sink.section1();
-        sink.sectionTitle1();
-        sink.text( book.getTitle() + " - " + getString( "toc" ) );
-        sink.sectionTitle1_();
+            sink.section1();
+            sink.sectionTitle1();
+            sink.text( book.getTitle() + " - " + getString( "toc" ) );
+            sink.sectionTitle1_();
 
-        sink.list();
-        for ( Iterator it = context.getIndex().getChildEntries().iterator(); 
it.hasNext(); )
-        {
-            writeChapterIndexForBookIndex( sink, (IndexEntry) it.next() );
+            sink.list();
+            for ( Iterator it = 
context.getIndex().getChildEntries().iterator(); it.hasNext(); )
+            {
+                writeChapterIndexForBookIndex( sink, (IndexEntry) it.next() );
+            }
+            sink.list_();
+
+            sink.section1_();
+
+            sink.body_();
         }
-        sink.list_();
+        finally
+        {
+            sink.flush();
 
-        sink.section1_();
+            sink.close();
 
-        sink.body_();
+            IOUtil.close( writer );
+        }
     }
 
     /**
@@ -328,44 +342,55 @@
     private void writeChapterIndex( File index, Chapter chapter, IndexEntry 
chapterIndex )
         throws IOException
     {
-        FileWriter writer = new FileWriter( index );
+        Writer writer = WriterFactory.newXmlWriter( index );
 
         ChapterXdocBookSink sink = new ChapterXdocBookSink( writer, 
chapterIndex, i18n );
 
-        // 
-----------------------------------------------------------------------
-        // Head
-        // 
-----------------------------------------------------------------------
+        try
+        {
+            // 
-----------------------------------------------------------------------
+            // Head
+            // 
-----------------------------------------------------------------------
 
-        sink.head();
+            sink.head();
 
-        sink.title();
-        sink.text( chapter.getTitle() );
-        sink.title_();
+            sink.title();
+            sink.text( chapter.getTitle() );
+            sink.title_();
 
-        sink.head_();
+            sink.head_();
 
-        // 
-----------------------------------------------------------------------
-        // Body
-        // 
-----------------------------------------------------------------------
+            // 
-----------------------------------------------------------------------
+            // Body
+            // 
-----------------------------------------------------------------------
 
-        sink.body();
+            sink.body();
 
-        sink.section1();
-        sink.sectionTitle1();
-        sink.text( chapter.getTitle() );
-        sink.sectionTitle1_();
+            sink.section1();
+            sink.sectionTitle1();
+            sink.text( chapter.getTitle() );
+            sink.sectionTitle1_();
 
-        sink.list();
-        for ( Iterator it = chapterIndex.getChildEntries().iterator(); 
it.hasNext(); )
-        {
-            IndexEntry sectionIndex = (IndexEntry) it.next();
-            writeSectionIndexForBookIndex( sink, sectionIndex );
+            sink.list();
+            for ( Iterator it = chapterIndex.getChildEntries().iterator(); 
it.hasNext(); )
+            {
+                IndexEntry sectionIndex = (IndexEntry) it.next();
+                writeSectionIndexForBookIndex( sink, sectionIndex );
+            }
+            sink.list_();
+
+            sink.section1_();
+
+            sink.body_();
         }
-        sink.list_();
+        finally
+        {
+            sink.flush();
 
-        sink.section1_();
+            sink.close();
 
-        sink.body_();
+            IOUtil.close( writer );
+        }
     }
 
     /**
@@ -381,7 +406,7 @@
     {
         try
         {
-            FileWriter writer = new FileWriter( context.getOutputDirectory() + 
"/" + section.getId() + ".xml" );
+            Writer writer = WriterFactory.newXmlWriter( new File( 
context.getOutputDirectory() + "/" + section.getId() + ".xml" ) );
 
             SectionXdocBookSink sink = new SectionXdocBookSink( writer, 
sectionIndex, i18n );
 
@@ -397,8 +422,10 @@
             pipeline.add( sink );
             Sink pipelineSink = PipelineSink.newInstance( pipeline );
 
+            Reader reader = null;
             try
             {
+                reader = new FileReader( bookFile.getFile() );
                 doxia.parse( new FileReader( bookFile.getFile() ), 
bookFile.getParserId(), pipelineSink );
             }
             catch ( ParserNotFoundException e )
@@ -415,6 +442,11 @@
                 throw new BookDoxiaException( "Could not find document: " + 
bookFile.getFile().getAbsolutePath() + ".",
                                               e );
             }
+            finally
+            {
+                IOUtil.close( reader );
+                IOUtil.close( writer );
+            }
         }
         catch ( IOException e )
         {


Reply via email to