Author: brett
Date: Thu Dec 22 20:40:23 2005
New Revision: 358699

URL: http://svn.apache.org/viewcvs?rev=358699&view=rev
Log:
PR: MSITE-44
resolve paths in the decoration model relative to different base URLs and add 
unit tests for inheritence

Added:
    
maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/translate/
    maven/doxia/trunk/doxia-decoration-model/src/test/
    maven/doxia/trunk/doxia-decoration-model/src/test/java/
    maven/doxia/trunk/doxia-decoration-model/src/test/java/org/
    maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/
    maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/
    
maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/
    
maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/
    
maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/
    
maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/
    
maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java
   (with props)
    maven/doxia/trunk/doxia-decoration-model/src/test/resources/
    maven/doxia/trunk/doxia-decoration-model/src/test/resources/child.xml   
(with props)
    maven/doxia/trunk/doxia-decoration-model/src/test/resources/empty.xml   
(with props)
    
maven/doxia/trunk/doxia-decoration-model/src/test/resources/external-urls.xml   
(with props)
    
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-child.xml
   (with props)
    
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-merged.xml
   (with props)
    maven/doxia/trunk/doxia-decoration-model/src/test/resources/merged.xml   
(with props)
    maven/doxia/trunk/doxia-decoration-model/src/test/resources/parent.xml   
(with props)
    
maven/doxia/trunk/doxia-decoration-model/src/test/resources/relative-urls.xml   
(with props)
Modified:
    maven/doxia/trunk/doxia-decoration-model/pom.xml
    
maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssembler.java
    
maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
    maven/doxia/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo

Modified: maven/doxia/trunk/doxia-decoration-model/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/pom.xml?rev=358699&r1=358698&r2=358699&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/pom.xml (original)
+++ maven/doxia/trunk/doxia-decoration-model/pom.xml Thu Dec 22 20:40:23 2005
@@ -32,6 +32,12 @@
   </build>
   <dependencies>
     <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
       <version>1.0.4</version>

Modified: 
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=358699&r1=358698&r2=358699&view=diff
==============================================================================
--- 
maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssembler.java
 (original)
+++ 
maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssembler.java
 Thu Dec 22 20:40:23 2005
@@ -27,5 +27,6 @@
 {
     String ROLE = DecorationModelInheritanceAssembler.class.getName();
 
-    void assembleModelInheritance( DecorationModel child, DecorationModel 
parent );
+    void assembleModelInheritance( DecorationModel child, DecorationModel 
parent, String childBaseUrl,
+                                   String parentBaseUrl );
 }

Modified: 
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=358699&r1=358698&r2=358699&view=diff
==============================================================================
--- 
maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
 (original)
+++ 
maven/doxia/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
 Thu Dec 22 20:40:23 2005
@@ -16,15 +16,20 @@
  *
  */
 
+import org.apache.maven.doxia.site.decoration.Banner;
 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.Logo;
 import org.apache.maven.doxia.site.decoration.Menu;
+import org.apache.maven.doxia.site.decoration.MenuItem;
+import org.codehaus.plexus.util.PathTool;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.StringTokenizer;
 
 /**
  * Manage inheritance of the decoration model.
@@ -35,9 +40,10 @@
 public class DefaultDecorationModelInheritanceAssembler
     implements DecorationModelInheritanceAssembler
 {
-    public void assembleModelInheritance( DecorationModel child, 
DecorationModel parent )
+    public void assembleModelInheritance( DecorationModel child, 
DecorationModel parent, String childBaseUrl,
+                                          String parentBaseUrl )
     {
-        // TODO: align hrefs to the base URL of the project
+        String prefix = getParentPrefix( parentBaseUrl, childBaseUrl );
 
         // cannot inherit from null parent.
         if ( parent != null )
@@ -45,11 +51,15 @@
             if ( child.getBannerLeft() == null )
             {
                 child.setBannerLeft( parent.getBannerLeft() );
+
+                resolveBannerPaths( child.getBannerLeft(), prefix );
             }
 
             if ( child.getBannerRight() == null )
             {
                 child.setBannerRight( parent.getBannerRight() );
+
+                resolveBannerPaths( child.getBannerRight(), prefix );
             }
 
             if ( child.getPublishDate() == null )
@@ -57,14 +67,33 @@
                 child.setPublishDate( parent.getPublishDate() );
             }
 
-            child.setPoweredBy( mergeLinkItemLists( child.getPoweredBy(), 
parent.getPoweredBy() ) );
+            child.setPoweredBy( mergePoweredByLists( child.getPoweredBy(), 
parent.getPoweredBy(), prefix ) );
 
-            assembleBodyInheritance( child, parent );
+            assembleBodyInheritance( child, parent, prefix );
 
             assembleCustomInheritance( child, parent );
         }
     }
 
+    private void resolveBannerPaths( Banner banner, String prefix )
+    {
+        if ( banner != null )
+        {
+            banner.setHref( resolvePath( banner.getHref(), prefix ) );
+            banner.setSrc( resolvePath( banner.getSrc(), prefix ) );
+        }
+    }
+
+    private String resolvePath( String href, String prefix )
+    {
+        String relativePath = href;
+        if ( relativePath.startsWith( "/" ) )
+        {
+            relativePath = relativePath.substring( 1 );
+        }
+        return PathTool.calculateLink( relativePath, prefix );
+    }
+
     private void assembleCustomInheritance( DecorationModel child, 
DecorationModel parent )
     {
         if ( child.getCustom() == null )
@@ -77,16 +106,18 @@
         }
     }
 
-    private void assembleBodyInheritance( DecorationModel child, 
DecorationModel parent )
+    private void assembleBodyInheritance( DecorationModel child, 
DecorationModel parent, String prefix )
     {
         Body cBody = child.getBody();
         Body pBody = parent.getBody();
 
-        if ( cBody == null )
+        if ( cBody == null && pBody != null )
         {
-            child.setBody( pBody );
+            cBody = new Body();
+            child.setBody( cBody );
         }
-        else if ( pBody != null )
+
+        if ( pBody != null )
         {
             if ( cBody.getHead() == null )
             {
@@ -97,14 +128,14 @@
                 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.setLinks( mergeLinkItemLists( cBody.getLinks(), 
pBody.getLinks(), prefix ) );
+            cBody.setBreadcrumbs( mergeLinkItemLists( cBody.getBreadcrumbs(), 
pBody.getBreadcrumbs(), prefix ) );
 
-            cBody.setMenus( mergeMenus( cBody.getMenus(), pBody.getMenus() ) );
+            cBody.setMenus( mergeMenus( cBody.getMenus(), pBody.getMenus(), 
prefix ) );
         }
     }
 
-    private List mergeMenus( List dominant, List recessive )
+    private List mergeMenus( List dominant, List recessive, String prefix )
     {
         List menus = new ArrayList();
 
@@ -115,24 +146,51 @@
             menus.add( menu );
         }
 
+        int topCounter = 0;
         for ( Iterator it = recessive.iterator(); it.hasNext(); )
         {
             Menu menu = (Menu) it.next();
 
             if ( "top".equals( menu.getInherit() ) )
             {
-                menus.add( 0, menu );
+                menus.add( topCounter, menu );
+                topCounter++;
+
+                resolveMenuPaths( menu.getItems(), prefix );
             }
             else if ( "bottom".equals( menu.getInherit() ) )
             {
                 menus.add( menu );
+
+                resolveMenuPaths( menu.getItems(), prefix );
             }
         }
 
         return menus;
     }
 
-    private List mergeLinkItemLists( List dominant, List recessive )
+    private void resolveMenuPaths( List items, String prefix )
+    {
+        for ( Iterator i = items.iterator(); i.hasNext(); )
+        {
+            MenuItem item = (MenuItem) i.next();
+            resolveLinkItemPaths( item, prefix );
+            resolveMenuPaths( item.getItems(), prefix );
+        }
+    }
+
+    private void resolveLinkItemPaths( LinkItem item, String prefix )
+    {
+        item.setHref( resolvePath( item.getHref(), prefix ) );
+    }
+
+    private void resolveLogoPaths( Logo logo, String prefix )
+    {
+        logo.setImg( resolvePath( logo.getImg(), prefix ) );
+        resolveLinkItemPaths( logo, prefix );
+    }
+
+    private List mergeLinkItemLists( List dominant, List recessive, String 
prefix )
     {
         List items = new ArrayList();
 
@@ -150,9 +208,78 @@
             if ( !items.contains( item ) )
             {
                 items.add( item );
+
+                resolveLinkItemPaths( item, prefix );
             }
         }
 
         return items;
+    }
+
+    private List mergePoweredByLists( List dominant, List recessive, String 
prefix )
+    {
+        List logos = new ArrayList();
+
+        for ( Iterator it = dominant.iterator(); it.hasNext(); )
+        {
+            Logo logo = (Logo) it.next();
+
+            logos.add( logo );
+        }
+
+        for ( Iterator it = recessive.iterator(); it.hasNext(); )
+        {
+            Logo logo = (Logo) it.next();
+
+            if ( !logos.contains( logo ) )
+            {
+                logos.add( logo );
+
+                resolveLogoPaths( logo, prefix );
+            }
+        }
+
+        return logos;
+    }
+
+    private static String getParentPrefix( String parentUrl, String childUrl )
+    {
+        String prefix = parentUrl;
+        if ( childUrl.startsWith( parentUrl ) )
+        {
+            prefix = getRelativePath( childUrl, parentUrl );
+
+            String parentPath = "";
+            for ( StringTokenizer tok = new StringTokenizer( prefix, "/" ); 
tok.hasMoreTokens(); tok.nextToken() )
+            {
+                parentPath += "../";
+            }
+            prefix = parentPath;
+        }
+        else if ( parentUrl.startsWith( childUrl ) )
+        {
+            prefix = getRelativePath( parentUrl, childUrl );
+        }
+
+        if ( !prefix.endsWith( "/" ) )
+        {
+            prefix += "/";
+        }
+
+        return prefix;
+    }
+
+    private static String getRelativePath( String childUrl, String parentUrl )
+    {
+        String relative = childUrl.substring( parentUrl.length() );
+        if ( relative.startsWith( "/" ) )
+        {
+            relative = relative.substring( 1 );
+        }
+        if ( !relative.endsWith( "/" ) )
+        {
+            relative += "/";
+        }
+        return relative;
     }
 }

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=358699&r1=358698&r2=358699&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 Thu 
Dec 22 20:40:23 2005
@@ -20,6 +20,7 @@
           <name>name</name>
           <version>1.0.0</version>
           <type>String</type>
+          <identifier>true</identifier>
         </field>
         <field>
           <name>bannerLeft</name>
@@ -28,6 +29,7 @@
           <association>
             <type>Banner</type>
           </association>
+          <identifier>true</identifier>
         </field>
         <field>
           <name>bannerRight</name>
@@ -36,6 +38,7 @@
           <association>
             <type>Banner</type>
           </association>
+          <identifier>true</identifier>
         </field>
         <field>
           <name>publishDate</name>
@@ -44,6 +47,7 @@
           <association>
             <type>PublishDate</type>
           </association>
+          <identifier>true</identifier>
         </field>
         <field xml.associationTagName="logo">
           <name>poweredBy</name>
@@ -53,6 +57,7 @@
             <type>Logo</type>
             <multiplicity>*</multiplicity>
           </association>
+          <identifier>true</identifier>
         </field>
         <field>
           <name>body</name>
@@ -61,12 +66,14 @@
           <association>
             <type>Body</type>
           </association>
+          <identifier>true</identifier>
         </field>
         <field>
           <name>custom</name>
           <description>Custom configuration for use with customised velocity 
templates.</description>
           <version>1.0.0</version>
           <type>DOM</type>
+          <identifier>true</identifier>
         </field>
       </fields>
     </class>
@@ -80,24 +87,28 @@
           <version>1.0.0</version>
           <description>Description of the banner.</description>
           <type>String</type>
+          <identifier>true</identifier>
         </field>
         <field>
           <name>src</name>
           <version>1.0.0</version>
           <description>The href of an image for the banner</description>
           <type>String</type>
+          <identifier>true</identifier>
         </field>
         <field>
           <name>alt</name>
           <version>1.0.0</version>
           <description>Alt description for the banner image.</description>
           <type>String</type>
+          <identifier>true</identifier>
         </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>
+          <identifier>true</identifier>
         </field>
       </fields>
     </class>
@@ -112,12 +123,14 @@
             bottom).</description>
           <version>1.0.0</version>
           <type>String</type>
+          <identifier>true</identifier>
         </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>
+          <identifier>true</identifier>
         </field>
       </fields>
     </class>
@@ -132,6 +145,7 @@
           <description>Logo image href.</description>
           <version>1.0.0</version>
           <type>String</type>
+          <identifier>true</identifier>
         </field>
       </fields>
     </class>
@@ -145,6 +159,7 @@
           <description>Additional content to include in the HEAD block of the 
generated pages.</description>
           <version>1.0.0</version>
           <type>DOM</type>
+          <identifier>true</identifier>
         </field>
         <field xml.associationTagName="item">
           <name>links</name>
@@ -154,6 +169,7 @@
             <type>LinkItem</type>
             <multiplicity>*</multiplicity>
           </association>
+          <identifier>true</identifier>
         </field>
         <field xml.associationTagName="item">
           <name>breadcrumbs</name>
@@ -162,7 +178,9 @@
           <association>
             <type>LinkItem</type>
             <multiplicity>*</multiplicity>
+            <identifier>true</identifier>
           </association>
+          <identifier>true</identifier>
         </field>
         <field xml.listStyle="flat">
           <name>menus</name>
@@ -172,6 +190,7 @@
             <type>Menu</type>
             <multiplicity>*</multiplicity>
           </association>
+          <identifier>true</identifier>
         </field>
       </fields>
     </class>
@@ -185,12 +204,14 @@
           <description>The name to use for the link.</description>
           <version>1.0.0</version>
           <type>String</type>
+          <identifier>true</identifier>
         </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>
+          <identifier>true</identifier>
         </field>
       </fields>
     </class>
@@ -204,12 +225,14 @@
           <description>The name to use for the menu.</description>
           <version>1.0.0</version>
           <type>String</type>
+          <identifier>true</identifier>
         </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>
+          <identifier>true</identifier>
         </field>
         <field xml.listStyle="flat">
           <name>items</name>
@@ -219,6 +242,7 @@
             <type>MenuItem</type>
             <multiplicity>*</multiplicity>
           </association>
+          <identifier>true</identifier>
         </field>
       </fields>
     </class>
@@ -233,6 +257,7 @@
           <description>Whether the item is collapsed by default when it has 
children elements.</description>
           <version>1.0.0</version>
           <type>boolean</type>
+          <identifier>true</identifier>
         </field>
         <field xml.listStyle="flat">
           <name>items</name>
@@ -242,6 +267,7 @@
             <type>MenuItem</type>
             <multiplicity>*</multiplicity>
           </association>
+          <identifier>true</identifier>
         </field>
       </fields>
     </class>

Added: 
maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java?rev=358699&view=auto
==============================================================================
--- 
maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java
 (added)
+++ 
maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java
 Thu Dec 22 20:40:23 2005
@@ -0,0 +1,291 @@
+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 junit.framework.TestCase;
+import org.apache.maven.doxia.site.decoration.DecorationModel;
+import org.apache.maven.doxia.site.decoration.LinkItem;
+import org.apache.maven.doxia.site.decoration.Logo;
+import org.apache.maven.doxia.site.decoration.Menu;
+import org.apache.maven.doxia.site.decoration.io.xpp3.DecorationXpp3Reader;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+/**
+ * Test the inheritance assembler.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ */
+public class DecorationModelInheritenceAssemblerTest
+    extends TestCase
+{
+    private DecorationModelInheritanceAssembler assembler = new 
DefaultDecorationModelInheritanceAssembler();
+
+    public void testInheritence()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel childModel = readModel( "child.xml" );
+        DecorationModel parentModel = readModel( "parent.xml" );
+
+        assembler.assembleModelInheritance( childModel, parentModel, 
"http://maven.apache.org/doxia";,
+                                            "http://maven.apache.org"; );
+
+        DecorationModel mergedModel = readModel( "merged.xml" );
+        assertEquals( "Check result", mergedModel, childModel );
+    }
+
+    public void testPathsResolvedWhenEmpty()
+        throws IOException, XmlPullParserException
+    {
+        // Test an empty model avoids NPEs
+        DecorationModel childModel = readModel( "empty.xml" );
+        DecorationModel parentModel = readModel( "empty.xml" );
+        assembler.assembleModelInheritance( childModel, parentModel, 
"http://maven.apache.org/doxia";,
+                                            "http://maven.apache.org"; );
+
+        DecorationModel mergedModel = readModel( "empty.xml" );
+        assertEquals( "Check result", mergedModel, childModel );
+    }
+
+    public void testPathsNotResolvedForExternalUrls()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel parentModel = readModel( "external-urls.xml" );
+        DecorationModel childModel = readModel( "empty.xml" );
+        assembler.assembleModelInheritance( childModel, parentModel, 
"http://maven.apache.org/doxia";,
+                                            "http://maven.apache.org"; );
+
+        assertEquals( "check left banner href", "http://jakarta.apache.org/";, 
childModel.getBannerLeft().getHref() );
+        assertEquals( "check left banner image", 
"http://jakarta.apache.org/images/jakarta-logo.gif";,
+                      childModel.getBannerLeft().getSrc() );
+
+        assertEquals( "check right banner href", 
"http://jakarta.apache.org/commons/sandbox";,
+                      childModel.getBannerRight().getHref() );
+        assertEquals( "check right banner image", 
"http://jakarta.apache.org/commons/images/logo.png";,
+                      childModel.getBannerRight().getSrc() );
+
+        Logo poweredBy = (Logo) childModel.getPoweredBy().get( 0 );
+        assertEquals( "check powered by logo href", 
"http://tomcat.apache.org/";, poweredBy.getHref() );
+        assertEquals( "check powered by logo image", 
"http://tomcat.apache.org/logo.gif";, poweredBy.getImg() );
+
+        LinkItem breadcrumb = (LinkItem) 
childModel.getBody().getBreadcrumbs().get( 0 );
+        assertEquals( "check breadcrumb href", "http://www.apache.org/";, 
breadcrumb.getHref() );
+
+        LinkItem link = (LinkItem) childModel.getBody().getLinks().get( 0 );
+        assertEquals( "check link href", "http://www.bouncycastle.org";, 
link.getHref() );
+
+        Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
+        LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
+        assertEquals( "check menu item href", 
"http://www.apache.org/special/";, menuItem.getHref() );
+    }
+
+    public void testPathsResolvedForRelativeUrls()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel parentModel = readModel( "relative-urls.xml" );
+        DecorationModel childModel = readModel( "empty.xml" );
+        assembler.assembleModelInheritance( childModel, parentModel, 
"http://maven.apache.org/doxia/";,
+                                            "http://maven.apache.org"; );
+
+        assertEquals( "check left banner href", "../banner/left", 
childModel.getBannerLeft().getHref() );
+        assertEquals( "check left banner image", "../images/jakarta-logo.gif", 
childModel.getBannerLeft().getSrc() );
+
+        assertEquals( "check right banner href", "../banner/right/", 
childModel.getBannerRight().getHref() );
+        assertEquals( "check right banner image", 
"../commons/images/logo.png", childModel.getBannerRight().getSrc() );
+
+        Logo poweredBy = (Logo) childModel.getPoweredBy().get( 0 );
+        assertEquals( "check powered by logo href", "../tomcat", 
poweredBy.getHref() );
+        assertEquals( "check powered by logo image", "../tomcat/logo.gif", 
poweredBy.getImg() );
+
+        LinkItem breadcrumb = (LinkItem) 
childModel.getBody().getBreadcrumbs().get( 0 );
+        assertEquals( "check breadcrumb href", "../apache", 
breadcrumb.getHref() );
+
+        LinkItem link = (LinkItem) childModel.getBody().getLinks().get( 0 );
+        assertEquals( "check link href", "../bouncycastle/", link.getHref() );
+
+        Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
+        LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
+        assertEquals( "check menu item href", "../special/", 
menuItem.getHref() );
+    }
+
+    public void testPathsResolvedForRelativeUrlsDepthOfTwo()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel parentModel = readModel( "relative-urls.xml" );
+        DecorationModel childModel = readModel( "empty.xml" );
+        assembler.assembleModelInheritance( childModel, parentModel, 
"http://maven.apache.org/doxia/core";,
+                                            "http://maven.apache.org"; );
+
+        assertEquals( "check left banner href", "../../banner/left", 
childModel.getBannerLeft().getHref() );
+        assertEquals( "check left banner image", 
"../../images/jakarta-logo.gif", childModel.getBannerLeft().getSrc() );
+
+        assertEquals( "check right banner href", "../../banner/right/", 
childModel.getBannerRight().getHref() );
+        assertEquals( "check right banner image", 
"../../commons/images/logo.png",
+                      childModel.getBannerRight().getSrc() );
+
+        Logo poweredBy = (Logo) childModel.getPoweredBy().get( 0 );
+        assertEquals( "check powered by logo href", "../../tomcat", 
poweredBy.getHref() );
+        assertEquals( "check powered by logo image", "../../tomcat/logo.gif", 
poweredBy.getImg() );
+
+        LinkItem breadcrumb = (LinkItem) 
childModel.getBody().getBreadcrumbs().get( 0 );
+        assertEquals( "check breadcrumb href", "../../apache", 
breadcrumb.getHref() );
+
+        LinkItem link = (LinkItem) childModel.getBody().getLinks().get( 0 );
+        assertEquals( "check link href", "../../bouncycastle/", link.getHref() 
);
+
+        Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
+        LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
+        assertEquals( "check menu item href", "../../special/", 
menuItem.getHref() );
+    }
+
+    public void testPathsResolvedForReverseRelativeUrls()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel parentModel = readModel( "relative-urls.xml" );
+        DecorationModel childModel = readModel( "empty.xml" );
+        assembler.assembleModelInheritance( childModel, parentModel, 
"http://maven.apache.org/";,
+                                            "http://maven.apache.org/doxia/"; );
+
+        assertEquals( "check left banner href", "doxia/banner/left", 
childModel.getBannerLeft().getHref() );
+        assertEquals( "check left banner image", 
"doxia/images/jakarta-logo.gif", childModel.getBannerLeft().getSrc() );
+
+        assertEquals( "check right banner href", "doxia/banner/right/", 
childModel.getBannerRight().getHref() );
+        assertEquals( "check right banner image", 
"doxia/commons/images/logo.png",
+                      childModel.getBannerRight().getSrc() );
+
+        Logo poweredBy = (Logo) childModel.getPoweredBy().get( 0 );
+        assertEquals( "check powered by logo href", "doxia/tomcat", 
poweredBy.getHref() );
+        assertEquals( "check powered by logo image", "doxia/tomcat/logo.gif", 
poweredBy.getImg() );
+
+        LinkItem breadcrumb = (LinkItem) 
childModel.getBody().getBreadcrumbs().get( 0 );
+        assertEquals( "check breadcrumb href", "doxia/apache", 
breadcrumb.getHref() );
+
+        LinkItem link = (LinkItem) childModel.getBody().getLinks().get( 0 );
+        assertEquals( "check link href", "doxia/bouncycastle/", link.getHref() 
);
+
+        Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
+        LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
+        assertEquals( "check menu item href", "doxia/special/", 
menuItem.getHref() );
+    }
+
+    public void testPathsResolvedForReverseRelativeUrlsDepthOfTwo()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel parentModel = readModel( "relative-urls.xml" );
+        DecorationModel childModel = readModel( "empty.xml" );
+        assembler.assembleModelInheritance( childModel, parentModel, 
"http://maven.apache.org/";,
+                                            
"http://maven.apache.org/doxia/core/"; );
+
+        assertEquals( "check left banner href", "doxia/core/banner/left", 
childModel.getBannerLeft().getHref() );
+        assertEquals( "check left banner image", 
"doxia/core/images/jakarta-logo.gif",
+                      childModel.getBannerLeft().getSrc() );
+
+        assertEquals( "check right banner href", "doxia/core/banner/right/", 
childModel.getBannerRight().getHref() );
+        assertEquals( "check right banner image", 
"doxia/core/commons/images/logo.png",
+                      childModel.getBannerRight().getSrc() );
+
+        Logo poweredBy = (Logo) childModel.getPoweredBy().get( 0 );
+        assertEquals( "check powered by logo href", "doxia/core/tomcat", 
poweredBy.getHref() );
+        assertEquals( "check powered by logo image", 
"doxia/core/tomcat/logo.gif", poweredBy.getImg() );
+
+        LinkItem breadcrumb = (LinkItem) 
childModel.getBody().getBreadcrumbs().get( 0 );
+        assertEquals( "check breadcrumb href", "doxia/core/apache", 
breadcrumb.getHref() );
+
+        LinkItem link = (LinkItem) childModel.getBody().getLinks().get( 0 );
+        assertEquals( "check link href", "doxia/core/bouncycastle/", 
link.getHref() );
+
+        Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
+        LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
+        assertEquals( "check menu item href", "doxia/core/special/", 
menuItem.getHref() );
+    }
+
+    public void testPathsResolvedForUnrelatedRelativeUrls()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel parentModel = readModel( "relative-urls.xml" );
+        DecorationModel childModel = readModel( "empty.xml" );
+        assembler.assembleModelInheritance( childModel, parentModel, 
"http://maven.apache.org";,
+                                            "http://jakarta.apache.org"; );
+
+        assertEquals( "check left banner href", 
"http://jakarta.apache.org/banner/left";,
+                      childModel.getBannerLeft().getHref() );
+        assertEquals( "check left banner image", 
"http://jakarta.apache.org/images/jakarta-logo.gif";,
+                      childModel.getBannerLeft().getSrc() );
+
+        assertEquals( "check right banner href", 
"http://jakarta.apache.org/banner/right/";,
+                      childModel.getBannerRight().getHref() );
+        assertEquals( "check right banner image", 
"http://jakarta.apache.org/commons/images/logo.png";,
+                      childModel.getBannerRight().getSrc() );
+
+        Logo poweredBy = (Logo) childModel.getPoweredBy().get( 0 );
+        assertEquals( "check powered by logo href", 
"http://jakarta.apache.org/tomcat";, poweredBy.getHref() );
+        assertEquals( "check powered by logo image", 
"http://jakarta.apache.org/tomcat/logo.gif";, poweredBy.getImg() );
+
+        LinkItem breadcrumb = (LinkItem) 
childModel.getBody().getBreadcrumbs().get( 0 );
+        assertEquals( "check breadcrumb href", 
"http://jakarta.apache.org/apache";, breadcrumb.getHref() );
+
+        LinkItem link = (LinkItem) childModel.getBody().getLinks().get( 0 );
+        assertEquals( "check link href", 
"http://jakarta.apache.org/bouncycastle/";, link.getHref() );
+
+        Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
+        LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
+        assertEquals( "check menu item href", 
"http://jakarta.apache.org/special/";, menuItem.getHref() );
+    }
+
+    public void testNullParent()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel childModel = readModel( "empty.xml" );
+        assembler.assembleModelInheritance( childModel, null, 
"http://maven.apache.org/doxia";,
+                                            "http://maven.apache.org"; );
+
+        DecorationModel mergedModel = readModel( "empty.xml" );
+        assertEquals( "Check result", mergedModel, childModel );
+    }
+
+    public void testFullyPopulatedChild()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel childModel = readModel( "fully-populated-child.xml" );
+        DecorationModel parentModel = readModel( "fully-populated-child.xml" );
+        assembler.assembleModelInheritance( childModel, parentModel, 
"http://maven.apache.org/doxia";,
+                                            "http://maven.apache.org"; );
+
+        DecorationModel mergedModel = readModel( "fully-populated-child.xml" );
+        assertEquals( "Check result", mergedModel, childModel );
+    }
+
+    public void testFullyPopulatedParentAndEmptyChild()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel childModel = readModel( "empty.xml" );
+        DecorationModel parentModel = readModel( "fully-populated-child.xml" );
+        assembler.assembleModelInheritance( childModel, parentModel, 
"http://maven.apache.org/doxia";,
+                                            "http://maven.apache.org"; );
+
+        DecorationModel mergedModel = readModel( "fully-populated-merged.xml" 
);
+        assertEquals( "Check result", mergedModel, childModel );
+    }
+
+    private DecorationModel readModel( String name )
+        throws IOException, XmlPullParserException
+    {
+        return new DecorationXpp3Reader().read( new InputStreamReader( 
getClass().getResourceAsStream( "/" + name ) ) );
+    }
+}

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

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

Added: maven/doxia/trunk/doxia-decoration-model/src/test/resources/child.xml
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/test/resources/child.xml?rev=358699&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/test/resources/child.xml 
(added)
+++ maven/doxia/trunk/doxia-decoration-model/src/test/resources/child.xml Thu 
Dec 22 20:40:23 2005
@@ -0,0 +1,29 @@
+<!--
+  ~ 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.
+  ~
+  -->
+
+<project name="Child">
+  <body>
+    <links>
+      <item name="Bouncy Castle" href="http://www.bouncycastle.org"/>
+    </links>
+
+    <menu name="Subproject menu">
+      <item name="Introduction" href="/index.html"/>
+      <item name="Usage" href="/usage.html"/>
+    </menu>
+
+  </body>
+</project>
\ No newline at end of file

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/child.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/child.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/doxia/trunk/doxia-decoration-model/src/test/resources/empty.xml
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/test/resources/empty.xml?rev=358699&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/test/resources/empty.xml 
(added)
+++ maven/doxia/trunk/doxia-decoration-model/src/test/resources/empty.xml Thu 
Dec 22 20:40:23 2005
@@ -0,0 +1,18 @@
+<!--
+  ~ 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.
+  ~
+  -->
+
+<project name="Empty">
+</project>
\ No newline at end of file

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/empty.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/empty.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/external-urls.xml
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/test/resources/external-urls.xml?rev=358699&view=auto
==============================================================================
--- 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/external-urls.xml 
(added)
+++ 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/external-urls.xml 
Thu Dec 22 20:40:23 2005
@@ -0,0 +1,46 @@
+<!--
+  ~ 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.
+  ~
+  -->
+
+<project name="Parent Name">
+  <bannerLeft>
+    <name>The Jakarta Project</name>
+    <src>http://jakarta.apache.org/images/jakarta-logo.gif</src>
+    <href>http://jakarta.apache.org/</href>
+  </bannerLeft>
+  <bannerRight>
+    <name>Jakarta Commons Sandbox</name>
+    <src>http://jakarta.apache.org/commons/images/logo.png</src>
+    <href>http://jakarta.apache.org/commons/sandbox</href>
+  </bannerRight>
+
+  <poweredBy>
+    <logo name="Tomcat" href="http://tomcat.apache.org/"; 
img="http://tomcat.apache.org/logo.gif"/>
+  </poweredBy>
+
+  <body>
+    <breadcrumbs>
+      <item name="Apache" href="http://www.apache.org/"/>
+    </breadcrumbs>
+
+    <links>
+      <item name="Bouncy Castle" href="http://www.bouncycastle.org"/>
+    </links>
+
+    <menu name="Special" inherit="top">
+      <item name="Special" href="http://www.apache.org/special/"/>
+    </menu>
+  </body>
+</project>

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/external-urls.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/external-urls.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-child.xml
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-child.xml?rev=358699&view=auto
==============================================================================
--- 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-child.xml
 (added)
+++ 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-child.xml
 Thu Dec 22 20:40:23 2005
@@ -0,0 +1,53 @@
+<!--
+  ~ 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.
+  ~
+  -->
+
+<project name="Child">
+  <bannerLeft>
+    <name>name</name>
+    <src>src</src>
+    <href>href</href>
+  </bannerLeft>
+  <bannerRight>
+    <name>name</name>
+    <src>src</src>
+    <href>href</href>
+  </bannerRight>
+
+  <publishDate format="fmt" position="top"/>
+
+  <poweredBy>
+    <logo name="Maven" href="http://maven.apache.org"; 
img="http://maven.apache.org/images/maven-feather.png"/>
+  </poweredBy>
+
+  <body>
+    <links>
+      <item name="Bouncy Castle" href="http://www.bouncycastle.org"/>
+    </links>
+
+    <head>
+      <meta name="blah" value="blah"/>
+    </head>
+
+    <menu name="Subproject menu">
+      <item name="Introduction" href="/index.html"/>
+      <item name="Usage" href="/usage.html"/>
+    </menu>
+  </body>
+
+  <custom>
+    <junk>junk</junk>
+  </custom>
+</project>
\ No newline at end of file

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-child.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-child.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-merged.xml
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-merged.xml?rev=358699&view=auto
==============================================================================
--- 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-merged.xml
 (added)
+++ 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-merged.xml
 Thu Dec 22 20:40:23 2005
@@ -0,0 +1,49 @@
+<!--
+  ~ 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.
+  ~
+  -->
+
+<project name="Empty">
+  <bannerLeft>
+    <name>name</name>
+    <src>../src</src>
+    <href>../href</href>
+  </bannerLeft>
+  <bannerRight>
+    <name>name</name>
+    <src>../src</src>
+    <href>../href</href>
+  </bannerRight>
+
+  <publishDate format="fmt" position="top"/>
+
+  <poweredBy>
+    <logo name="Maven" href="http://maven.apache.org"; 
img="http://maven.apache.org/images/maven-feather.png"/>
+  </poweredBy>
+
+  <body>
+    <links>
+      <item name="Bouncy Castle" href="http://www.bouncycastle.org"/>
+    </links>
+
+    <head>
+      <meta name="blah" value="blah"/>
+    </head>
+
+  </body>
+
+  <custom>
+    <junk>junk</junk>
+  </custom>
+</project>
\ No newline at end of file

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-merged.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-merged.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/doxia/trunk/doxia-decoration-model/src/test/resources/merged.xml
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/test/resources/merged.xml?rev=358699&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/test/resources/merged.xml 
(added)
+++ maven/doxia/trunk/doxia-decoration-model/src/test/resources/merged.xml Thu 
Dec 22 20:40:23 2005
@@ -0,0 +1,56 @@
+<!--
+  ~ 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.
+  ~
+  -->
+
+<project name="Child">
+  <bannerLeft>
+    <name>The Jakarta Project</name>
+    <src>http://jakarta.apache.org/images/jakarta-logo.gif</src>
+    <href>http://jakarta.apache.org/</href>
+  </bannerLeft>
+  <bannerRight>
+    <name>Jakarta Commons Sandbox</name>
+    <src>http://jakarta.apache.org/commons/images/logo.png</src>
+    <href>http://jakarta.apache.org/commons/sandbox</href>
+  </bannerRight>
+  <poweredBy>
+    <logo name="Maven" href="http://maven.apache.org"; 
img="../images/maven-feather.png"/>
+  </poweredBy>
+  <body>
+    <breadcrumbs>
+      <item name="Apache" href="http://www.apache.org/"/>
+      <item name="Jakarta Commons" href="http://jakarta.apache.org/commons/"/>
+      <item name="Sandbox" href="http://jakarta.apache.org/commons/sandbox/"/>
+    </breadcrumbs>
+    <links>
+      <item name="Bouncy Castle" href="http://www.bouncycastle.org"/>
+    </links>
+
+    <menu name="Top Menu" inherit="top">
+      <item name="Introduction" href="/index.html"/>
+      <item name="Usage" href="/usage.html"/>
+    </menu>
+    <menu name="empty menu" inherit="top">
+
+    </menu>
+    <menu name="Subproject menu">
+      <item name="Introduction" href="/index.html"/>
+      <item name="Usage" href="/usage.html"/>
+    </menu>
+    <menu name="Other Links" inherit="bottom">
+      <item name="Copyright" href="/copyright.html"/>
+    </menu>
+  </body>
+</project>

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/merged.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/merged.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/doxia/trunk/doxia-decoration-model/src/test/resources/parent.xml
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/test/resources/parent.xml?rev=358699&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/test/resources/parent.xml 
(added)
+++ maven/doxia/trunk/doxia-decoration-model/src/test/resources/parent.xml Thu 
Dec 22 20:40:23 2005
@@ -0,0 +1,52 @@
+<!--
+  ~ 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.
+  ~
+  -->
+
+<project name="Parent Name">
+  <bannerLeft>
+    <name>The Jakarta Project</name>
+    <src>http://jakarta.apache.org/images/jakarta-logo.gif</src>
+    <href>http://jakarta.apache.org/</href>
+  </bannerLeft>
+  <bannerRight>
+    <name>Jakarta Commons Sandbox</name>
+    <src>http://jakarta.apache.org/commons/images/logo.png</src>
+    <href>http://jakarta.apache.org/commons/sandbox</href>
+  </bannerRight>
+  <poweredBy>
+    <logo name="Maven" href="http://maven.apache.org"; 
img="images/maven-feather.png"/>
+  </poweredBy>
+  <body>
+    <breadcrumbs>
+      <item name="Apache" href="http://www.apache.org/"/>
+      <item name="Jakarta Commons" href="http://jakarta.apache.org/commons/"/>
+      <item name="Sandbox" href="http://jakarta.apache.org/commons/sandbox/"/>
+    </breadcrumbs>
+
+    <menu name="Top Menu" inherit="top">
+      <item name="Introduction" href="/index.html"/>
+      <item name="Usage" href="/usage.html"/>
+    </menu>
+    <menu name="empty menu" inherit="top">
+
+    </menu>
+    <menu name="Special" inherit="off">
+      <item name="Special" href="/special.html"/>
+    </menu>
+    <menu name="Other Links" inherit="bottom">
+      <item name="Copyright" href="/copyright.html"/>
+    </menu>
+  </body>
+</project>

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/parent.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/parent.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/relative-urls.xml
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/test/resources/relative-urls.xml?rev=358699&view=auto
==============================================================================
--- 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/relative-urls.xml 
(added)
+++ 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/relative-urls.xml 
Thu Dec 22 20:40:23 2005
@@ -0,0 +1,46 @@
+<!--
+  ~ 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.
+  ~
+  -->
+
+<project name="Parent Name">
+  <bannerLeft>
+    <name>The Jakarta Project</name>
+    <src>/images/jakarta-logo.gif</src>
+    <href>banner/left</href>
+  </bannerLeft>
+  <bannerRight>
+    <name>Jakarta Commons Sandbox</name>
+    <src>commons/images/logo.png</src>
+    <href>/banner/right/</href>
+  </bannerRight>
+
+  <poweredBy>
+    <logo name="Tomcat" href="tomcat" img="tomcat/logo.gif"/>
+  </poweredBy>
+
+  <body>
+    <breadcrumbs>
+      <item name="Apache" href="/apache"/>
+    </breadcrumbs>
+
+    <links>
+      <item name="Bouncy Castle" href="/bouncycastle/"/>
+    </links>
+
+    <menu name="Special" inherit="top">
+      <item name="Special" href="/special/"/>
+    </menu>
+  </body>
+</project>

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/relative-urls.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/trunk/doxia-decoration-model/src/test/resources/relative-urls.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision


Reply via email to