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/23 05:50:27 UTC

svn commit: r358704 - in /maven/doxia/trunk/doxia-decoration-model/src: main/java/org/apache/maven/doxia/site/decoration/inheritance/ test/java/org/apache/maven/doxia/site/decoration/inheritance/ test/resources/

Author: brett
Date: Thu Dec 22 20:50:17 2005
New Revision: 358704

URL: http://svn.apache.org/viewcvs?rev=358704&view=rev
Log:
PR: MSITE-44
strip unnecessary base url from some links

Added:
    maven/doxia/trunk/doxia-decoration-model/src/test/resources/subsite-urls.xml   (with props)
Modified:
    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/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java
    maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-merged.xml

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=358704&r1=358703&r2=358704&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:50:17 2005
@@ -52,14 +52,14 @@
             {
                 child.setBannerLeft( parent.getBannerLeft() );
 
-                resolveBannerPaths( child.getBannerLeft(), prefix );
+                resolveBannerPaths( child.getBannerLeft(), prefix, parentBaseUrl );
             }
 
             if ( child.getBannerRight() == null )
             {
                 child.setBannerRight( parent.getBannerRight() );
 
-                resolveBannerPaths( child.getBannerRight(), prefix );
+                resolveBannerPaths( child.getBannerRight(), prefix, parentBaseUrl );
             }
 
             if ( child.getPublishDate() == null )
@@ -67,26 +67,32 @@
                 child.setPublishDate( parent.getPublishDate() );
             }
 
-            child.setPoweredBy( mergePoweredByLists( child.getPoweredBy(), parent.getPoweredBy(), prefix ) );
+            child.setPoweredBy(
+                mergePoweredByLists( child.getPoweredBy(), parent.getPoweredBy(), prefix, parentBaseUrl ) );
 
-            assembleBodyInheritance( child, parent, prefix );
+            assembleBodyInheritance( child, parent, prefix, parentBaseUrl );
 
             assembleCustomInheritance( child, parent );
         }
     }
 
-    private void resolveBannerPaths( Banner banner, String prefix )
+    private void resolveBannerPaths( Banner banner, String prefix, String baseUrl )
     {
         if ( banner != null )
         {
-            banner.setHref( resolvePath( banner.getHref(), prefix ) );
-            banner.setSrc( resolvePath( banner.getSrc(), prefix ) );
+            banner.setHref( resolvePath( banner.getHref(), prefix, baseUrl ) );
+            banner.setSrc( resolvePath( banner.getSrc(), prefix, baseUrl ) );
         }
     }
 
-    private String resolvePath( String href, String prefix )
+    private String resolvePath( String href, String prefix, String baseUrl )
     {
         String relativePath = href;
+        if ( relativePath.startsWith( baseUrl ) )
+        {
+            relativePath = relativePath.substring( baseUrl.length() );
+        }
+
         if ( relativePath.startsWith( "/" ) )
         {
             relativePath = relativePath.substring( 1 );
@@ -106,7 +112,7 @@
         }
     }
 
-    private void assembleBodyInheritance( DecorationModel child, DecorationModel parent, String prefix )
+    private void assembleBodyInheritance( DecorationModel child, DecorationModel parent, String prefix, String baseUrl )
     {
         Body cBody = child.getBody();
         Body pBody = parent.getBody();
@@ -128,14 +134,15 @@
                 cBody.setHead( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) cBody.getHead(), (Xpp3Dom) pBody.getHead() ) );
             }
 
-            cBody.setLinks( mergeLinkItemLists( cBody.getLinks(), pBody.getLinks(), prefix ) );
-            cBody.setBreadcrumbs( mergeLinkItemLists( cBody.getBreadcrumbs(), pBody.getBreadcrumbs(), prefix ) );
+            cBody.setLinks( mergeLinkItemLists( cBody.getLinks(), pBody.getLinks(), prefix, baseUrl ) );
+            cBody.setBreadcrumbs(
+                mergeLinkItemLists( cBody.getBreadcrumbs(), pBody.getBreadcrumbs(), prefix, baseUrl ) );
 
-            cBody.setMenus( mergeMenus( cBody.getMenus(), pBody.getMenus(), prefix ) );
+            cBody.setMenus( mergeMenus( cBody.getMenus(), pBody.getMenus(), prefix, baseUrl ) );
         }
     }
 
-    private List mergeMenus( List dominant, List recessive, String prefix )
+    private List mergeMenus( List dominant, List recessive, String prefix, String baseUrl )
     {
         List menus = new ArrayList();
 
@@ -156,41 +163,41 @@
                 menus.add( topCounter, menu );
                 topCounter++;
 
-                resolveMenuPaths( menu.getItems(), prefix );
+                resolveMenuPaths( menu.getItems(), prefix, baseUrl );
             }
             else if ( "bottom".equals( menu.getInherit() ) )
             {
                 menus.add( menu );
 
-                resolveMenuPaths( menu.getItems(), prefix );
+                resolveMenuPaths( menu.getItems(), prefix, baseUrl );
             }
         }
 
         return menus;
     }
 
-    private void resolveMenuPaths( List items, String prefix )
+    private void resolveMenuPaths( List items, String prefix, String baseUrl )
     {
         for ( Iterator i = items.iterator(); i.hasNext(); )
         {
             MenuItem item = (MenuItem) i.next();
-            resolveLinkItemPaths( item, prefix );
-            resolveMenuPaths( item.getItems(), prefix );
+            resolveLinkItemPaths( item, prefix, baseUrl );
+            resolveMenuPaths( item.getItems(), prefix, baseUrl );
         }
     }
 
-    private void resolveLinkItemPaths( LinkItem item, String prefix )
+    private void resolveLinkItemPaths( LinkItem item, String prefix, String baseUrl )
     {
-        item.setHref( resolvePath( item.getHref(), prefix ) );
+        item.setHref( resolvePath( item.getHref(), prefix, baseUrl ) );
     }
 
-    private void resolveLogoPaths( Logo logo, String prefix )
+    private void resolveLogoPaths( Logo logo, String prefix, String baseUrl )
     {
-        logo.setImg( resolvePath( logo.getImg(), prefix ) );
-        resolveLinkItemPaths( logo, prefix );
+        logo.setImg( resolvePath( logo.getImg(), prefix, baseUrl ) );
+        resolveLinkItemPaths( logo, prefix, baseUrl );
     }
 
-    private List mergeLinkItemLists( List dominant, List recessive, String prefix )
+    private List mergeLinkItemLists( List dominant, List recessive, String prefix, String baseUrl )
     {
         List items = new ArrayList();
 
@@ -209,14 +216,14 @@
             {
                 items.add( item );
 
-                resolveLinkItemPaths( item, prefix );
+                resolveLinkItemPaths( item, prefix, baseUrl );
             }
         }
 
         return items;
     }
 
-    private List mergePoweredByLists( List dominant, List recessive, String prefix )
+    private List mergePoweredByLists( List dominant, List recessive, String prefix, String baseUrl )
     {
         List logos = new ArrayList();
 
@@ -235,7 +242,7 @@
             {
                 logos.add( logo );
 
-                resolveLogoPaths( logo, prefix );
+                resolveLogoPaths( logo, prefix, baseUrl );
             }
         }
 

Modified: 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=358704&r1=358703&r2=358704&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java (original)
+++ maven/doxia/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java Thu Dec 22 20:50:17 2005
@@ -124,6 +124,35 @@
         assertEquals( "check menu item href", "../special/", menuItem.getHref() );
     }
 
+    public void testPathsResolvedForSubsiteUrls()
+        throws IOException, XmlPullParserException
+    {
+        DecorationModel parentModel = readModel( "subsite-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
     {

Modified: 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=358704&r1=358703&r2=358704&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-merged.xml (original)
+++ maven/doxia/trunk/doxia-decoration-model/src/test/resources/fully-populated-merged.xml Thu Dec 22 20:50:17 2005
@@ -29,7 +29,7 @@
   <publishDate format="fmt" position="top"/>
 
   <poweredBy>
-    <logo name="Maven" href="http://maven.apache.org" img="http://maven.apache.org/images/maven-feather.png"/>
+    <logo name="Maven" href="http://maven.apache.org" img="../images/maven-feather.png"/>
   </poweredBy>
 
   <body>

Added: maven/doxia/trunk/doxia-decoration-model/src/test/resources/subsite-urls.xml
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-decoration-model/src/test/resources/subsite-urls.xml?rev=358704&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-decoration-model/src/test/resources/subsite-urls.xml (added)
+++ maven/doxia/trunk/doxia-decoration-model/src/test/resources/subsite-urls.xml Thu Dec 22 20:50:17 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://maven.apache.org/images/jakarta-logo.gif</src>
+    <href>http://maven.apache.org/banner/left</href>
+  </bannerLeft>
+  <bannerRight>
+    <name>Jakarta Commons Sandbox</name>
+    <src>http://maven.apache.org/commons/images/logo.png</src>
+    <href>http://maven.apache.org/banner/right/</href>
+  </bannerRight>
+
+  <poweredBy>
+    <logo name="Tomcat" href="tomcat" img="http://maven.apache.org/tomcat/logo.gif"/>
+  </poweredBy>
+
+  <body>
+    <breadcrumbs>
+      <item name="Apache" href="http://maven.apache.org/apache"/>
+    </breadcrumbs>
+
+    <links>
+      <item name="Bouncy Castle" href="http://maven.apache.org/bouncycastle/"/>
+    </links>
+
+    <menu name="Special" inherit="top">
+      <item name="Special" href="http://maven.apache.org/special/"/>
+    </menu>
+  </body>
+</project>

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

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