[
https://jira.codehaus.org/browse/DOXIATOOLS-29?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dennis Lundberg updated DOXIATOOLS-29:
--------------------------------------
Component/s: Book
> Another incomplete fix for the resource leak bugs in XHtmlBookRenderer.java
> ---------------------------------------------------------------------------
>
> Key: DOXIATOOLS-29
> URL: https://jira.codehaus.org/browse/DOXIATOOLS-29
> Project: Maven Doxia Tools
> Issue Type: Bug
> Components: Book
> Reporter: Guangtai Liang
> Priority: Critical
>
> The fix revision 740164 was aimed to remove resource leak bugs on the
> FileWriter object "fileWriter"
> (created in line 84) in the method "renderBook"of the file
> "/maven/doxia/doxia/trunk/doxia-
> book/src/main/java/org/apache/maven/doxia/book/services/renderer/XHtmlBookRenderer.java"
> , but it is
> incomplete.
> There are some problems:
> 1. when the statements at lines 91 throw some exception, "fileWriter" will be
> leaked.
> The best way to close such resource objects is putting such close operations
> for all resource
> objects in the finaly block of a try-catch-finally structure and then putting
> all other code in a
> try block.
> The problem still exists in the head revision. The buggy code is copied as
> bellows:
> public void renderBook( BookContext context )
> throws BookDoxiaException
> {
> BookModel book = context.getBook();
> if ( !context.getOutputDirectory().exists() )
> {
> if ( !context.getOutputDirectory().mkdirs() )
> {
> throw new BookDoxiaException( "Could not make directory: "
> + context.getOutputDirectory().getAbsolutePath()
> + "." );
> }
> }
> File bookFile = new File( context.getOutputDirectory(), book.getId()
> + ".xhtml" );
> Writer fileWriter;
> try
> {
> 84 fileWriter = new FileWriter( bookFile );
> }
> catch ( IOException e )
> {
> throw new BookDoxiaException( "Error while opening file.", e );
> }
> 91 XhtmlBookSink sink = new XhtmlBookSink( fileWriter,
> new RenderingContext( context.getOutputDirectory(),
> bookFile.getAbsolutePath() ) );
> try
> {
> sink.bookHead();
> ......
> }
> finally
> {
> sink.flush();
> sink.close();
> IOUtil.close( fileWriter );
> }
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira