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_();