Author: vsiveton
Date: Mon Aug 24 12:03:59 2009
New Revision: 807167

URL: http://svn.apache.org/viewvc?rev=807167&view=rev
Log:
DOXIA-364:  Guarantee the state of sinks and parsers impl

o impl init() method from r807164
o use final fields

Modified:
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceSink.java

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java?rev=807167&r1=807166&r2=807167&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java
 Mon Aug 24 12:03:59 2009
@@ -59,26 +59,14 @@
      */
     public ConfluenceParser()
     {
-        BlockParser headingParser = new SectionBlockParser();
-        BlockParser figureParser = new FigureBlockParser();
-        BlockParser verbatimParser = new VerbatimBlockParser();
-        BlockParser definitionParser = new DefinitionListBlockParser();
-        BlockParser horizontalRuleParser = new HorizontalRuleBlockParser();
-        BlockParser listParser = new ListBlockParser();
-        BlockParser tableParser = new TableBlockParser();
-
-        BlockParser[] subparsers =
-                new BlockParser[] { headingParser, figureParser, listParser, 
tableParser, verbatimParser };
-        BlockParser paragraphParser = new ParagraphBlockParser( subparsers );
-
-        parsers =
-            new BlockParser[] { headingParser, figureParser, verbatimParser, 
definitionParser, horizontalRuleParser,
-                listParser, tableParser, paragraphParser };
+        init();
     }
 
     private List parse( ByLineSource source )
         throws ParseException
     {
+        init();
+
         List blocks = new ArrayList();
 
         String line;
@@ -127,7 +115,7 @@
 
         try
         {
-            blocks = parse( src  );
+            blocks = parse( src );
         }
         catch ( Exception e )
         {
@@ -149,5 +137,32 @@
         }
 
         sink.body_();
+        sink.flush();
+        sink.close();
+
+        setSecondParsing( false );
+        init();
+    }
+
+    /** {...@inheritdoc} */
+    protected void init()
+    {
+        super.init();
+
+        BlockParser headingParser = new SectionBlockParser();
+        BlockParser figureParser = new FigureBlockParser();
+        BlockParser verbatimParser = new VerbatimBlockParser();
+        BlockParser definitionParser = new DefinitionListBlockParser();
+        BlockParser horizontalRuleParser = new HorizontalRuleBlockParser();
+        BlockParser listParser = new ListBlockParser();
+        BlockParser tableParser = new TableBlockParser();
+
+        BlockParser[] subparsers =
+                new BlockParser[] { headingParser, figureParser, listParser, 
tableParser, verbatimParser };
+        BlockParser paragraphParser = new ParagraphBlockParser( subparsers );
+
+        this.parsers =
+            new BlockParser[] { headingParser, figureParser, verbatimParser, 
definitionParser, horizontalRuleParser,
+                listParser, tableParser, paragraphParser };
     }
 }

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceSink.java?rev=807167&r1=807166&r2=807167&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceSink.java
 Mon Aug 24 12:03:59 2009
@@ -45,7 +45,7 @@
     implements ConfluenceMarkup
 {
     /**  The writer to use. */
-    private PrintWriter out;
+    private final PrintWriter out;
 
     /**  The writer to use. */
     private StringWriter writer;
@@ -56,7 +56,7 @@
     private int levelList = 0;
 
     /**  listStyles. */
-    private Stack listStyles;
+    private final Stack listStyles;
 
     /** An indication on if we're in verbatim box mode. */
     private boolean verbatimBoxedFlag;
@@ -76,8 +76,9 @@
     protected ConfluenceSink( Writer writer )
     {
         this.out = new PrintWriter( writer );
-        this.writer = new StringWriter();
         this.listStyles = new Stack();
+
+        init();
     }
 
     /** {...@inheritdoc} */
@@ -175,6 +176,8 @@
     {
         out.write( writer.toString() );
         out.close();
+
+        init();
     }
 
     /**
@@ -379,6 +382,8 @@
     /** {...@inheritdoc} */
     public void head()
     {
+        init();
+
         headFlag = true;
     }
 
@@ -1085,6 +1090,20 @@
         write( escapeHTML( text ) );
     }
 
+    /** {...@inheritdoc} */
+    protected void init()
+    {
+        super.init();
+
+        this.writer = new StringWriter();
+        this.headFlag = false;
+        this.levelList = 0;
+        this.listStyles.clear();
+        this.verbatimBoxedFlag = false;
+        this.tableHeaderFlag = false;
+        this.linkName = null;
+    }
+
     /**
      * Forward to HtmlTools.escapeHTML( text ).
      *


Reply via email to