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 2005/12/22 03:57:34 UTC

svn commit: r358449 - in /maven/doxia/trunk: ./ doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/ doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/model/ doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/de...

Author: brett
Date: Wed Dec 21 18:57:07 2005
New Revision: 358449

URL: http://svn.apache.org/viewcvs?rev=358449&view=rev
Log:
- move doxia's site renderer to a model for the decoration, while retaining the <custom> element to allow arbitrary extension that can be used from the velocity template.
- simplify various parts of the API
- add inheritance of the site descriptor from a file based source

Added:
    maven/doxia/trunk/doxia-decoration-model/   (with props)
    maven/doxia/trunk/doxia-decoration-model/pom.xml   (with props)
    maven/doxia/trunk/doxia-decoration-model/src/
    maven/doxia/trunk/doxia-decoration-model/src/main/
    maven/doxia/trunk/doxia-decoration-model/src/main/java/
    maven/doxia/trunk/doxia-decoration-model/src/main/java/org/
    maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/
    maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/
    maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/
    maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/
    maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/
    maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/
    maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssembler.java   (with props)
    maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java   (with props)
    maven/doxia/trunk/doxia-decoration-model/src/main/mdo/
    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/SiteRenderingContext.java   (with props)
Removed:
    maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/model/DecorationModel.java
    maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/model/DecorationModelReader.java
    maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/model/Menu.java
    maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/render/BannerRenderer.java
    maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/render/DecorationRenderer.java
    maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/render/LinksRenderer.java
    maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/decoration/render/NavigationRenderer.java
Modified:
    maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java
    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/XhtmlSinkTest.java
    maven/doxia/trunk/doxia-site-renderer/pom.xml
    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/sink/SiteRendererSink.java
    maven/doxia/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java
    maven/doxia/trunk/pom.xml

Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java?rev=358449&r1=358448&r2=358449&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java (original)
+++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java Wed Dec 21 18:57:07 2005
@@ -17,21 +17,13 @@
  */
 
 import org.apache.maven.doxia.module.HtmlTools;
-import org.apache.maven.doxia.module.xhtml.decoration.render.BannerRenderer;
-import org.apache.maven.doxia.module.xhtml.decoration.render.LinksRenderer;
-import org.apache.maven.doxia.module.xhtml.decoration.render.NavigationRenderer;
 import org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.StructureSink;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
-import org.codehaus.plexus.util.xml.XMLWriter;
 
 import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.io.Writer;
-import java.util.Date;
-import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -48,16 +40,10 @@
 
     private int itemFlag;
 
-    private boolean boxedFlag;
-
     private boolean verbatimFlag;
 
     private int cellCount;
 
-    private boolean hasTitle;
-
-    private int sectionLevel;
-
     private PrintWriter writer;
 
     private StringsMap directives;
@@ -93,8 +79,6 @@
 
         itemFlag = 0;
 
-        boxedFlag = false;
-
         verbatimFlag = false;
 
         cellCount = 0;
@@ -133,8 +117,6 @@
         write( "</title>" );
 
         resetBuffer();
-
-        hasTitle = true;
     }
 
     public void author_()
@@ -163,62 +145,6 @@
     {
         String body = directiveValue( "body()" );
 
-        // ----------------------------------------------------------------------
-        //
-        // ----------------------------------------------------------------------
-
-        NavigationRenderer r = new NavigationRenderer();
-
-        StringWriter sw = new StringWriter();
-
-        XMLWriter w = new PrettyPrintXMLWriter( sw );
-
-        r.render( w, renderingContext );
-
-        Map map = new HashMap();
-
-        map.put( "mainMenu", sw.toString() );
-
-        sw = new StringWriter();
-
-        w = new PrettyPrintXMLWriter( sw );
-
-        LinksRenderer lr = new LinksRenderer();
-
-        lr.render( w, renderingContext );
-
-        map.put( "links", sw.toString() );
-
-        sw = new StringWriter();
-
-        w = new PrettyPrintXMLWriter( sw );
-
-        BannerRenderer br = new BannerRenderer( "bannerLeft" );
-
-        br.render( w, renderingContext );
-
-        map.put( "bannerLeft", sw.toString() );
-
-        sw = new StringWriter();
-
-        w = new PrettyPrintXMLWriter( sw );
-
-        br = new BannerRenderer( "bannerRight" );
-
-        br.render( w, renderingContext );
-
-        map.put( "bannerRight", sw.toString() );
-
-        map.put( "navBarLeft", "Last Published: " + new Date() );
-
-        map.put( "rightColumn", " " );
-
-        body = StringUtils.interpolate( body, map );
-
-        // ----------------------------------------------------------------------
-        //
-        // ----------------------------------------------------------------------
-
         write( body );
     }
 
@@ -226,14 +152,6 @@
     {
         String body = directiveValue( "body_()" );
 
-        Map map = new HashMap();
-
-        map.put( "rightColumn", " " );
-
-        map.put( "footer", "Powered by Doxia 2004 (c)" );
-
-        body = StringUtils.interpolate( body, map );
-
         write( body );
 
         resetState();
@@ -450,8 +368,6 @@
     {
         verbatimFlag = true;
 
-        boxedFlag = boxed;
-
         write( "<div class=\"source\"><pre>" );
     }
 
@@ -461,7 +377,6 @@
 
         verbatimFlag = false;
 
-        boxedFlag = false;
     }
 
     public void horizontalRule()
@@ -900,5 +815,10 @@
     public void close()
     {
         writer.close();
+    }
+
+    public RenderingContext getRenderingContext()
+    {
+        return renderingContext;
     }
 }

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=358449&r1=358448&r2=358449&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 Wed Dec 21 18:57:07 2005
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-import org.apache.maven.doxia.module.xhtml.decoration.model.DecorationModel;
 import org.codehaus.plexus.util.PathTool;
 
 import java.io.File;
@@ -33,9 +32,7 @@
 
     private String outputName;
 
-    private DecorationModel decorationModel;
-
-    public RenderingContext( File basedir, String document, DecorationModel decorationModel )
+    public RenderingContext( File basedir, String document )
     {
         this.basedir = basedir;
 
@@ -43,8 +40,6 @@
         this.outputName = "/" + document.substring( 0, document.lastIndexOf( "." ) + 1 ) + "html";
 
         relativePath = PathTool.getRelativePath( basedir.getPath(), new File( basedir, document ).getPath() );
-
-        this.decorationModel = decorationModel;
     }
 
     public File getBasedir()
@@ -62,8 +57,4 @@
         return outputName;
     }
 
-    public DecorationModel getDecorationModel()
-    {
-        return decorationModel;
-    }
 }

Modified: maven/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/XhtmlSinkTest.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/XhtmlSinkTest.java?rev=358449&r1=358448&r2=358449&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/XhtmlSinkTest.java (original)
+++ maven/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/XhtmlSinkTest.java Wed Dec 21 18:57:07 2005
@@ -18,8 +18,6 @@
 
 import org.apache.maven.doxia.module.xhtml.SinkDescriptorReader;
 import org.apache.maven.doxia.module.xhtml.XhtmlSink;
-import org.apache.maven.doxia.module.xhtml.decoration.model.DecorationModel;
-import org.apache.maven.doxia.module.xhtml.decoration.model.DecorationModelReader;
 import org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
 import org.apache.maven.doxia.sink.Sink;
 
@@ -46,12 +44,8 @@
     {
         String xdoc = "test.apt";
 
-        DecorationModelReader b = new DecorationModelReader();
-
-        DecorationModel navigation = b.createNavigation( new File( getBasedir(), "src/test/site/site.xml" ).getPath() );
-
         RenderingContext renderingContext =
-            new RenderingContext( getBasedirFile(), new File( getBasedirFile(), xdoc ).getPath(), navigation );
+            new RenderingContext( getBasedirFile(), new File( getBasedirFile(), xdoc ).getPath() );
 
         FileReader reader = new FileReader( new File( getBasedirFile(), "src/test/resources/codehaus.dst" ) );
 

Propchange: maven/doxia/trunk/doxia-decoration-model/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Dec 21 18:57:07 2005
@@ -0,0 +1,4 @@
+target
+*.iws
+*.ipr
+*.iml

Added: maven/doxia/trunk/doxia-decoration-model/pom.xml
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/pom.xml?rev=358449&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/pom.xml (added)
+++ maven/doxia/trunk/doxia-decoration-model/pom.xml Wed Dec 21 18:57:07 2005
@@ -0,0 +1,40 @@
+<project>
+  <parent>
+    <artifactId>doxia</artifactId>
+    <groupId>org.apache.maven.doxia</groupId>
+    <version>1.0-alpha-7-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>doxia-decoration-model</artifactId>
+  <name>Doxia Decoration Model</name>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.modello</groupId>
+        <artifactId>modello-maven-plugin</artifactId>
+        <version>1.0-alpha-8-SNAPSHOT</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>xpp3-writer</goal>
+              <goal>java</goal>
+              <goal>xpp3-reader</goal>
+              <goal>xsd</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <version>1.0.0</version>
+          <model>src/main/mdo/decoration.mdo</model>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>1.0.4</version>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/doxia/trunk/doxia-decoration-model/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/doxia/trunk/doxia-decoration-model/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssembler.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssembler.java?rev=358449&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssembler.java (added)
+++ maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssembler.java Wed Dec 21 18:57:07 2005
@@ -0,0 +1,31 @@
+package org.apache.maven.doxia.site.decoration.inheritance;
+
+/*
+ * Copyright 2004-2005 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 org.apache.maven.doxia.site.decoration.DecorationModel;
+
+/**
+ * Manage inheritance of the decoration model.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public interface DecorationModelInheritanceAssembler
+{
+    String ROLE = DecorationModelInheritanceAssembler.class.getName();
+
+    void assembleModelInheritance( DecorationModel child, DecorationModel parent );
+}

Propchange: maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssembler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssembler.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java?rev=358449&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java (added)
+++ maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java Wed Dec 21 18:57:07 2005
@@ -0,0 +1,156 @@
+package org.apache.maven.doxia.site.decoration.inheritance;
+
+/*
+ * Copyright 2004-2005 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 org.apache.maven.doxia.site.decoration.Body;
+import org.apache.maven.doxia.site.decoration.DecorationModel;
+import org.apache.maven.doxia.site.decoration.LinkItem;
+import org.apache.maven.doxia.site.decoration.Menu;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Manage inheritance of the decoration model.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @plexus.component role="org.apache.maven.doxia.site.decoration.inheritance.DecorationModelInheritanceAssembler"
+ */
+public class DefaultDecorationModelInheritanceAssembler
+    implements DecorationModelInheritanceAssembler
+{
+    public void assembleModelInheritance( DecorationModel child, DecorationModel parent )
+    {
+        // cannot inherit from null parent.
+        if ( parent != null )
+        {
+            if ( child.getBannerLeft() == null )
+            {
+                child.setBannerLeft( parent.getBannerLeft() );
+            }
+
+            if ( child.getBannerRight() == null )
+            {
+                child.setBannerRight( parent.getBannerRight() );
+            }
+
+            if ( child.getPublishDate() == null )
+            {
+                child.setPublishDate( parent.getPublishDate() );
+            }
+
+            child.setPoweredBy( mergeLinkItemLists( child.getPoweredBy(), parent.getPoweredBy() ) );
+
+            assembleBodyInheritance( child, parent );
+
+            assembleCustomInheritance( child, parent );
+        }
+    }
+
+    private void assembleCustomInheritance( DecorationModel child, DecorationModel parent )
+    {
+        if ( child.getCustom() == null )
+        {
+            child.setCustom( parent.getCustom() );
+        }
+        else
+        {
+            child.setCustom( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) child.getCustom(), (Xpp3Dom) parent.getCustom() ) );
+        }
+    }
+
+    private void assembleBodyInheritance( DecorationModel child, DecorationModel parent )
+    {
+        Body cBody = child.getBody();
+        Body pBody = parent.getBody();
+
+        if ( cBody == null )
+        {
+            child.setBody( pBody );
+        }
+        else if ( pBody != null )
+        {
+            if ( cBody.getHead() == null )
+            {
+                cBody.setHead( pBody.getHead() );
+            }
+            else
+            {
+                cBody.setHead( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) cBody.getHead(), (Xpp3Dom) pBody.getHead() ) );
+            }
+
+            cBody.setLinks( mergeLinkItemLists( cBody.getLinks(), pBody.getLinks() ) );
+            cBody.setBreadcrumbs( mergeLinkItemLists( cBody.getBreadcrumbs(), pBody.getBreadcrumbs() ) );
+
+            cBody.setMenus( mergeMenus( cBody.getMenus(), pBody.getMenus() ) );
+        }
+    }
+
+    private List mergeMenus( List dominant, List recessive )
+    {
+        List menus = new ArrayList();
+
+        for ( Iterator it = dominant.iterator(); it.hasNext(); )
+        {
+            Menu menu = (Menu) it.next();
+
+            menus.add( menu );
+        }
+
+        for ( Iterator it = recessive.iterator(); it.hasNext(); )
+        {
+            Menu menu = (Menu) it.next();
+
+            if ( "top".equals( menu.getInherit() ) )
+            {
+                menus.add( 0, menu );
+            }
+            else if ( "bottom".equals( menu.getInherit() ) )
+            {
+                menus.add( menu );
+            }
+        }
+
+        return menus;
+    }
+
+    private List mergeLinkItemLists( List dominant, List recessive )
+    {
+        List items = new ArrayList();
+
+        for ( Iterator it = dominant.iterator(); it.hasNext(); )
+        {
+            LinkItem item = (LinkItem) it.next();
+
+            items.add( item );
+        }
+
+        for ( Iterator it = recessive.iterator(); it.hasNext(); )
+        {
+            LinkItem item = (LinkItem) it.next();
+
+            if ( !items.contains( item ) )
+            {
+                items.add( item );
+            }
+        }
+
+        return items;
+    }
+}

Propchange: maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 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=358449&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo (added)
+++ maven/doxia/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo Wed Dec 21 18:57:07 2005
@@ -0,0 +1,250 @@
+<?xml version="1.0"?>
+
+<model>
+  <id>decoration</id>
+  <name>Decoration</name>
+  <description><![CDATA[Model for site decoration in Doxia.]]></description>
+  <defaults>
+    <default>
+      <key>package</key>
+      <value>org.apache.maven.doxia.site.decoration</value>
+    </default>
+  </defaults>
+  <classes>
+    <class rootElement="true" xml.tagName="project">
+      <name>DecorationModel</name>
+      <description>Describes the overall project decoration model.</description>
+      <version>1.0.0</version>
+      <fields>
+        <field xml.attribute="true">
+          <name>name</name>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        <field>
+          <name>bannerLeft</name>
+          <description>Banner logo on the masthead of the site to the left.</description>
+          <version>1.0.0</version>
+          <association>
+            <type>Banner</type>
+          </association>
+        </field>
+        <field>
+          <name>bannerRight</name>
+          <description>Banner logo on the masthead of the site to the right.</description>
+          <version>1.0.0</version>
+          <association>
+            <type>Banner</type>
+          </association>
+        </field>
+        <field>
+          <name>publishDate</name>
+          <description>Modify the date published display properties.</description>
+          <version>1.0.0</version>
+          <association>
+            <type>PublishDate</type>
+          </association>
+        </field>
+        <field xml.associationTagName="logo">
+          <name>poweredBy</name>
+          <description>Powered by logos.</description>
+          <version>1.0.0</version>
+          <association>
+            <type>Logo</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>body</name>
+          <description>The main site content decoration.</description>
+          <version>1.0.0</version>
+          <association>
+            <type>Body</type>
+          </association>
+        </field>
+        <field>
+          <name>custom</name>
+          <description>Custom configuration for use with customised velocity templates.</description>
+          <version>1.0.0</version>
+          <type>DOM</type>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>Banner</name>
+      <description>A banner logo on the masthead of the site.</description>
+      <version>1.0.0</version>
+      <fields>
+        <field>
+          <name>name</name>
+          <version>1.0.0</version>
+          <description>Description of the banner.</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>src</name>
+          <version>1.0.0</version>
+          <description>The href of an image for the banner</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>alt</name>
+          <version>1.0.0</version>
+          <description>Alt description for the banner image.</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>href</name>
+          <version>1.0.0</version>
+          <description>The href of a link to use for the banner</description>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>PublishDate</name>
+      <description>Modify display properties for date published.</description>
+      <version>1.0.0</version>
+      <fields>
+        <field xml.attribute="true">
+          <name>position</name>
+          <description>Where to place the date published (left, right, navigation-top, navigation-bottom,
+            bottom).</description>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        <field xml.attribute="true">
+          <name>format</name>
+          <description>Date format to use. The default is MM/dd/yyyy.</description>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>Logo</name>
+      <description>Logo.</description>
+      <version>1.0.0</version>
+      <superClass>LinkItem</superClass>
+      <fields>
+        <field xml.attribute="true">
+          <name>img</name>
+          <description>Logo image href.</description>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>Body</name>
+      <description>The main content decoration.</description>
+      <version>1.0.0</version>
+      <fields>
+        <field>
+          <name>head</name>
+          <description>Additional content to include in the HEAD block of the generated pages.</description>
+          <version>1.0.0</version>
+          <type>DOM</type>
+        </field>
+        <field xml.associationTagName="item">
+          <name>links</name>
+          <description>A list of links to display in the navigation.</description>
+          <version>1.0.0</version>
+          <association>
+            <type>LinkItem</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field xml.associationTagName="item">
+          <name>breadcrumbs</name>
+          <description>A list of breadcrumbs to display in the navigation.</description>
+          <version>1.0.0</version>
+          <association>
+            <type>LinkItem</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field xml.listStyle="flat">
+          <name>menus</name>
+          <description>Menus to include in the navigation.</description>
+          <version>1.0.0</version>
+          <association>
+            <type>Menu</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>LinkItem</name>
+      <description>A link in the navigation.</description>
+      <version>1.0.0</version>
+      <fields>
+        <field xml.attribute="true">
+          <name>name</name>
+          <description>The name to use for the link.</description>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        <field xml.attribute="true">
+          <name>href</name>
+          <description>The href to use for the link.</description>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>Menu</name>
+      <description>A menu in the navigation.</description>
+      <version>1.0.0</version>
+      <fields>
+        <field xml.attribute="true">
+          <name>name</name>
+          <description>The name to use for the menu.</description>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        <field xml.attribute="true">
+          <name>inherit</name>
+          <description>The way in which the menu is inherited.</description>
+          <version>1.0.0</version>
+          <type>String</type>
+        </field>
+        <field xml.listStyle="flat">
+          <name>items</name>
+          <description>Menu item.</description>
+          <version>1.0.0</version>
+          <association>
+            <type>MenuItem</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>MenuItem</name>
+      <description>A menu item.</description>
+      <version>1.0.0</version>
+      <superClass>LinkItem</superClass>
+      <fields>
+        <field xml.attribute="true">
+          <name>collapse</name>
+          <description>Whether the item is collapsed by default when it has children elements.</description>
+          <version>1.0.0</version>
+          <type>boolean</type>
+        </field>
+        <field xml.listStyle="flat">
+          <name>items</name>
+          <description>Menu item.</description>
+          <version>1.0.0</version>
+          <association>
+            <type>MenuItem</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+      </fields>
+    </class>
+  </classes>
+</model>
+

Modified: maven/doxia/trunk/doxia-site-renderer/pom.xml
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-site-renderer/pom.xml?rev=358449&r1=358448&r2=358449&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-site-renderer/pom.xml (original)
+++ maven/doxia/trunk/doxia-site-renderer/pom.xml Wed Dec 21 18:57:07 2005
@@ -22,6 +22,11 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.doxia</groupId>
+      <artifactId>doxia-decoration-model</artifactId>
+      <version>1.0-alpha-7-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.doxia</groupId>
       <artifactId>doxia-core</artifactId>
       <version>1.0-alpha-7-SNAPSHOT</version>
     </dependency>

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=358449&r1=358448&r2=358449&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 Wed Dec 21 18:57:07 2005
@@ -17,10 +17,6 @@
  */
 
 import org.apache.maven.doxia.Doxia;
-import org.apache.maven.doxia.module.xhtml.SinkDescriptorReader;
-import org.apache.maven.doxia.module.xhtml.XhtmlSink;
-import org.apache.maven.doxia.module.xhtml.decoration.model.DecorationModel;
-import org.apache.maven.doxia.module.xhtml.decoration.model.DecorationModelReader;
 import org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
@@ -35,30 +31,19 @@
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.PathTool;
-import org.codehaus.plexus.util.StringInputStream;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 import org.codehaus.plexus.velocity.VelocityComponent;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.FileReader;
-import java.io.FileWriter;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.StringWriter;
 import java.io.Writer;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -98,119 +83,18 @@
     private I18N i18n;
 
     // ----------------------------------------------------------------------
-    // Fields
-    // ----------------------------------------------------------------------
-
-    private String currentDocument;
-
-    private RenderingContext renderingContext;
-
-    private ClassLoader templateClassLoader;
-
-    private Xpp3Dom siteDescriptor;
-
-    private Locale defaultLocale = Locale.ENGLISH;
-
-    public void setTemplateClassLoader( ClassLoader templateClassLoader )
-    {
-        this.templateClassLoader = templateClassLoader;
-    }
-
-    // ----------------------------------------------------------------------
     // Renderer implementation
     // ----------------------------------------------------------------------
 
-    /**
-     * @see org.apache.maven.doxia.siterenderer.Renderer#render(java.io.File, java.io.File, java.io.File, java.lang.String, java.util.Map)
-     */
-    public void render( File siteDirectory, File outputDirectory, File siteDescriptor, String templateName,
-                        Map templateProperties )
-        throws RendererException, IOException
-    {
-        render( siteDirectory, outputDirectory, siteDescriptor, templateName, templateProperties, defaultLocale );
-    }
-
-    /**
-     * @see org.apache.maven.doxia.siterenderer.Renderer#render(java.io.File, java.io.File, java.io.File, java.lang.String, java.util.Map, java.util.Locale)
-     */
-    public void render( File siteDirectory, File outputDirectory, File siteDescriptor, String templateName,
-                        Map templateProperties, Locale locale )
-        throws RendererException, IOException
-    {
-        render( siteDirectory, outputDirectory, new FileInputStream( siteDescriptor ), templateName, templateProperties,
-                locale );
-    }
-
-    /**
-     * @see org.apache.maven.doxia.siterenderer.Renderer#render(java.io.File, java.io.File, java.lang.String, java.lang.String, Map)
-     */
-    public void render( File siteDirectory, File outputDirectory, String siteDescriptor, String templateName,
-                        Map templateProperties )
+    public void render( File siteDirectory, File outputDirectory, SiteRenderingContext context )
         throws RendererException, IOException
     {
-        render( siteDirectory, outputDirectory, siteDescriptor, templateName, templateProperties, defaultLocale );
+        render( siteDirectory, outputDirectory, context, DEFAULT_OUTPUT_ENCODING );
     }
 
-    /**
-     * @see org.apache.maven.doxia.siterenderer.Renderer#render(java.io.File, java.io.File, java.lang.String, java.lang.String, java.util.Map, java.util.Locale)
-     */
-    public void render( File siteDirectory, File outputDirectory, String siteDescriptor, String templateName,
-                        Map templateProperties, Locale locale )
+    public void render( File siteDirectory, File outputDirectory, SiteRenderingContext context, String outputEncoding )
         throws RendererException, IOException
     {
-        render( siteDirectory, outputDirectory, new StringInputStream( siteDescriptor ), templateName,
-                templateProperties, locale );
-    }
-
-    /**
-     * @see org.apache.maven.doxia.siterenderer.Renderer#render(File, File, InputStream, String, Map)
-     */
-    public void render( File siteDirectory, File outputDirectory, InputStream siteDescriptor, String templateName,
-                        Map templateProperties )
-        throws RendererException, IOException
-    {
-        render( siteDirectory, outputDirectory, siteDescriptor, templateName, templateProperties, defaultLocale );
-    }
-
-    /**
-     * @see org.apache.maven.doxia.siterenderer.Renderer#render(java.io.File, java.io.File, java.io.InputStream, java.lang.String, java.util.Map, java.util.Locale)
-     */
-    public void render( File siteDirectory, File outputDirectory, InputStream siteDescriptor, String templateName,
-                        Map templateProperties, Locale locale )
-        throws RendererException, IOException
-    {
-        render( siteDirectory, outputDirectory, siteDescriptor, templateName, templateProperties, locale,
-                DEFAULT_OUTPUT_ENCODING );
-    }
-
-    //per module
-    public void render( File siteDirectory, File outputDirectory, String module, String moduleExtension,
-                        String moduleParserId, String siteDescriptor, String templateName, Map templateProperties,
-                        Locale locale, String outputEncoding )
-        throws RendererException, IOException
-    {
-        render( siteDirectory, outputDirectory, module, moduleExtension, moduleParserId,
-                new StringInputStream( siteDescriptor ), templateName, templateProperties, locale, outputEncoding );
-    }
-
-    /**
-     * @see org.apache.maven.doxia.siterenderer.Renderer#render(java.io.File, java.io.File, java.io.InputStream, java.lang.String, java.util.Map, java.util.Locale, java.lang.String)
-     */
-    public void render( File siteDirectory, File outputDirectory, InputStream siteDescriptor, String templateName,
-                        Map templateProperties, Locale locale, String outputEncoding )
-        throws RendererException, IOException
-    {
-        try
-        {
-            InputStreamReader xmlReader = new InputStreamReader( siteDescriptor );
-
-            this.siteDescriptor = Xpp3DomBuilder.build( xmlReader );
-        }
-        catch ( XmlPullParserException e )
-        {
-            throw new RendererException( "Can't read site descriptor.", e );
-        }
-
         for ( Iterator i = siteModuleManager.getSiteModules().iterator(); i.hasNext(); )
         {
             SiteModule module = (SiteModule) i.next();
@@ -245,7 +129,7 @@
                         }
 
                         generateDocument( new OutputStreamWriter( new FileOutputStream( outputFile ), outputEncoding ),
-                                          templateName, templateProperties, sink, locale );
+                                          sink, context );
                     }
                     catch ( ParserNotFoundException e )
                     {
@@ -269,21 +153,9 @@
 
     // per module renderer
     public void render( File siteDirectory, File outputDirectory, String module, String moduleExtension,
-                        String moduleParserId, InputStream siteDescriptor, String templateName, Map templateProperties,
-                        Locale locale, String outputEncoding )
+                        String moduleParserId, SiteRenderingContext context, String outputEncoding )
         throws RendererException, IOException
     {
-        try
-        {
-            InputStreamReader xmlReader = new InputStreamReader( siteDescriptor );
-
-            this.siteDescriptor = Xpp3DomBuilder.build( xmlReader );
-        }
-        catch ( XmlPullParserException e )
-        {
-            throw new RendererException( "Can't read site descriptor.", e );
-        }
-
         List docs = FileUtils.getFileNames( siteDirectory, "**/*." + moduleExtension, null, false );
 
         for ( Iterator j = docs.iterator(); j.hasNext(); )
@@ -308,8 +180,8 @@
                 {
                     outputFile.getParentFile().mkdirs();
                 }
-                generateDocument( new OutputStreamWriter( new FileOutputStream( outputFile ), outputEncoding ),
-                                  templateName, templateProperties, sink, locale );
+                generateDocument( new OutputStreamWriter( new FileOutputStream( outputFile ), outputEncoding ), sink,
+                                  context );
             }
             catch ( ParserNotFoundException e )
             {
@@ -328,20 +200,7 @@
         }
     }
 
-    /**
-     * @see org.apache.maven.doxia.siterenderer.Renderer#generateDocument(java.io.Writer, java.lang.String, java.util.Map, org.apache.maven.doxia.siterenderer.sink.SiteRendererSink)
-     */
-    public void generateDocument( Writer writer, String templateName, Map templateProperties, SiteRendererSink sink )
-        throws RendererException
-    {
-        generateDocument( writer, templateName, templateProperties, sink, defaultLocale );
-    }
-
-    /**
-     * @see org.apache.maven.doxia.siterenderer.Renderer#generateDocument(java.io.Writer, java.lang.String, java.util.Map, org.apache.maven.doxia.siterenderer.sink.SiteRendererSink, java.util.Locale)
-     */
-    public void generateDocument( Writer writer, String templateName, Map templateProperties, SiteRendererSink sink,
-                                  Locale locale )
+    public void generateDocument( Writer writer, SiteRendererSink sink, SiteRenderingContext siteContext )
         throws RendererException
     {
         VelocityContext context = new VelocityContext();
@@ -350,7 +209,9 @@
         // Data objects
         // ----------------------------------------------------------------------
 
-        context.put( "relativePath", renderingContext.getRelativePath() );
+        RenderingContext renderingContext = sink.getRenderingContext();
+        String relativePath = renderingContext.getRelativePath();
+        context.put( "relativePath", relativePath );
 
         // Add infos from document
         context.put( "authors", sink.getAuthors() );
@@ -359,19 +220,20 @@
 
         context.put( "bodyContent", sink.getBody() );
 
-        // Add infos from siteDescriptor
-        context.put( "siteDescriptor", siteDescriptor );
+        context.put( "decoration", siteContext.getDecoration() );
 
         context.put( "currentDate", new Date() );
 
         context.put( "dateFormat", new SimpleDateFormat() );
 
-        context.put( "currentFileName", PathTool.calculateLink( "/" + currentDocument, renderingContext
-            .getRelativePath() ) );
+        String currentFileName = PathTool.calculateLink( renderingContext.getOutputName(), relativePath );
+
+        context.put( "currentFileName", currentFileName );
 
-        context.put( "locale", locale );
+        context.put( "locale", siteContext.getLocale() );
 
         // Add user properties
+        Map templateProperties = siteContext.getTemplateProperties();
         if ( templateProperties != null )
         {
             for ( Iterator i = templateProperties.keySet().iterator(); i.hasNext(); )
@@ -398,10 +260,10 @@
         //
         // ----------------------------------------------------------------------
 
-        writeTemplate( templateName, writer, context );
+        writeTemplate( siteContext.getTemplate(), writer, context, siteContext.getTemplateClassLoader() );
     }
 
-    private void writeTemplate( String templateName, Writer writer, Context context )
+    private void writeTemplate( String templateName, Writer writer, Context context, ClassLoader templateClassLoader )
         throws RendererException
     {
         ClassLoader old = null;
@@ -459,73 +321,9 @@
         }
     }
 
-    public SiteRendererSink createSink( File moduleBaseDir, String document, File siteDescriptor )
-        throws RendererException, IOException
-    {
-        return createSink( moduleBaseDir, document, new FileInputStream( siteDescriptor ) );
-    }
-
-    public SiteRendererSink createSink( File moduleBaseDir, String document, String siteDescriptor )
-        throws RendererException, IOException
-    {
-        return createSink( moduleBaseDir, document, new StringInputStream( siteDescriptor ) );
-    }
-
-    public SiteRendererSink createSink( File moduleBaseDir, String document, InputStream siteDescriptor )
-        throws RendererException, IOException
-    {
-        try
-        {
-            InputStreamReader xmlReader = new InputStreamReader( siteDescriptor );
-
-            this.siteDescriptor = Xpp3DomBuilder.build( xmlReader );
-        }
-        catch ( XmlPullParserException e )
-        {
-            throw new RendererException( "Can't read site descriptor.", e );
-        }
-
-        return createSink( moduleBaseDir, document );
-    }
-
-    private SiteRendererSink createSink( File moduleBaseDir, String document )
+    public SiteRendererSink createSink( File moduleBaseDir, String document )
     {
-        currentDocument = document;
-
-        renderingContext = new RenderingContext( moduleBaseDir, document, null );
-
-        return new SiteRendererSink( new StringWriter(), renderingContext );
-    }
-
-    public XhtmlSink createSink( File moduleBasedir, String doc, String outputDirectory, InputStream siteDescriptor,
-                                 String flavour )
-        throws IOException, XmlPullParserException
-    {
-        DecorationModelReader decorationModelReader = new DecorationModelReader();
-
-        DecorationModel decorationModel =
-            decorationModelReader.createNavigation( new InputStreamReader( siteDescriptor ) );
-
-        String outputName = doc.substring( 0, doc.indexOf( "." ) + 1 ) + "html";
-
-        File outputFile = new File( outputDirectory, outputName );
-
-        if ( !outputFile.getParentFile().exists() )
-        {
-            outputFile.getParentFile().mkdirs();
-        }
-
-        InputStream is = getClass().getResourceAsStream( "/" + flavour + ".dst" );
-
-        Reader r = new InputStreamReader( is );
-
-        SinkDescriptorReader sdr = new SinkDescriptorReader();
-
-        Map directives = sdr.read( r );
-
-        RenderingContext renderingContext = new RenderingContext( moduleBasedir, doc, decorationModel );
-
-        return new XhtmlSink( new FileWriter( outputFile ), renderingContext, directives );
+        return new SiteRendererSink( new RenderingContext( moduleBaseDir, document ) );
     }
 
 }

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=358449&r1=358448&r2=358449&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 Wed Dec 21 18:57:07 2005
@@ -20,10 +20,7 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.Writer;
-import java.util.Locale;
-import java.util.Map;
 
 /**
  * @author <a href="mailto:evenisse@codehaus.org>Emmanuel Venisse</a>
@@ -33,60 +30,20 @@
 {
     String ROLE = Renderer.class.getName();
 
-    void render( File siteDirectory, File outputDirectory, File siteDescriptor, String templateName,
-                 Map templateProperties )
+    void render( File siteDirectory, File outputDirectory, SiteRenderingContext context )
         throws RendererException, IOException;
 
-    void render( File siteDirectory, File outputDirectory, InputStream siteDescriptor, String templateName,
-                 Map templateProperties )
-        throws RendererException, IOException;
-
-    void render( File siteDirectory, File outputDirectory, String siteDescriptor, String templateName,
-                 Map templateProperties )
-        throws RendererException, IOException;
-
-    void render( File siteDirectory, File outputDirectory, File siteDescriptor, String templateName,
-                 Map templateProperties, Locale locale )
-        throws RendererException, IOException;
-
-    void render( File siteDirectory, File outputDirectory, InputStream siteDescriptor, String templateName,
-                 Map templateProperties, Locale locale )
-        throws RendererException, IOException;
-
-    void render( File siteDirectory, File outputDirectory, String siteDescriptor, String templateName,
-                 Map templateProperties, Locale locale )
-        throws RendererException, IOException;
-
-    void render( File siteDirectory, File outputDirectory, InputStream siteDescriptor, String templateName,
-                 Map templateProperties, Locale locale, String outputEncoding )
+    void render( File siteDirectory, File outputDirectory, SiteRenderingContext context, String outputEncoding )
         throws RendererException, IOException;
 
     void render( File siteDirectory, File outputDirectory, String module, String moduleExtension, String moduleParserId,
-                 String siteDescriptor, String templateName, Map templateProperties, Locale locale,
-                 String outputEncoding )
+                 SiteRenderingContext context, String outputEncoding )
         throws RendererException, IOException;
 
-    void render( File siteDirectory, File outputDirectory, String module, String moduleExtension, String moduleParserId,
-                 InputStream siteDescriptor, String templateName, Map templateProperties, Locale locale,
-                 String outputEncoding )
-        throws RendererException, IOException;
-
-    void generateDocument( Writer writer, String templateName, Map templateProperties, SiteRendererSink sink )
-        throws RendererException;
-
-    void generateDocument( Writer writer, String templateName, Map templateProperties, SiteRendererSink sink,
-                           Locale locale )
+    void generateDocument( Writer writer, SiteRendererSink sink, SiteRenderingContext siteContext )
         throws RendererException;
 
-    SiteRendererSink createSink( File moduleBaseDir, String document, File siteDescriptor )
+    SiteRendererSink createSink( File moduleBaseDir, String document )
         throws RendererException, IOException;
-
-    SiteRendererSink createSink( File moduleBaseDir, String document, String siteDescriptor )
-        throws RendererException, IOException;
-
-    SiteRendererSink createSink( File moduleBaseDir, String document, InputStream siteDescriptor )
-        throws RendererException, IOException;
-
-    void setTemplateClassLoader( ClassLoader templateClassLoader );
 
 }

Added: 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=358449&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java (added)
+++ maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java Wed Dec 21 18:57:07 2005
@@ -0,0 +1,89 @@
+package org.apache.maven.doxia.siterenderer;
+
+/*
+ * Copyright 2004-2005 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 org.apache.maven.doxia.site.decoration.DecorationModel;
+
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id:DefaultSiteRenderer.java 348612 2005-11-24 12:54:19 +1100 (Thu, 24 Nov 2005) brett $
+ */
+public class SiteRenderingContext
+{
+    private String template;
+
+    private Map templateProperties;
+
+    private ClassLoader templateClassLoader;
+
+    private Locale locale = Locale.getDefault();
+
+    private DecorationModel decoration;
+
+    public String getTemplate()
+    {
+        return template;
+    }
+
+    public void setTemplate( String template )
+    {
+        this.template = template;
+    }
+
+    public Map getTemplateProperties()
+    {
+        return templateProperties;
+    }
+
+    public void setTemplateProperties( Map templateProperties )
+    {
+        this.templateProperties = templateProperties;
+    }
+
+    public ClassLoader getTemplateClassLoader()
+    {
+        return templateClassLoader;
+    }
+
+    public void setTemplateClassLoader( ClassLoader templateClassLoader )
+    {
+        this.templateClassLoader = templateClassLoader;
+    }
+
+    public Locale getLocale()
+    {
+        return locale;
+    }
+
+    public void setLocale( Locale locale )
+    {
+        this.locale = locale;
+    }
+
+    public DecorationModel getDecoration()
+    {
+        return decoration;
+    }
+
+    public void setDecoration( DecorationModel decoration )
+    {
+        this.decoration = decoration;
+    }
+}

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

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

Modified: maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java?rev=358449&r1=358448&r2=358449&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java (original)
+++ maven/doxia/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java Wed Dec 21 18:57:07 2005
@@ -20,6 +20,7 @@
 import org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
 
 import java.io.StringWriter;
+import java.io.Writer;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -37,9 +38,14 @@
 
     private List authors = new ArrayList();
 
-    private StringWriter writer;
+    private final Writer writer;
 
-    public SiteRendererSink( StringWriter writer, RenderingContext renderingContext )
+    public SiteRendererSink( RenderingContext renderingContext )
+    {
+        this( new StringWriter(), renderingContext );
+    }
+
+    private SiteRendererSink( StringWriter writer, RenderingContext renderingContext )
     {
         super( writer, renderingContext, null );
 

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=358449&r1=358448&r2=358449&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 Wed Dec 21 18:57:07 2005
@@ -16,7 +16,13 @@
  * limitations under the License.
  */
 
+import org.apache.maven.doxia.site.decoration.DecorationModel;
+import org.apache.maven.doxia.site.decoration.io.xpp3.DecorationXpp3Reader;
 import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.FileReader;
+import java.io.IOException;
 
 /**
  * @author <a href="mailto:evenisse@codehaus.org>Emmanuel Venisse</a>
@@ -27,11 +33,6 @@
 {
     private Renderer renderer;
 
-    public DefaultSiteRendererTest()
-    {
-        super();
-    }
-
     /**
      * @see org.codehaus.plexus.PlexusTestCase#setUp()
      */
@@ -53,16 +54,14 @@
     }
 
     public void testRender()
+        throws RendererException, IOException, XmlPullParserException
     {
-        try
-        {
-            renderer.render( getTestFile( "src/test/site" ), getTestFile( "target/output" ),
-                             getTestFile( "src/test/site/site.xml" ), "maven-site.vm", null );
-        }
-        catch ( Exception e )
-        {
-            e.printStackTrace();
-            fail( e.getMessage() );
-        }
+        DecorationModel decoration =
+            new DecorationXpp3Reader().read( new FileReader( getTestFile( "src/test/site/site.xml" ) ) );
+        SiteRenderingContext context = new SiteRenderingContext();
+        context.setTemplate( "maven-site.vm" );
+        context.setTemplateClassLoader( getClassLoader() );
+        context.setDecoration( decoration );
+        renderer.render( getTestFile( "src/test/site" ), getTestFile( "target/output" ), context );
     }
 }

Modified: maven/doxia/trunk/pom.xml
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/pom.xml?rev=358449&r1=358448&r2=358449&view=diff
==============================================================================
--- maven/doxia/trunk/pom.xml (original)
+++ maven/doxia/trunk/pom.xml Wed Dec 21 18:57:07 2005
@@ -88,6 +88,7 @@
     <module>doxia-core</module>
     <module>doxia-sink-api</module>
     <module>doxia-site-renderer</module>
+    <module>doxia-decoration-model</module>
   </modules>
   <distributionManagement>
     <repository>
@@ -105,4 +106,4 @@
       <url>scp://minotaur.apache.org/www/maven.apache.org/doxia/</url>
     </site>
   </distributionManagement>
-</project>
\ No newline at end of file
+</project>