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 br...@apache.org on 2006/03/13 15:28:14 UTC

svn commit: r385559 - in /maven/doxia/trunk: doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/render/ doxia-core/src/test/java/org/apache/maven/doxia/module/xhtml/ doxia-decoration-model/src/main/mdo/ doxia-site-renderer/src/main...

Author: brett
Date: Mon Mar 13 06:28:10 2006
New Revision: 385559

URL: http://svn.apache.org/viewcvs?rev=385559&view=rev
Log:
[MSITE-80] refactored site renderer API and pushed duplicate checking and determination of files into the site renderer

Added:
    maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/ModuleReference.java   (with props)
Modified:
    maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/render/RenderingContext.java
    maven/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java
    maven/doxia/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo
    maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
    maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/Renderer.java
    maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java
    maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java

Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/render/RenderingContext.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/render/RenderingContext.java?rev=385559&r1=385558&r2=385559&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/render/RenderingContext.java (original)
+++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/render/RenderingContext.java Mon Mar 13 06:28:10 2006
@@ -26,20 +26,32 @@
  */
 public class RenderingContext
 {
-    private File basedir;
+    private final File basedir;
 
-    private String relativePath;
+    private final String inputName;
 
-    private String outputName;
+    private final String outputName;
+
+    private final String parserId;
+
+    private final String relativePath;
 
     public RenderingContext( File basedir, String document )
     {
+        this( basedir, document, null );
+    }
+
+    public RenderingContext( File basedir, String document, String parserId )
+    {
         this.basedir = basedir;
 
-        // For site comparisons we'll prepend a "/"
-        this.outputName = "/" + document.substring( 0, document.lastIndexOf( "." ) + 1 ) + "html";
+        this.outputName = document.substring( 0, document.lastIndexOf( "." ) ) + ".html";
+
+        this.relativePath = PathTool.getRelativePath( basedir.getPath(), new File( basedir, document ).getPath() );
 
-        relativePath = PathTool.getRelativePath( basedir.getPath(), new File( basedir, document ).getPath() );
+        this.inputName = document;
+
+        this.parserId = parserId;
     }
 
     public File getBasedir()
@@ -47,9 +59,9 @@
         return basedir;
     }
 
-    public String getRelativePath()
+    public String getInputName()
     {
-        return relativePath;
+        return inputName;
     }
 
     public String getOutputName()
@@ -57,4 +69,13 @@
         return outputName;
     }
 
+    public String getParserId()
+    {
+        return parserId;
+    }
+
+    public String getRelativePath()
+    {
+        return relativePath;
+    }
 }

Modified: maven/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java?rev=385559&r1=385558&r2=385559&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java (original)
+++ maven/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java Mon Mar 13 06:28:10 2006
@@ -16,11 +16,9 @@
  * limitations under the License.
  */
 
-import org.apache.maven.doxia.module.xhtml.SinkDescriptorReader;
-import org.apache.maven.doxia.module.xhtml.XhtmlSink;
 import org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
-import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.AbstractSinkTestCase;
+import org.apache.maven.doxia.sink.Sink;
 
 import java.io.File;
 import java.io.FileReader;
@@ -43,10 +41,10 @@
     protected Sink createSink()
         throws Exception
     {
-        String xdoc = "test.apt";
+        String apt = "test.apt";
 
         RenderingContext renderingContext =
-            new RenderingContext( getBasedirFile(), new File( getBasedirFile(), xdoc ).getPath() );
+            new RenderingContext( getBasedirFile(), new File( getBasedirFile(), apt ).getPath(), "apt" );
 
         FileReader reader = new FileReader( new File( getBasedirFile(), "src/test/resources/codehaus.dst" ) );
 
@@ -54,9 +52,7 @@
 
         Map directives = sdr.read( reader );
 
-        XhtmlSink sink = new XhtmlSink( getTestWriter(), renderingContext, directives );
-
-        return sink;
+        return new XhtmlSink( getTestWriter(), renderingContext, directives );
     }
 
     // END SNIPPET: foo

Modified: maven/doxia/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo?rev=385559&r1=385558&r2=385559&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo (original)
+++ maven/doxia/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo Mon Mar 13 06:28:10 2006
@@ -105,6 +105,8 @@
     {
         if ( menusByRef == null )
         {
+            menusByRef = new java.util.HashMap();
+
             for ( java.util.Iterator i = body.getMenus().iterator(); i.hasNext(); )
             {
                 Menu menu = (Menu) i.next();
@@ -384,13 +386,15 @@
         <codeSegment>
           <version>1.0.0</version>
           <code>
-            public static Skin getDefaultSkin()
-            {
-            Skin skin = new Skin();
-            skin.setGroupId( "org.apache.maven.skins" );
-            skin.setArtifactId( "maven-default-skin" );
-            return skin;
-            }
+            <![CDATA[
+    public static Skin getDefaultSkin()
+    {
+        Skin skin = new Skin();
+        skin.setGroupId( "org.apache.maven.skins" );
+        skin.setArtifactId( "maven-default-skin" );
+        return skin;
+    }
+            ]]>
           </code>
         </codeSegment>
       </codeSegments>

Modified: maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java?rev=385559&r1=385558&r2=385559&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java (original)
+++ maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java Mon Mar 13 06:28:10 2006
@@ -23,6 +23,7 @@
 import org.apache.maven.doxia.site.decoration.DecorationModel;
 import org.apache.maven.doxia.site.module.SiteModule;
 import org.apache.maven.doxia.site.module.manager.SiteModuleManager;
+import org.apache.maven.doxia.site.module.manager.SiteModuleNotFoundException;
 import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
@@ -50,9 +51,11 @@
 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;
@@ -105,62 +108,118 @@
     // Renderer implementation
     // ----------------------------------------------------------------------
 
-    public void render( File siteDirectory, File outputDirectory, SiteRenderingContext context )
+    public void render( Collection documents, SiteRenderingContext siteRenderingContext, File outputDirectory )
         throws RendererException, IOException
     {
-        render( siteDirectory, outputDirectory, context, DEFAULT_OUTPUT_ENCODING );
+        render( documents, siteRenderingContext, outputDirectory, DEFAULT_OUTPUT_ENCODING );
     }
 
-    public void render( File siteDirectory, File outputDirectory, SiteRenderingContext context, String outputEncoding )
+    // TODO [IMPORTART] fix sigs
+    public void render( Collection documents, SiteRenderingContext siteRenderingContext, File outputDirectory,
+                        String outputEncoding )
         throws RendererException, IOException
     {
-        for ( Iterator i = siteModuleManager.getSiteModules().iterator(); i.hasNext(); )
+        renderModule( documents, siteRenderingContext, outputDirectory, outputEncoding );
+
+        for ( Iterator i = siteRenderingContext.getSiteDirectories().iterator(); i.hasNext(); )
         {
-            SiteModule module = (SiteModule) i.next();
+            File siteDirectory = (File) i.next();
+            copyResources( siteRenderingContext, new File( siteDirectory, "resources" ), outputDirectory );
+        }
+    }
 
-            File moduleBasedir = new File( siteDirectory, module.getSourceDirectory() );
+    public Map locateDocumentFiles( SiteRenderingContext siteRenderingContext )
+        throws IOException, RendererException
+    {
+        Map files = new LinkedHashMap();
 
-            if ( moduleBasedir.exists() )
+        for ( Iterator i = siteRenderingContext.getSiteDirectories().iterator(); i.hasNext(); )
+        {
+            File siteDirectory = (File) i.next();
+            if ( siteDirectory.exists() )
             {
-                renderModule( moduleBasedir, module.getExtension(), module.getParserId(), outputDirectory,
-                              outputEncoding, context );
+                for ( Iterator j = siteModuleManager.getSiteModules().iterator(); j.hasNext(); )
+                {
+                    SiteModule module = (SiteModule) j.next();
+
+                    File moduleBasedir = new File( siteDirectory, module.getSourceDirectory() );
+
+                    addModuleFiles( moduleBasedir, module, files );
+                }
             }
         }
 
-        copyResources( outputDirectory, context );
+        for ( Iterator i = siteRenderingContext.getModules().iterator(); i.hasNext(); )
+        {
+            ModuleReference module = (ModuleReference) i.next();
+
+            try
+            {
+                addModuleFiles( module.getBasedir(), siteModuleManager.getSiteModule( module.getParserId() ), files );
+            }
+            catch ( SiteModuleNotFoundException e )
+            {
+                throw new RendererException( "Unable to find module: " + e.getMessage(), e );
+            }
+        }
+        return files;
     }
 
-    private void renderModule( File moduleBasedir, String moduleExtension, String moduleParserId, File outputDirectory,
-                               String outputEncoding, SiteRenderingContext context )
+    private void addModuleFiles( File moduleBasedir, SiteModule module, Map files )
         throws IOException, RendererException
     {
-        List docs = FileUtils.getFileNames( moduleBasedir, "**/*." + moduleExtension, null, false );
-
-        for ( Iterator j = docs.iterator(); j.hasNext(); )
+        if ( moduleBasedir.exists() )
         {
-            String doc = (String) j.next();
+            List docs = FileUtils.getFileNames( moduleBasedir, "**/*." + module.getExtension(), null, false );
+
+            for ( Iterator k = docs.iterator(); k.hasNext(); )
+            {
+                String doc = (String) k.next();
+
+                RenderingContext context = new RenderingContext( moduleBasedir, doc, module.getParserId() );
+
+                String key = context.getOutputName().toLowerCase( Locale.getDefault() );
+
+                if ( files.containsKey( key ) )
+                {
+                    RenderingContext originalContext = (RenderingContext) files.get( key );
+                    File originalDoc = new File( originalContext.getBasedir(), originalContext.getInputName() );
+                    throw new RendererException( "Files '" + doc + "' clashes with existing '" + originalDoc + "'" );
+                }
+
+                files.put( key, context );
+            }
+        }
+    }
 
-            String outputName = doc.substring( 0, doc.indexOf( "." ) + 1 ) + "html";
+    private void renderModule( Collection docs, SiteRenderingContext siteRenderingContext, File outputDirectory,
+                               String outputEncoding )
+        throws IOException, RendererException
+    {
+        for ( Iterator i = docs.iterator(); i.hasNext(); )
+        {
+            RenderingContext renderingContext = (RenderingContext) i.next();
 
-            String fullPathDoc = new File( moduleBasedir, doc ).getPath();
+            String fullPathDoc = new File( renderingContext.getBasedir(), renderingContext.getInputName() ).getPath();
 
-            SiteRendererSink sink = createSink( moduleBasedir, outputName );
+            SiteRendererSink sink = createSink( renderingContext );
 
             try
             {
                 FileReader reader = new FileReader( fullPathDoc );
 
-                doxia.parse( reader, moduleParserId, sink );
+                doxia.parse( reader, renderingContext.getParserId(), sink );
 
-                File outputFile = new File( outputDirectory, outputName );
+                File outputFile = new File( outputDirectory, renderingContext.getOutputName() );
 
                 if ( !outputFile.getParentFile().exists() )
                 {
                     outputFile.getParentFile().mkdirs();
                 }
 
-                generateDocument( new OutputStreamWriter( new FileOutputStream( outputFile ), outputEncoding ), sink,
-                                  context );
+                OutputStreamWriter writer =
+                    new OutputStreamWriter( new FileOutputStream( outputFile ), outputEncoding );
+                generateDocument( writer, sink, siteRenderingContext );
             }
             catch ( ParserNotFoundException e )
             {
@@ -179,16 +238,7 @@
         }
     }
 
-    public void render( File moduleBasedir, File outputDirectory, String module, String moduleExtension,
-                        String moduleParserId, SiteRenderingContext context, String outputEncoding )
-        throws RendererException, IOException
-    {
-        renderModule( moduleBasedir, moduleExtension, moduleParserId, outputDirectory, outputEncoding, context );
-
-        copyResources( outputDirectory, context );
-    }
-
-    public void generateDocument( Writer writer, SiteRendererSink sink, SiteRenderingContext siteContext )
+    public void generateDocument( Writer writer, SiteRendererSink sink, SiteRenderingContext siteRenderingContext )
         throws RendererException
     {
         VelocityContext context = new VelocityContext();
@@ -198,20 +248,19 @@
         // ----------------------------------------------------------------------
 
         RenderingContext renderingContext = sink.getRenderingContext();
-        String relativePath = renderingContext.getRelativePath();
-        context.put( "relativePath", relativePath );
+        context.put( "relativePath", renderingContext.getRelativePath() );
 
         // Add infos from document
         context.put( "authors", sink.getAuthors() );
 
         String title = "";
-        if ( siteContext.getDecoration().getName() != null )
+        if ( siteRenderingContext.getDecoration().getName() != null )
         {
-            title = siteContext.getDecoration().getName();
+            title = siteRenderingContext.getDecoration().getName();
         }
-        else if ( siteContext.getDefaultWindowTitle() != null )
+        else if ( siteRenderingContext.getDefaultWindowTitle() != null )
         {
-            title = siteContext.getDefaultWindowTitle();
+            title = siteRenderingContext.getDefaultWindowTitle();
         }
 
         if ( title.length() > 0 )
@@ -224,21 +273,19 @@
 
         context.put( "bodyContent", sink.getBody() );
 
-        context.put( "decoration", siteContext.getDecoration() );
+        context.put( "decoration", siteRenderingContext.getDecoration() );
 
         context.put( "currentDate", new Date() );
 
-        context.put( "dateFormat", DateFormat.getDateInstance( DateFormat.DEFAULT, siteContext.getLocale() ) );
+        Locale locale = siteRenderingContext.getLocale();
+        context.put( "dateFormat", DateFormat.getDateInstance( DateFormat.DEFAULT, locale ) );
 
-        String currentFileName = PathTool.calculateLink( renderingContext.getOutputName(), relativePath );
-        currentFileName = currentFileName.replace( '\\', '/' );
+        context.put( "currentFileName", renderingContext.getOutputName().replace( '\\', '/' ) );
 
-        context.put( "currentFileName", currentFileName );
-
-        context.put( "locale", siteContext.getLocale() );
+        context.put( "locale", locale );
 
         // Add user properties
-        Map templateProperties = siteContext.getTemplateProperties();
+        Map templateProperties = siteRenderingContext.getTemplateProperties();
         if ( templateProperties != null )
         {
             for ( Iterator i = templateProperties.keySet().iterator(); i.hasNext(); )
@@ -265,7 +312,7 @@
         //
         // ----------------------------------------------------------------------
 
-        writeTemplate( writer, context, siteContext );
+        writeTemplate( writer, context, siteRenderingContext );
     }
 
     private void writeTemplate( Writer writer, Context context, SiteRenderingContext siteContext )
@@ -326,14 +373,13 @@
         }
     }
 
-    public SiteRendererSink createSink( File moduleBaseDir, String document )
+    public SiteRendererSink createSink( RenderingContext renderingContext )
     {
-        return new SiteRendererSink( new RenderingContext( moduleBaseDir, document ) );
+        return new SiteRendererSink( renderingContext );
     }
 
     public SiteRenderingContext createContextForSkin( File skinFile, Map attributes, DecorationModel decoration,
-                                                      Locale locale, String defaultWindowTitle,
-                                                      File resourcesDirectory )
+                                                      String defaultWindowTitle, Locale locale )
         throws IOException
     {
         SiteRenderingContext context = new SiteRenderingContext();
@@ -364,14 +410,13 @@
         context.setDecoration( decoration );
         context.setDefaultWindowTitle( defaultWindowTitle );
         context.setSkinJarFile( skinFile );
-        context.setResourcesDirectory( resourcesDirectory );
 
         return context;
     }
 
-    public SiteRenderingContext createContextForTemplate( File templateFile, Map attributes, DecorationModel decoration,
-                                                          Locale locale, String defaultWindowTitle, File skinFile,
-                                                          File resourcesDirectory )
+    public SiteRenderingContext createContextForTemplate( File templateFile, File skinFile, Map attributes,
+                                                          DecorationModel decoration, String defaultWindowTitle,
+                                                          Locale locale )
         throws MalformedURLException
     {
         SiteRenderingContext context = new SiteRenderingContext();
@@ -384,7 +429,6 @@
         context.setDecoration( decoration );
         context.setDefaultWindowTitle( defaultWindowTitle );
         context.setSkinJarFile( skinFile );
-        context.setResourcesDirectory( resourcesDirectory );
 
         return context;
     }
@@ -402,13 +446,7 @@
         }
     }
 
-    /**
-     * Copy Resources
-     *
-     * @param outputDir the output directory
-     * @throws java.io.IOException if any
-     */
-    public void copyResources( File outputDir, SiteRenderingContext siteContext )
+    public void copyResources( SiteRenderingContext siteContext, File resourcesDirectory, File outputDirectory )
         throws IOException
     {
         if ( siteContext.getSkinJarFile() != null )
@@ -423,21 +461,12 @@
 
                     if ( !entry.getName().startsWith( "META-INF/" ) )
                     {
-                        File destFile = new File( outputDir, entry.getName() );
+                        File destFile = new File( outputDirectory, entry.getName() );
                         if ( !entry.isDirectory() )
                         {
                             destFile.getParentFile().mkdirs();
 
-                            FileOutputStream fos = new FileOutputStream( destFile );
-
-                            try
-                            {
-                                IOUtil.copy( file.getInputStream( entry ), fos );
-                            }
-                            finally
-                            {
-                                IOUtil.close( fos );
-                            }
+                            copyFileFromZip( file, entry, destFile );
                         }
                         else
                         {
@@ -472,7 +501,7 @@
                         throw new IOException( "The resource " + line + " doesn't exist." );
                     }
 
-                    File outputFile = new File( outputDir, line );
+                    File outputFile = new File( outputDirectory, line );
 
                     if ( !outputFile.getParentFile().exists() )
                     {
@@ -492,16 +521,27 @@
             }
         }
 
-        File resourcesDirectory = siteContext.getResourcesDirectory();
-
         // Copy extra site resources
-        // TODO: this should be accommodating locale
-        // TODO: this should be automatically looking into ${siteDirectory}/resources
         if ( resourcesDirectory != null && resourcesDirectory.exists() )
         {
-            copyDirectory( resourcesDirectory, outputDir );
+            copyDirectory( resourcesDirectory, outputDirectory );
         }
 
+    }
+
+    private void copyFileFromZip( ZipFile file, ZipEntry entry, File destFile )
+        throws IOException
+    {
+        FileOutputStream fos = new FileOutputStream( destFile );
+
+        try
+        {
+            IOUtil.copy( file.getInputStream( entry ), fos );
+        }
+        finally
+        {
+            IOUtil.close( fos );
+        }
     }
 
     /**

Added: maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/ModuleReference.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/ModuleReference.java?rev=385559&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/ModuleReference.java (added)
+++ maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/ModuleReference.java Mon Mar 13 06:28:10 2006
@@ -0,0 +1,47 @@
+package org.apache.maven.doxia.siterenderer;
+
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import java.io.File;
+
+/**
+ * Holds a small extra module reference in the list of added modules to the rendering context.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+class ModuleReference
+{
+    private final String parserId;
+
+    private final File basedir;
+
+    ModuleReference( String parserId, File basedir )
+    {
+        this.parserId = parserId;
+        this.basedir = basedir;
+    }
+
+    public String getParserId()
+    {
+        return parserId;
+    }
+
+    public File getBasedir()
+    {
+        return basedir;
+    }
+}

Propchange: maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/ModuleReference.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/ModuleReference.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/Renderer.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/Renderer.java?rev=385559&r1=385558&r2=385559&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/Renderer.java (original)
+++ maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/Renderer.java Mon Mar 13 06:28:10 2006
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
 import org.apache.maven.doxia.site.decoration.DecorationModel;
 import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink;
 
@@ -23,6 +24,7 @@
 import java.io.IOException;
 import java.io.Writer;
 import java.net.MalformedURLException;
+import java.util.Collection;
 import java.util.Locale;
 import java.util.Map;
 
@@ -34,31 +36,31 @@
 {
     String ROLE = Renderer.class.getName();
 
-    void render( File siteDirectory, File outputDirectory, SiteRenderingContext context )
+    void render( Collection documents, SiteRenderingContext siteRenderingContext, File outputDirectory )
         throws RendererException, IOException;
 
-    void render( File siteDirectory, File outputDirectory, SiteRenderingContext context, String outputEncoding )
+    void render( Collection documents, SiteRenderingContext siteRenderingContext, File outputDirectory,
+                 String outputEncoding )
         throws RendererException, IOException;
 
-    void render( File moduleBasedir, File outputDirectory, String module, String moduleExtension, String moduleParserId,
-                 SiteRenderingContext context, String outputEncoding )
-        throws RendererException, IOException;
-
-    void generateDocument( Writer writer, SiteRendererSink sink, SiteRenderingContext siteContext )
+    void generateDocument( Writer writer, SiteRendererSink sink, SiteRenderingContext siteRenderingContext )
         throws RendererException;
 
-    SiteRendererSink createSink( File moduleBaseDir, String document )
+    SiteRendererSink createSink( RenderingContext renderingContext )
         throws RendererException, IOException;
 
-    SiteRenderingContext createContextForSkin( File skinFile, Map attributes, DecorationModel decoration, Locale locale,
-                                               String defaultWindowTitle, File resourcesDirectory )
+    SiteRenderingContext createContextForSkin( File skinFile, Map attributes, DecorationModel decoration,
+                                               String defaultWindowTitle, Locale locale )
         throws IOException;
 
-    SiteRenderingContext createContextForTemplate( File templateFile, Map attributes, DecorationModel decoration,
-                                                   Locale locale, String defaultWindowTitle, File skinFile,
-                                                   File resourcesDirectory )
+    SiteRenderingContext createContextForTemplate( File templateFile, File skinFile, Map attributes,
+                                                   DecorationModel decoration, String defaultWindowTitle,
+                                                   Locale locale )
         throws MalformedURLException;
 
-    void copyResources( File outputDirectory, SiteRenderingContext siteContext )
+    void copyResources( SiteRenderingContext siteRenderingContext, File resourcesDirectory, File outputDirectory )
         throws IOException;
+
+    Map locateDocumentFiles( SiteRenderingContext siteRenderingContext )
+        throws IOException, RendererException;
 }

Modified: maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java?rev=385559&r1=385558&r2=385559&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java (original)
+++ maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java Mon Mar 13 06:28:10 2006
@@ -19,6 +19,9 @@
 import org.apache.maven.doxia.site.decoration.DecorationModel;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
@@ -44,7 +47,9 @@
 
     private boolean usingDefaultTemplate;
 
-    private File resourcesDirectory;
+    private List siteDirectories = new ArrayList();
+
+    private List modules = new ArrayList();
 
     public String getTemplateName()
     {
@@ -68,7 +73,7 @@
 
     public void setTemplateProperties( Map templateProperties )
     {
-        this.templateProperties = templateProperties;
+        this.templateProperties = Collections.unmodifiableMap( templateProperties );
     }
 
     public Locale getLocale()
@@ -126,13 +131,24 @@
         return usingDefaultTemplate;
     }
 
-    public void setResourcesDirectory( File resourcesDirectory )
+    public void addSiteDirectory( File file )
+    {
+        this.siteDirectories.add( file );
+    }
+
+    public void addModuleDirectory( File file, String moduleParserId )
     {
-        this.resourcesDirectory = resourcesDirectory;
+        this.modules.add( new ModuleReference( moduleParserId, file ) );
     }
 
-    public File getResourcesDirectory()
+    public List getSiteDirectories()
     {
-        return resourcesDirectory;
+        return siteDirectories;
     }
+
+    public List getModules()
+    {
+        return modules;
+    }
+
 }

Modified: maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java?rev=385559&r1=385558&r2=385559&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java (original)
+++ maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java Mon Mar 13 06:28:10 2006
@@ -62,6 +62,7 @@
         context.setTemplateName( "default-site.vm" );
         context.setTemplateClassLoader( getClassLoader() );
         context.setDecoration( decoration );
-        renderer.render( getTestFile( "src/test/site" ), getTestFile( "target/output" ), context );
+        context.addSiteDirectory( getTestFile( "src/test/site" ) );
+        renderer.render( renderer.locateDocumentFiles( context ).values(), context, getTestFile( "target/output" ) );
     }
 }