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 )
{