Author: ltheussl
Date: Fri May 21 14:04:46 2010
New Revision: 947013
URL: http://svn.apache.org/viewvc?rev=947013&view=rev
Log:
ad DOXIA-392, DOXIASITETOOLS-37: also make DocumentRenderer validate xml
Modified:
maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/AbstractDocumentRenderer.java
Modified:
maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/AbstractDocumentRenderer.java
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/AbstractDocumentRenderer.java?rev=947013&r1=947012&r2=947013&view=diff
==============================================================================
---
maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/AbstractDocumentRenderer.java
(original)
+++
maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/AbstractDocumentRenderer.java
Fri May 21 14:04:46 2010
@@ -19,6 +19,7 @@ package org.apache.maven.doxia.docrender
* under the License.
*/
+import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.Reader;
@@ -44,6 +45,8 @@ import org.apache.maven.doxia.parser.man
import org.apache.maven.doxia.logging.PlexusLoggerWrapper;
import org.apache.maven.doxia.module.site.SiteModule;
import org.apache.maven.doxia.module.site.manager.SiteModuleManager;
+import org.apache.maven.doxia.util.XmlValidator;
+
import org.apache.velocity.VelocityContext;
import org.apache.velocity.context.Context;
@@ -211,7 +214,6 @@ public abstract class AbstractDocumentRe
* @param filesToProcess the Map of Files to process. The Map should
contain as keys the paths of the
* source files (relative to {...@link #getBaseDir() baseDir}), and
the corresponding SiteModule as values.
* @param outputDirectory the output directory where the documents should
be generated.
- * @param context the rendering context.
* @throws org.apache.maven.doxia.docrenderer.DocumentRendererException if
any
* @throws java.io.IOException if any
* @since 1.1.1
@@ -473,6 +475,10 @@ public abstract class AbstractDocumentRe
{
reader = getVelocityReader( f, ( (XmlStreamReader)
reader ).getEncoding(), context );
}
+ if ( context != null && Boolean.TRUE.equals( (Boolean)
context.get( "validate" ) ) )
+ {
+ reader = validate( reader, fullDocPath );
+ }
break;
case Parser.TXT_TYPE:
@@ -504,7 +510,7 @@ public abstract class AbstractDocumentRe
catch ( ParserNotFoundException e )
{
throw new DocumentRendererException( "No parser '" + parserId
- + "' found for " + fullDocPath + ": " + e.getMessage()
);
+ + "' found for " + fullDocPath + ": " +
e.getMessage(), e );
}
catch ( ParseException e )
{
@@ -664,4 +670,23 @@ public abstract class AbstractDocumentRe
{
return FileUtils.getExtension( f.getAbsolutePath() ).toLowerCase(
Locale.ENGLISH ).endsWith( "vm" );
}
+
+ private Reader validate( Reader source, String resource )
+ throws ParseException, IOException
+ {
+ getLogger().debug( "Validating: " + resource );
+
+ try
+ {
+ String content = IOUtil.toString( new BufferedReader( source ) );
+
+ new XmlValidator( new PlexusLoggerWrapper( getLogger() )
).validate( content );
+
+ return new StringReader( content );
+ }
+ finally
+ {
+ IOUtil.close( source );
+ }
+ }
}