You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by vs...@apache.org on 2009/08/24 14:21:26 UTC

svn commit: r807179 - in /maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki: TWikiParser.java TWikiSink.java

Author: vsiveton
Date: Mon Aug 24 12:21:26 2009
New Revision: 807179

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

o impl init() method from r807164
o use final fields
o extends AbstractTextSink instead of SinkAdapter

Modified:
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiParser.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiSink.java

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiParser.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiParser.java?rev=807179&r1=807178&r2=807179&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiParser.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiParser.java Mon Aug 24 12:21:26 2009
@@ -85,27 +85,14 @@
     private final VerbatimBlockParser verbatimParser = new VerbatimBlockParser();
 
     /** list of parsers to try to apply to the toplevel */
-    private final BlockParser[] parsers;
+    private BlockParser[] parsers;
 
     /**
      * Creates the TWikiParser.
      */
     public TWikiParser()
     {
-        paraParser.setSectionParser( sectionParser );
-        paraParser.setListParser( listParser );
-        paraParser.setTextParser( formatTextParser );
-        paraParser.setHrulerParser( hrulerParser );
-        paraParser.setTableBlockParser( tableParser );
-        paraParser.setVerbatimParser( verbatimParser );
-        sectionParser.setParaParser( paraParser );
-        sectionParser.setHrulerParser( hrulerParser );
-        sectionParser.setVerbatimBlockParser( verbatimParser );
-        listParser.setTextParser( formatTextParser );
-        formatTextParser.setTextParser( textParser );
-        tableParser.setTextParser( formatTextParser );
-
-        parsers = new BlockParser[] { sectionParser, hrulerParser, verbatimParser, paraParser };
+        init();
     }
 
     /**
@@ -149,6 +136,7 @@
     public final synchronized void parse( final Reader source, final Sink sink )
         throws ParseException
     {
+        init();
 
         List blocks;
         final ByLineSource src = new ByLineReaderSource( source );
@@ -182,6 +170,11 @@
             block.traverse( sink );
         }
         sink.body_();
+        sink.flush();
+        sink.close();
+
+        setSecondParsing( false );
+        init();
     }
 
     /**
@@ -232,4 +225,25 @@
 
         return title;
     }
+
+    /** {@inheritDoc} */
+    protected void init()
+    {
+        super.init();
+
+        paraParser.setSectionParser( sectionParser );
+        paraParser.setListParser( listParser );
+        paraParser.setTextParser( formatTextParser );
+        paraParser.setHrulerParser( hrulerParser );
+        paraParser.setTableBlockParser( tableParser );
+        paraParser.setVerbatimParser( verbatimParser );
+        sectionParser.setParaParser( paraParser );
+        sectionParser.setHrulerParser( hrulerParser );
+        sectionParser.setVerbatimBlockParser( verbatimParser );
+        listParser.setTextParser( formatTextParser );
+        formatTextParser.setTextParser( textParser );
+        tableParser.setTextParser( formatTextParser );
+
+        this.parsers = new BlockParser[] { sectionParser, hrulerParser, verbatimParser, paraParser };
+    }
 }

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiSink.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiSink.java?rev=807179&r1=807178&r2=807179&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiSink.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiSink.java Mon Aug 24 12:21:26 2009
@@ -49,7 +49,7 @@
     implements TWikiMarkup
 {
     /**  The writer to use. */
-    private PrintWriter out;
+    private final PrintWriter out;
 
     /**  The writer to use. */
     private StringWriter writer;
@@ -66,7 +66,7 @@
     private int levelList = 0;
 
     /**  listStyles. */
-    private Stack listStyles;
+    private final Stack listStyles;
 
     /**
      * Constructor, initialize the Writer and the variables.
@@ -77,8 +77,9 @@
     protected TWikiSink( Writer writer )
     {
         this.out = new PrintWriter( writer );
-        this.writer = new StringWriter();
         this.listStyles = new Stack();
+
+        init();
     }
 
     /** {@inheritDoc} */
@@ -183,6 +184,8 @@
     {
         out.write( writer.toString() );
         out.close();
+
+        init();
     }
 
     /**
@@ -363,6 +366,8 @@
     /** {@inheritDoc} */
     public void head()
     {
+        init();
+
         headFlag = true;
     }
 
@@ -1262,6 +1267,19 @@
         write( escapeHTML( text ) );
     }
 
+    /** {@inheritDoc} */
+    protected void init()
+    {
+        super.init();
+
+        this.writer = new StringWriter();
+        this.headFlag = false;
+        this.levelList = 0;
+        this.listStyles.clear();
+        this.boldFlag = false;
+        this.boldItalicOrMonodpacedFlag = false;
+    }
+
     /**
      * Forward to HtmlTools.escapeHTML( text ).
      *