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() )
         {


Reply via email to