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