Shouldn't FmlParser extend AbstractXmlParser?

[EMAIL PROTECTED] wrote:
Author: vsiveton
Date: Thu Aug  9 05:15:44 2007
New Revision: 564180

URL: http://svn.apache.org/viewvc?view=rev&rev=564180
Log:
DOXIA-133: default XML encoding (UTF-8) or XML encoding set in XML files is 
ignored: inputEncoding is used instead
Submitted by: Herve Boutemy
Reviewed by: Vincent Siveton

o applied with modifications discussed on this issue
o added/updated javadoc

Modified:
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/Doxia.java
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractTextParser.java
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java
    
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-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiParser.java

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java?view=diff&rev=564180&r1=564179&r2=564180
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
 Thu Aug  9 05:15:44 2007
@@ -22,6 +22,7 @@
 import org.apache.maven.doxia.Doxia;
 import org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
 import org.apache.maven.doxia.parser.ParseException;
+import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
 import org.apache.maven.doxia.site.decoration.DecorationModel;
 import org.apache.maven.doxia.module.site.SiteModule;
@@ -53,10 +54,9 @@
  * @since 1.0
  * @plexus.component role-hint="default"
  */
-public class
-        DefaultSiteRenderer
-        extends AbstractLogEnabled
-        implements Renderer
+public class DefaultSiteRenderer
+    extends AbstractLogEnabled
+    implements Renderer
 {
     // ----------------------------------------------------------------------
     // Requirements
@@ -92,6 +92,7 @@
     // Renderer implementation
     // ----------------------------------------------------------------------
+ /** [EMAIL PROTECTED] */
     public void render( Collection documents,
                         SiteRenderingContext siteRenderingContext,
                         File outputDirectory )
@@ -106,6 +107,7 @@
         }
     }
+ /** [EMAIL PROTECTED] */
     public Map locateDocumentFiles( SiteRenderingContext siteRenderingContext )
             throws IOException, RendererException
     {
@@ -278,6 +280,7 @@
         }
     }
+ /** [EMAIL PROTECTED] */
     public void renderDocument( Writer writer,
                                 RenderingContext renderingContext,
                                 SiteRenderingContext context )
@@ -285,16 +288,17 @@
     {
         SiteRendererSink sink = new SiteRendererSink( renderingContext );
- String fullPathDoc = new File( renderingContext.getBasedir(), renderingContext.getInputName() ).getPath();
+        File doc = new File( renderingContext.getBasedir(), 
renderingContext.getInputName() );
try
         {
             Reader reader = null;
+            Parser parser = doxia.getParser( renderingContext.getParserId() );
// DOXIA-111: the filter used here must be checked generally.
             if ( renderingContext.getAttribute( "velocity" ) != null )
             {
-                String resource = new File( fullPathDoc ).getAbsolutePath();
+                String resource = doc.getAbsolutePath();
try
                 {
@@ -322,7 +326,17 @@
             }
             else
             {
-                reader = new InputStreamReader( new FileInputStream( 
fullPathDoc ), context.getInputEncoding() );
+                switch ( parser.getType() )
+                {
+                    case Parser.XML_TYPE:
+                        reader = ReaderFactory.newXmlReader( doc );
+                        break;
+
+                    case Parser.TXT_TYPE:
+                    case Parser.UNKNOWN_TYPE:
+                    default:
+                        reader = ReaderFactory.newReader( doc, 
context.getInputEncoding() );
+                }
             }
doxia.parse( reader, renderingContext.getParserId(), sink );
@@ -331,12 +345,15 @@
         }
         catch ( ParserNotFoundException e )
         {
-            throw new RendererException( "Error getting a parser for " + fullPathDoc + 
": " + e.getMessage() );
+            throw new RendererException( "Error getting a parser for " + doc + ": 
" + e.getMessage() );
         }
         catch ( ParseException e )
         {
-            getLogger().error( "Error parsing " + fullPathDoc + ": line [" + 
e.getLineNumber() + "] " + e.getMessage(),
-                    e );
+            getLogger().error( "Error parsing " + doc + ": line [" + e.getLineNumber() + 
"] " + e.getMessage(), e );
+        }
+        catch ( IOException e )
+        {
+            getLogger().error( "Error parsing " + doc + " to detect encoding", 
e );
         }
         finally
         {
@@ -423,6 +440,7 @@
         return context;
     }
+ /** [EMAIL PROTECTED] */
     public void generateDocument( Writer writer,
                                   SiteRendererSink sink,
                                   SiteRenderingContext siteRenderingContext )
@@ -495,6 +513,7 @@
         }
     }
+ /** [EMAIL PROTECTED] */
     public SiteRenderingContext createContextForSkin( File skinFile,
                                                       Map attributes,
                                                       DecorationModel 
decoration,
@@ -534,6 +553,7 @@
         return context;
     }
+ /** [EMAIL PROTECTED] */
     public SiteRenderingContext createContextForTemplate( File templateFile,
                                                           File skinFile,
                                                           Map attributes,
@@ -569,6 +589,7 @@
         }
     }
+ /** [EMAIL PROTECTED] */
     public void copyResources( SiteRenderingContext siteContext,
                                File resourcesDirectory,
                                File outputDirectory )

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java?view=diff&rev=564180&r1=564179&r2=564180
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
 Thu Aug  9 05:15:44 2007
@@ -31,10 +31,10 @@
  * Simple implementation of the Doxia interface:
  * uses a ParserManager to lookup a parser.
  *
- * @plexus.component
- *
  * @author Jason van Zyl
- * @version $Id:DefaultDoxia.java 348605 2005-11-24 12:02:44 +1100 (Thu, 24 
Nov 2005) brett $
+ * @version $Id$
+ * @since 1.0
+ * @plexus.component
  */
 public class DefaultDoxia
     implements Doxia
@@ -57,5 +57,12 @@
         Parser parser = parserManager.getParser( parserId );
parser.parse( source, sink );
+    }
+
+    /** [EMAIL PROTECTED] */
+    public Parser getParser( String parserId )
+        throws ParserNotFoundException
+    {
+        return parserManager.getParser( parserId );
     }
 }

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/Doxia.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/Doxia.java?view=diff&rev=564180&r1=564179&r2=564180
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/Doxia.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/Doxia.java
 Thu Aug  9 05:15:44 2007
@@ -20,6 +20,7 @@
  */
import org.apache.maven.doxia.parser.ParseException;
+import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
 import org.apache.maven.doxia.sink.Sink;
@@ -29,7 +30,8 @@
  * Basic interface of the Doxia framework.
  *
  * @author Jason van Zyl
- * @version $Id:Doxia.java 348605 2005-11-24 12:02:44 +1100 (Thu, 24 Nov 2005) 
brett $
+ * @version $Id$
+ * @since 1.0
  */
 public interface Doxia
 {
@@ -50,4 +52,14 @@
     void parse( Reader source, String parserId, Sink sink )
         throws ParserNotFoundException, ParseException;
+ /**
+     * Return a parser for the given <code>parserId</code>.
+     *
+     * @param parserId Identifier for the parser to use.
+     * @return the parser defining by parserId.
+     * @throws ParserNotFoundException if no parser could be found
+     * for the given id.
+     */
+    Parser getParser( String parserId )
+        throws ParserNotFoundException;
 }

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java?view=diff&rev=564180&r1=564179&r2=564180
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
 Thu Aug  9 05:15:44 2007
@@ -46,6 +46,12 @@
     /** @plexus.requirement */
     protected MacroManager macroManager;
+ /** [EMAIL PROTECTED] */
+    public int getType()
+    {
+        return UNKNOWN_TYPE;
+    }
+
     /**
      * Execute a macro on the given sink.
      *

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractTextParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractTextParser.java?view=diff&rev=564180&r1=564179&r2=564180
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractTextParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractTextParser.java
 Thu Aug  9 05:15:44 2007
@@ -32,6 +32,9 @@
     extends AbstractParser
     implements TextMarkup
 {
-
+    /** [EMAIL PROTECTED] */
+    public final int getType()
+    {
+        return TXT_TYPE;
+    }
 }
-

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java?view=diff&rev=564180&r1=564179&r2=564180
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
 Thu Aug  9 05:15:44 2007
@@ -62,6 +62,12 @@
         }
     }
+ /** [EMAIL PROTECTED] */
+    public final int getType()
+    {
+        return XML_TYPE;
+    }
+
     /**
      * Parse the model from the XmlPullParser into the given sink.
      *

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java?view=diff&rev=564180&r1=564179&r2=564180
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java
 Thu Aug  9 05:15:44 2007
@@ -37,6 +37,15 @@
     /** The Plexus lookup role. */
     String ROLE = Parser.class.getName();
+ /** Unknown parser type */
+    int UNKNOWN_TYPE = 0;
+
+    /** Text parser type */
+    int TXT_TYPE = 1;
+
+    /** XML parser type */
+    int XML_TYPE = 2;
+
     /** Used for table cells: justify center. */
     int JUSTIFY_CENTER = 0;
@@ -55,4 +64,12 @@
      */
     void parse( Reader source, Sink sink )
         throws ParseException;
+
+    /**
+     * The parser type value could be [EMAIL PROTECTED] #UNKNOWN_TYPE}, [EMAIL 
PROTECTED] #TXT_TYPE} or
+     * [EMAIL PROTECTED] #XML_TYPE}.
+     *
+     * @return the type of Parser
+     */
+    int getType();
 }

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?view=diff&rev=564180&r1=564179&r2=564180
==============================================================================
--- 
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
 Thu Aug  9 05:15:44 2007
@@ -29,7 +29,7 @@
 import 
org.apache.maven.doxia.module.confluence.parser.HorizontalRuleBlockParser;
 import org.apache.maven.doxia.module.confluence.parser.table.TableBlockParser;
 import org.apache.maven.doxia.module.confluence.parser.list.ListBlockParser;
-import org.apache.maven.doxia.parser.AbstractParser;
+import org.apache.maven.doxia.parser.AbstractTextParser;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.sink.Sink;
@@ -38,9 +38,17 @@
 import java.util.Iterator;
 import java.util.List;
-/** @plexus.component role-hint="confluence" */
+/**
+ * Parse the <a 
href="http://www.atlassian.com/software/confluence/";>Confluence</a>.
+ * See <a 
href="http://confluence.atlassian.com/display/CONF25/Confluence+Notation+Guide+Overview";>
+ * Confluence Notation Guide Overview</a>
+ *
+ * @version $Id$
+ * @since 1.0
+ * plexus.component role-hint="confluence"
+ */
 public class ConfluenceParser
-    extends AbstractParser
+    extends AbstractTextParser
 {
     private BlockParser[] parsers;
@@ -109,6 +117,7 @@
         return blocks;
     }
+ /** [EMAIL PROTECTED] */
     public synchronized void parse( Reader reader,
                                     Sink sink )
         throws ParseException

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java?view=diff&rev=564180&r1=564179&r2=564180
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
 Thu Aug  9 05:15:44 2007
@@ -38,15 +38,14 @@
  * Parse a fml model and emit events into the specified doxia Sink.
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a>
- * @version $Id:FmlParser.java 348605 2005-11-24 12:02:44 +1100 (Thu, 24 Nov 
2005) brett $
+ * @version $Id$
+ * @since 1.0
  * @plexus.component role-hint="fml"
  */
 public class FmlParser
     implements Parser
 {
-    /**
-     * @see org.apache.maven.doxia.parser.Parser#parse(java.io.Reader, 
org.apache.maven.doxia.sink.Sink)
-     */
+    /** [EMAIL PROTECTED] */
     public void parse( Reader reader, Sink sink )
         throws ParseException
     {
@@ -72,6 +71,12 @@
         {
             throw new ParseException( "Error creating sink: " + 
e.getMessage(), e );
         }
+    }
+
+    /** [EMAIL PROTECTED] */
+    public int getType()
+    {
+        return XML_TYPE;
     }
/**

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?view=diff&rev=564180&r1=564179&r2=564180
==============================================================================
--- 
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
 Thu Aug  9 05:15:44 2007
@@ -28,7 +28,7 @@
 import org.apache.maven.doxia.module.twiki.parser.SectionBlockParser;
 import org.apache.maven.doxia.module.twiki.parser.TableBlockParser;
 import org.apache.maven.doxia.module.twiki.parser.TextParser;
-import org.apache.maven.doxia.parser.AbstractParser;
+import org.apache.maven.doxia.parser.AbstractTextParser;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.util.ByLineReaderSource;
@@ -44,10 +44,12 @@
  * twiki file format</a>
  *
  * @author Juan F. Codagnone
+ * @version $Id$
+ * @since 1.0
  * @plexus.component role="org.apache.maven.doxia.parser.Parser" 
role-hint="twiki"
- * @since Oct 31, 2005
  */
-public class TWikiParser extends AbstractParser
+public class TWikiParser
+    extends AbstractTextParser
 {
     /**
      * paragraph parser. stateless
@@ -126,7 +128,7 @@
             for ( int i = 0; i < parsers.length; i++ )
             {
                 final BlockParser parser = parsers[i];
- +
                 if ( parser.accept( line ) )
                 {
                     accepted = true;
@@ -144,10 +146,7 @@
         return ret;
     }
- /**
-     * @see org.apache.maven.doxia.parser.Parser#parse(java.io.Reader,
-     *      org.apache.maven.doxia.sink.Sink)
-     */
+    /** [EMAIL PROTECTED] */
     public final synchronized void parse( final Reader reader, final Sink sink 
)
         throws ParseException
     {
@@ -175,7 +174,7 @@
         for ( Iterator it = blocks.iterator(); it.hasNext(); )
         {
             final Block block = (Block) it.next();
- +
             block.traverse( sink );
         }
         sink.body_();





--
Dennis Lundberg

Reply via email to