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 lt...@apache.org on 2010/05/12 13:35:49 UTC
svn commit: r943453 - in
/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src:
main/java/org/apache/maven/doxia/siterenderer/
test/java/org/apache/maven/doxia/siterenderer/
test/resources/site-validate/ test/resources/site-validate/xdoc/ test/res...
Author: ltheussl
Date: Wed May 12 11:35:48 2010
New Revision: 943453
URL: http://svn.apache.org/viewvc?rev=943453&view=rev
Log:
[DOXIASITETOOLS-37] Make SiteRenderer validate xml docs. Separate test resource files that need validation.
Added:
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site-validate/
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site-validate/xdoc/
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site-validate/xdoc/entityTest.xml
Removed:
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/entityTest.xml
Modified:
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.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?rev=943453&r1=943452&r2=943453&view=diff
==============================================================================
--- 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 Wed May 12 11:35:48 2010
@@ -19,6 +19,7 @@ package org.apache.maven.doxia.siterende
* under the License.
*/
+import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
@@ -63,6 +64,7 @@ import org.apache.maven.doxia.module.sit
import org.apache.maven.doxia.module.site.manager.SiteModuleManager;
import org.apache.maven.doxia.module.site.manager.SiteModuleNotFoundException;
import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink;
+import org.apache.maven.doxia.util.XmlValidator;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
@@ -355,13 +357,13 @@ public class DefaultSiteRenderer
Reader reader = null;
try
{
+ String resource = doc.getAbsolutePath();
+
Parser parser = doxia.getParser( renderingContext.getParserId() );
// TODO: DOXIA-111: the filter used here must be checked generally.
if ( renderingContext.getAttribute( "velocity" ) != null )
{
- String resource = doc.getAbsolutePath();
-
try
{
SiteResourceLoader.setResource( resource );
@@ -392,6 +394,10 @@ public class DefaultSiteRenderer
{
case Parser.XML_TYPE:
reader = ReaderFactory.newXmlReader( doc );
+ if ( context.isValidate() )
+ {
+ reader = validate( reader, resource );
+ }
break;
case Parser.TXT_TYPE:
@@ -861,4 +867,23 @@ public class DefaultSiteRenderer
}
}
+ 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 );
+ }
+ }
+
}
Modified: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java?rev=943453&r1=943452&r2=943453&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java Wed May 12 11:35:48 2010
@@ -64,6 +64,31 @@ public class SiteRenderingContext
private List modules = new ArrayList();
+ private boolean validate;
+
+ /**
+ * If input documents should be validated before parsing.
+ * By default no validation is performed.
+ *
+ * @return true if validation is switched on.
+ * @since 1.1.3
+ */
+ public boolean isValidate()
+ {
+ return validate;
+ }
+
+ /**
+ * Switch on/off validation.
+ *
+ * @param validate true to switch on validation.
+ * @since 1.1.3
+ */
+ public void setValidate( boolean validate )
+ {
+ this.validate = validate;
+ }
+
/**
* <p>Getter for the field <code>templateName</code>.</p>
*
Modified: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java?rev=943453&r1=943452&r2=943453&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java Wed May 12 11:35:48 2010
@@ -124,16 +124,11 @@ public class DefaultSiteRendererTest
DecorationModel decoration = new DecorationXpp3Reader()
.read( new FileReader( getTestFile( "src/test/resources/site/site.xml" ) ) );
- SiteRenderingContext ctxt = new SiteRenderingContext();
- ctxt.setTemplateName( "default-site.vm" );
- ctxt.setTemplateClassLoader( getClassLoader() );
- ctxt.setUsingDefaultTemplate( true );
- Map templateProp = new HashMap();
- templateProp.put( "outputEncoding", "UTF-8" );
- ctxt.setTemplateProperties( templateProp );
- ctxt.setDecoration( decoration );
- ctxt.addSiteDirectory( getTestFile( "src/test/resources/site" ) );
+ SiteRenderingContext ctxt = getSiteRenderingContext(
+ decoration, "src/test/resources/site", false );
+ renderer.render( renderer.locateDocumentFiles( ctxt ).values(), ctxt, getTestFile( OUTPUT ) );
+ ctxt = getSiteRenderingContext( decoration, "src/test/resources/site-validate", true );
renderer.render( renderer.locateDocumentFiles( ctxt ).values(), ctxt, getTestFile( OUTPUT ) );
// ----------------------------------------------------------------------
@@ -158,6 +153,22 @@ public class DefaultSiteRendererTest
validatePages();
}
+ private SiteRenderingContext getSiteRenderingContext( DecorationModel decoration, String siteDir, boolean validate )
+ {
+ SiteRenderingContext ctxt = new SiteRenderingContext();
+ ctxt.setTemplateName( "default-site.vm" );
+ ctxt.setTemplateClassLoader( getClassLoader() );
+ ctxt.setUsingDefaultTemplate( true );
+ Map templateProp = new HashMap();
+ templateProp.put( "outputEncoding", "UTF-8" );
+ ctxt.setTemplateProperties( templateProp );
+ ctxt.setDecoration( decoration );
+ ctxt.addSiteDirectory( getTestFile( siteDir ) );
+ ctxt.setValidate( validate );
+
+ return ctxt;
+ }
+
/**
* @throws Exception if something goes wrong.
*/
Added: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site-validate/xdoc/entityTest.xml
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site-validate/xdoc/entityTest.xml?rev=943453&view=auto
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site-validate/xdoc/entityTest.xml (added)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site-validate/xdoc/entityTest.xml Wed May 12 11:35:48 2010
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<!DOCTYPE document [
+<!-- These are the entity sets for ISO Latin 1 characters for the XHTML -->
+<!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+%HTMLlat1;
+<!-- Some entities from http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent -->
+<!ENTITY Alpha "Α"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta "Β"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma "Γ"> <!-- greek capital letter gamma, U+0393 ISOgrk3 -->
+<!ENTITY tritPos "𝟭"> <!-- MATHEMATICAL SANS-SERIF BOLD DIGIT ONE -->
+<!ENTITY flo "ř">
+<!ENTITY myCustomEntity "&flo;">
+]>
+<document xmlns="http://maven.apache.org/XDOC/2.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 file:../../../../../../../doxia/doxia-modules/doxia-module-xdoc/src/main/resources/xdoc-2.0.xsd">
+ <properties>
+ <title>Test entities, cdatas and comments</title>
+ <!-- Test comment: DOXIA-312 -->
+ <author email="test@email.com">Ligature Æ</author>
+ <author email="test@email.com">Ampersand &</author>
+ <author email="test@email.com">Less than <</author>
+ <author email="test@email.com">Greater than ></author>
+ <author email="test@email.com">Apostrophe '</author>
+ <author email="test@email.com">Quote "</author>
+ <author email="test@email.com">test@email.com</author>
+ <author email="test@email.com">test©email.com</author>
+ </properties>
+
+ <body>
+
+ <section name="section name with entities: '&' 'Α' ' ' '&tritPos;'">
+
+ <h4>Entities</h4>
+ <h3>Generic Entities: '&' '<' '>' '"' '''</h3>
+ <p>'&' '<' '>' '"' '''</p>
+
+ <h3>Local Entities: 'Α' 'Β' 'Γ' '&tritPos;'</h3>
+ <p>'Α' 'Β' 'Γ' '&tritPos;𝟭' '&flo;ř' '&myCustomEntity;'</p>
+
+ <h3>DTD Entities: ' ' '¡' '¢'</h3>
+ <p>' ' '¡' '¢'</p>
+
+ <h4>CDATA</h4>
+ <source><![CDATA[<project xmlns:ant="jelly:ant">]]></source>
+ <p><![CDATA[' ' '¡']]></p>
+
+ </section>
+
+ </body>
+
+</document>