Hi Dennis, 2007/8/9, Dennis Lundberg <[EMAIL PROTECTED]>: > Shouldn't FmlParser extend AbstractXmlParser?
Yes! It is on my todo list ;) Cheers, Vincent > [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 >