Author: jvanzyl
Date: Sun May 27 19:44:00 2007
New Revision: 542084
URL: http://svn.apache.org/viewvc?view=rev&rev=542084
Log:
o allow the site rendering to pickup hints in the rendering context. not
entirely pretty but allows the
selective use of things like velocity. we need a filtering interface, and we
need to be able to chain
them together.
Modified:
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/pom.xml
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
Modified: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/pom.xml
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/pom.xml?view=diff&rev=542084&r1=542083&r2=542084
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/pom.xml (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/pom.xml Sun May 27
19:44:00 2007
@@ -51,7 +51,7 @@
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-i18n</artifactId>
- <version>1.0-beta-6</version>
+ <version>1.0-beta-7</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
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=542084&r1=542083&r2=542084
==============================================================================
---
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
Sun May 27 19:44:00 2007
@@ -33,42 +33,16 @@
import org.apache.velocity.context.Context;
import org.codehaus.plexus.i18n.I18N;
import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.DirectoryScanner;
-import org.codehaus.plexus.util.FileUtils;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.Os;
-import org.codehaus.plexus.util.PathTool;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.velocity.VelocityComponent;
+import org.codehaus.plexus.util.*;
import org.codehaus.plexus.velocity.SiteResourceLoader;
+import org.codehaus.plexus.velocity.VelocityComponent;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.io.StringWriter;
-import java.io.StringReader;
+import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.text.DateFormat;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
+import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -79,24 +53,32 @@
* @plexus.component role-hint="default"
*/
public class
- DefaultSiteRenderer
- extends AbstractLogEnabled
- implements Renderer
+ DefaultSiteRenderer
+ extends AbstractLogEnabled
+ implements Renderer
{
// ----------------------------------------------------------------------
// Requirements
// ----------------------------------------------------------------------
- /** @plexus.requirement */
+ /**
+ * @plexus.requirement
+ */
private VelocityComponent velocity;
- /** @plexus.requirement */
+ /**
+ * @plexus.requirement
+ */
private SiteModuleManager siteModuleManager;
- /** @plexus.requirement */
+ /**
+ * @plexus.requirement
+ */
private Doxia doxia;
- /** @plexus.requirement */
+ /**
+ * @plexus.requirement
+ */
private I18N i18n;
private static final String RESOURCE_DIR =
"org/apache/maven/doxia/siterenderer/resources";
@@ -112,7 +94,7 @@
public void render( Collection documents,
SiteRenderingContext siteRenderingContext,
File outputDirectory )
- throws RendererException, IOException
+ throws RendererException, IOException
{
renderModule( documents, siteRenderingContext, outputDirectory );
@@ -124,7 +106,7 @@
}
public Map locateDocumentFiles( SiteRenderingContext siteRenderingContext )
- throws IOException, RendererException
+ throws IOException, RendererException
{
Map files = new LinkedHashMap();
Map moduleExcludes = siteRenderingContext.getModuleExcludes();
@@ -143,7 +125,7 @@
if ( moduleExcludes != null && moduleExcludes.containsKey(
module.getParserId() ) )
{
addModuleFiles( moduleBasedir, module, (String)
moduleExcludes.get( module.getParserId() ),
- files );
+ files );
}
else
{
@@ -162,12 +144,12 @@
if ( moduleExcludes != null && moduleExcludes.containsKey(
module.getParserId() ) )
{
addModuleFiles( module.getBasedir(),
siteModuleManager.getSiteModule( module.getParserId() ),
- (String) moduleExcludes.get(
module.getParserId() ), files );
+ (String) moduleExcludes.get( module.getParserId()
), files );
}
else
{
addModuleFiles( module.getBasedir(),
siteModuleManager.getSiteModule( module.getParserId() ), null,
- files );
+ files );
}
}
catch ( SiteModuleNotFoundException e )
@@ -182,11 +164,16 @@
SiteModule module,
String excludes,
Map files )
- throws IOException, RendererException
+ throws IOException, RendererException
{
if ( moduleBasedir.exists() )
{
- List docs = FileUtils.getFileNames( moduleBasedir, "**/*." +
module.getExtension(), excludes, false );
+ List docs = new ArrayList();
+
+ docs.addAll( FileUtils.getFileNames( moduleBasedir, "**/*." +
module.getExtension(), excludes, false ) );
+
+ // download.apt.vm
+ docs.addAll( FileUtils.getFileNames( moduleBasedir, "**/*." +
module.getExtension() + ".vm", excludes, false ) );
for ( Iterator k = docs.iterator(); k.hasNext(); )
{
@@ -194,13 +181,21 @@
RenderingContext context = new RenderingContext(
moduleBasedir, doc, module.getParserId() );
+ if ( doc.endsWith( ".vm" ) )
+ {
+ context.setAttribute( "velocity", "true" );
+ }
+
String key = context.getOutputName();
if ( files.containsKey( key ) )
{
DocumentRenderer renderer = (DocumentRenderer) files.get(
key );
+
RenderingContext originalContext =
renderer.getRenderingContext();
+
File originalDoc = new File( originalContext.getBasedir(),
originalContext.getInputName() );
+
throw new RendererException( "Files '" + doc + "' clashes
with existing '" + originalDoc + "'." );
}
//
-----------------------------------------------------------------------
@@ -212,12 +207,15 @@
if ( entry.getKey().toString().toLowerCase().equals(
key.toLowerCase() ) )
{
DocumentRenderer renderer = (DocumentRenderer)
files.get( entry.getKey() );
+
RenderingContext originalContext =
renderer.getRenderingContext();
+
File originalDoc = new File(
originalContext.getBasedir(), originalContext.getInputName() );
+
if ( Os.isFamily( "windows" ) )
{
throw new RendererException(
- "Files '" + doc + "' clashes with existing '"
+ originalDoc + "'." );
+ "Files '" + doc + "' clashes with existing
'" + originalDoc + "'." );
}
getLogger().warn( "Files '" + doc + "' could clashes
with existing '" + originalDoc + "'." );
@@ -232,7 +230,7 @@
private void renderModule( Collection docs,
SiteRenderingContext siteRenderingContext,
File outputDirectory )
- throws IOException, RendererException
+ throws IOException, RendererException
{
for ( Iterator i = docs.iterator(); i.hasNext(); )
{
@@ -260,7 +258,7 @@
getLogger().debug( "Generating " + outputFile );
OutputStreamWriter writer = new OutputStreamWriter( new
FileOutputStream( outputFile ),
-
siteRenderingContext.getOutputEncoding() );
+ siteRenderingContext.getOutputEncoding() );
try
{
@@ -281,7 +279,7 @@
public void renderDocument( Writer writer,
RenderingContext renderingContext,
SiteRenderingContext context )
- throws RendererException, FileNotFoundException,
UnsupportedEncodingException
+ throws RendererException, FileNotFoundException,
UnsupportedEncodingException
{
SiteRendererSink sink = new SiteRendererSink( renderingContext );
@@ -289,34 +287,38 @@
try
{
- Reader reader;
+ Reader reader = null;
- String resource = new File( fullPathDoc ).getAbsolutePath();
-
- try
+ if ( renderingContext.getAttribute( "velocity" ) != null )
{
- SiteResourceLoader.setResource( resource );
+ String resource = new File( fullPathDoc ).getAbsolutePath();
- Context vc = createContext( sink, context );
+ try
+ {
+ SiteResourceLoader.setResource( resource );
- StringWriter sw = new StringWriter();
+ Context vc = createContext( sink, context );
- velocity.getEngine().mergeTemplate( resource, vc, sw );
+ StringWriter sw = new StringWriter();
- reader = new StringReader( sw.toString() );
- }
- catch ( Exception e )
- {
- if ( getLogger().isDebugEnabled() )
- {
- getLogger().error( "Error parsing " + resource + " as a
velocity template, using as text.", e );
+ velocity.getEngine().mergeTemplate( resource, vc, sw );
+
+ reader = new StringReader( sw.toString() );
}
- else
+ catch ( Exception e )
{
- getLogger().error( "Error parsing " + resource + " as a
velocity template, using as text." );
+ if ( getLogger().isDebugEnabled() )
+ {
+ getLogger().error( "Error parsing " + resource + " as
a velocity template, using as text.", e );
+ }
+ else
+ {
+ getLogger().error( "Error parsing " + resource + " as
a velocity template, using as text." );
+ }
}
-
-
+ }
+ else
+ {
reader = new InputStreamReader( new FileInputStream(
fullPathDoc ), context.getInputEncoding() );
}
@@ -331,7 +333,7 @@
catch ( ParseException e )
{
getLogger().error( "Error parsing " + fullPathDoc + ": line [" +
e.getLineNumber() + "] " + e.getMessage(),
- e );
+ e );
}
finally
{
@@ -421,7 +423,7 @@
public void generateDocument( Writer writer,
SiteRendererSink sink,
SiteRenderingContext siteRenderingContext )
- throws RendererException
+ throws RendererException
{
Context context = createContext( sink, siteRenderingContext );
@@ -431,7 +433,7 @@
private void writeTemplate( Writer writer,
Context context,
SiteRenderingContext siteContext )
- throws RendererException
+ throws RendererException
{
ClassLoader old = null;
@@ -461,11 +463,13 @@
}
}
- /** @noinspection OverlyBroadCatchBlock,UnusedCatchParameter */
+ /**
+ * @noinspection OverlyBroadCatchBlock,UnusedCatchParameter
+ */
private void processTemplate( String templateName,
Context context,
Writer writer )
- throws RendererException
+ throws RendererException
{
Template template;
@@ -493,7 +497,7 @@
DecorationModel
decoration,
String
defaultWindowTitle,
Locale locale )
- throws IOException
+ throws IOException
{
SiteRenderingContext context = new SiteRenderingContext();
@@ -533,7 +537,7 @@
DecorationModel
decoration,
String
defaultWindowTitle,
Locale locale )
- throws MalformedURLException
+ throws MalformedURLException
{
SiteRenderingContext context = new SiteRenderingContext();
@@ -565,7 +569,7 @@
public void copyResources( SiteRenderingContext siteContext,
File resourcesDirectory,
File outputDirectory )
- throws IOException
+ throws IOException
{
if ( siteContext.getSkinJarFile() != null )
{
@@ -602,7 +606,7 @@
if ( siteContext.isUsingDefaultTemplate() )
{
InputStream resourceList = getClass().getClassLoader()
- .getResourceAsStream( RESOURCE_DIR + "/resources.txt" );
+ .getResourceAsStream( RESOURCE_DIR + "/resources.txt" );
if ( resourceList != null )
{
@@ -650,7 +654,7 @@
private void copyFileFromZip( ZipFile file,
ZipEntry entry,
File destFile )
- throws IOException
+ throws IOException
{
FileOutputStream fos = new FileOutputStream( destFile );
@@ -673,7 +677,7 @@
*/
protected void copyDirectory( File source,
File destination )
- throws IOException
+ throws IOException
{
if ( source.exists() )
{