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 ). *