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:02:43 UTC

svn commit: r807166 - in /maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt: AptParser.java AptSink.java

Author: vsiveton
Date: Mon Aug 24 12:02:43 2009
New Revision: 807166

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

o impl init() method from r807164
o add logWarnings() method in AptParser

Modified:
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java?rev=807166&r1=807165&r2=807166&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java Mon Aug 24 12:02:43 2009
@@ -187,19 +187,21 @@
     public void parse( Reader source, Sink sink )
         throws ParseException
     {
+        init();
+
         try
         {
-            try
-            {
-                StringWriter contentWriter = new StringWriter();
-                IOUtil.copy( source, contentWriter );
-                sourceContent = contentWriter.toString();
-            }
-            catch ( IOException e )
-            {
-                throw new AptParseException( "IOException: " + e.getMessage(), e );
-            }
+            StringWriter contentWriter = new StringWriter();
+            IOUtil.copy( source, contentWriter );
+            sourceContent = contentWriter.toString();
+        }
+        catch ( IOException e )
+        {
+            throw new AptParseException( "IOException: " + e.getMessage(), e );
+        }
 
+        try
+        {
             this.source = new AptReaderSource( new StringReader( sourceContent ) );
 
             this.sink = sink;
@@ -218,34 +220,18 @@
             traverseHead();
 
             traverseBody();
-
-            this.source = null;
-
-            this.sink = null;
         }
         catch ( AptParseException ape )
         {
             // TODO handle column number
             throw new AptParseException( ape.getMessage(), ape, getSourceName(), getSourceLineNumber(), -1 );
         }
-
-        if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() )
+        finally
         {
-            for ( Iterator it = this.warnMessages.entrySet().iterator(); it.hasNext(); )
-            {
-                Map.Entry entry = (Map.Entry) it.next();
-
-                Set set = (Set) entry.getValue();
-
-                for ( Iterator it2 = set.iterator(); it2.hasNext(); )
-                {
-                    String msg = (String) it2.next();
-
-                    getLog().warn( msg );
-                }
-            }
+            logWarnings();
 
-            this.warnMessages = null;
+            setSecondParsing( false );
+            init();
         }
     }
 
@@ -707,6 +693,21 @@
         return replaced.toString();
     }
 
+    /** {@inheritDoc} */
+    protected void init()
+    {
+        super.init();
+
+        this.sourceContent = null;
+        this.sink = null;
+        this.source = null;
+        this.block = null;
+        this.blockFileName = null;
+        this.blockLineNumber = 0;
+        this.line = null;
+        this.warnMessages = null;
+    }
+
     // ----------------------------------------------------------------------
     // Private methods
     // ----------------------------------------------------------------------
@@ -1612,6 +1613,31 @@
         warnMessages.put( key, set );
     }
 
+    /**
+     * @since 1.1.2
+     */
+    private void logWarnings()
+    {
+        if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() )
+        {
+            for ( Iterator it = this.warnMessages.entrySet().iterator(); it.hasNext(); )
+            {
+                Map.Entry entry = (Map.Entry) it.next();
+
+                Set set = (Set) entry.getValue();
+
+                for ( Iterator it2 = set.iterator(); it2.hasNext(); )
+                {
+                    String msg = (String) it2.next();
+
+                    getLog().warn( msg );
+                }
+            }
+
+            this.warnMessages = null;
+        }
+    }
+
     // -----------------------------------------------------------------------
 
     /** A block of an apt source document. */

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java?rev=807166&r1=807165&r2=807166&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java Mon Aug 24 12:02:43 2009
@@ -85,7 +85,7 @@
     private int cellCount;
 
     /**  The writer to use. */
-    private PrintWriter writer;
+    private final PrintWriter writer;
 
     /**  justification of table cells. */
     private int cellJustif[];
@@ -97,7 +97,7 @@
     private String listNestingIndent;
 
     /**  listStyles. */
-    private Stack listStyles;
+    private final Stack listStyles;
 
     // ----------------------------------------------------------------------
     // Public protected methods
@@ -111,11 +111,10 @@
      */
     protected AptSink( Writer writer )
     {
-        this.buffer = new StringBuffer();
-        this.tableCaptionBuffer = new StringBuffer();
         this.writer = new PrintWriter( writer );
-        this.listNestingIndent = "";
         this.listStyles = new Stack();
+
+        init();
     }
 
     /**
@@ -140,14 +139,38 @@
 
     /**
      * Reset all variables.
+     *
+     * @deprecated since 1.1.2, use {@link #init()} instead of.
      */
     protected void resetState()
     {
-        headerFlag = false;
+        init();
+    }
+
+    /** {@inheritDoc} */
+    protected void init()
+    {
+        super.init();
+
         resetBuffer();
-        itemFlag = false;
-        verbatimFlag = false;
-        cellCount = 0;
+
+        this.tableCaptionBuffer = new StringBuffer();
+        this.listNestingIndent = "";
+
+        this.author = null;
+        this.title = null;
+        this.date = null;
+        this.tableCaptionFlag = false;
+        this.headerFlag = false;
+        this.bufferFlag = false;
+        this.itemFlag = false;
+        this.verbatimFlag = false;
+        this.isBoxed = false;
+        this.gridFlag = false;
+        this.cellCount = 0;
+        this.cellJustif = null;
+        this.rowLine = null;
+        this.listStyles.clear();
     }
 
     /**
@@ -169,7 +192,8 @@
     /** {@inheritDoc} */
     public void head()
     {
-        resetState();
+        init();
+
         headerFlag = true;
     }
 
@@ -926,6 +950,8 @@
     public void close()
     {
         writer.close();
+
+        init();
     }
 
     // ----------------------------------------------------------------------