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 lt...@apache.org on 2011/01/12 12:34:03 UTC
svn commit: r1058083 - in
/maven/doxia/doxia-sitetools/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: ltheussl
Date: Wed Jan 12 11:34:02 2011
New Revision: 1058083
URL: http://svn.apache.org/viewvc?rev=1058083&view=rev
Log:
[DOXIASITETOOLS-46, DOXIASITETOOLS-47] separate link resolution and inheritance assembly, fix path resolution issues with scp urls. Deprecate PathDescriptor and PathUtils which do not work correctly.
Added:
maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptor.java
maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptorTest.java
maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/resources/fully-populated-unresolved.xml
Modified:
maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathDescriptor.java
maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathUtils.java
maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java
Modified: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java?rev=1058083&r1=1058082&r2=1058083&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java Wed Jan 12 11:34:02 2011
@@ -19,7 +19,8 @@ package org.apache.maven.doxia.site.deco
* under the License.
*/
-import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -60,13 +61,13 @@ public class DefaultDecorationModelInher
if ( child.getBannerLeft() == null && parent.getBannerLeft() != null )
{
child.setBannerLeft( (Banner) parent.getBannerLeft().clone());
- resolveBannerPaths( child.getBannerLeft(), urlContainer );
+ rebaseBannerPaths( child.getBannerLeft(), urlContainer );
}
if ( child.getBannerRight() == null && parent.getBannerRight() != null)
{
child.setBannerRight( (Banner) parent.getBannerRight().clone());
- resolveBannerPaths( child.getBannerRight(), urlContainer );
+ rebaseBannerPaths( child.getBannerRight(), urlContainer );
}
if ( child.getPublishDate() == null && parent.getPublishDate() != null )
@@ -100,23 +101,21 @@ public class DefaultDecorationModelInher
/** {@inheritDoc} */
public void resolvePaths( final DecorationModel decoration, final String baseUrl )
{
- URLContainer urlContainer = new URLContainer( null, baseUrl );
-
if ( decoration.getBannerLeft() != null )
{
- resolveBannerPaths( decoration.getBannerLeft(), urlContainer );
+ relativizeBannerPaths( decoration.getBannerLeft(), baseUrl );
}
if ( decoration.getBannerRight() != null )
{
- resolveBannerPaths( decoration.getBannerRight(), urlContainer );
+ relativizeBannerPaths( decoration.getBannerRight(), baseUrl );
}
for ( Iterator i = decoration.getPoweredBy().iterator(); i.hasNext(); )
{
Logo logo = (Logo) i.next();
- resolveLogoPaths( logo, urlContainer );
+ relativizeLogoPaths( logo, baseUrl );
}
if ( decoration.getBody() != null )
@@ -125,21 +124,21 @@ public class DefaultDecorationModelInher
{
LinkItem linkItem = (LinkItem) i.next();
- resolveLinkItemPaths( linkItem, urlContainer );
+ relativizeLinkItemPaths( linkItem, baseUrl );
}
for ( Iterator i = decoration.getBody().getBreadcrumbs().iterator(); i.hasNext(); )
{
LinkItem linkItem = (LinkItem) i.next();
- resolveLinkItemPaths( linkItem, urlContainer );
+ relativizeLinkItemPaths( linkItem, baseUrl );
}
for ( Iterator i = decoration.getBody().getMenus().iterator(); i.hasNext(); )
{
Menu menu = (Menu) i.next();
- resolveMenuPaths( menu.getItems(), urlContainer );
+ relativizeMenuPaths( menu.getItems(), baseUrl );
}
}
}
@@ -149,23 +148,36 @@ public class DefaultDecorationModelInher
* to the oldBaseUrl, these are changed to the newBannerUrl.
*
* @param banner
- * @param urlContainer
+ * @param baseUrl
*/
- private void resolveBannerPaths( final Banner banner, final URLContainer urlContainer )
+ private void relativizeBannerPaths( final Banner banner, final String baseUrl )
{
if ( banner != null )
{
if ( StringUtils.isNotEmpty( banner.getHref() ) )
{
- banner.setHref( convertPath( banner.getHref(), urlContainer ) );
+ banner.setHref( relativizeLink( banner.getHref(), baseUrl ) );
}
if ( StringUtils.isNotEmpty( banner.getSrc() ) )
{
- banner.setSrc( convertPath( banner.getSrc(), urlContainer ) );
+ banner.setSrc( relativizeLink( banner.getSrc(), baseUrl ) );
}
}
}
+ private void rebaseBannerPaths( final Banner banner, final URLContainer urlContainer )
+ {
+ if ( banner.getHref() != null ) // it may be empty
+ {
+ banner.setHref( rebaseLink( banner.getHref(), urlContainer ) );
+ }
+
+ if ( banner.getSrc() != null )
+ {
+ banner.setSrc( rebaseLink( banner.getSrc(), urlContainer ) );
+ }
+ }
+
private void assembleCustomInheritance( final DecorationModel child, final DecorationModel parent )
{
if ( child.getCustom() == null )
@@ -212,7 +224,7 @@ public class DefaultDecorationModelInher
{
LinkItem breadcrumb = new LinkItem();
breadcrumb.setName( name );
- breadcrumb.setHref( convertPath( urlContainer.getNewPath(), urlContainer ) );
+ breadcrumb.setHref( "" );
cBody.getBreadcrumbs().add( breadcrumb );
}
cBody.setBreadcrumbs( mergeLinkItemLists( cBody.getBreadcrumbs(), pBody.getBreadcrumbs(), urlContainer ) );
@@ -242,34 +254,44 @@ public class DefaultDecorationModelInher
menus.add( topCounter, menu );
topCounter++;
- resolveMenuPaths( menu.getItems(), urlContainer );
+ rebaseMenuPaths( menu.getItems(), urlContainer );
}
else if ( "bottom".equals( menu.getInherit() ) )
{
menus.add( menu );
- resolveMenuPaths( menu.getItems(), urlContainer );
+ rebaseMenuPaths( menu.getItems(), urlContainer );
}
}
return menus;
}
- private void resolveMenuPaths( final List items, final URLContainer urlContainer )
+ private void relativizeMenuPaths( final List items, final String baseUrl )
{
for ( Iterator i = items.iterator(); i.hasNext(); )
{
MenuItem item = (MenuItem) i.next();
- resolveLinkItemPaths( item, urlContainer );
- resolveMenuPaths( item.getItems(), urlContainer );
+ relativizeLinkItemPaths( item, baseUrl );
+ relativizeMenuPaths( item.getItems(), baseUrl );
}
}
- private void resolveLinkItemPaths( final LinkItem item, final URLContainer urlContainer )
+ private void rebaseMenuPaths( final List items, final URLContainer urlContainer )
+ {
+ for ( Iterator i = items.iterator(); i.hasNext(); )
+ {
+ MenuItem item = (MenuItem) i.next();
+ rebaseLinkItemPaths( item, urlContainer );
+ rebaseMenuPaths( item.getItems(), urlContainer );
+ }
+ }
+
+ private void relativizeLinkItemPaths( final LinkItem item, final String baseUrl )
{
if ( StringUtils.isNotEmpty( item.getHref() ) )
{
- String href = convertPath( item.getHref(), urlContainer );
+ String href = relativizeLink( item.getHref(), baseUrl );
if ( StringUtils.isNotEmpty( href ) )
{
item.setHref( href );
@@ -277,14 +299,25 @@ public class DefaultDecorationModelInher
}
else
{
- item.setHref( convertPath( "", urlContainer ) );
+ item.setHref( relativizeLink( "", baseUrl ) );
}
}
- private void resolveLogoPaths( final Logo logo, final URLContainer urlContainer )
+ private void rebaseLinkItemPaths( final LinkItem item, final URLContainer urlContainer )
+ {
+ item.setHref( rebaseLink( item.getHref(), urlContainer ) );
+ }
+
+ private void relativizeLogoPaths( final Logo logo, final String baseUrl )
+ {
+ logo.setImg( relativizeLink( logo.getImg(), baseUrl ) );
+ relativizeLinkItemPaths( logo, baseUrl );
+ }
+
+ private void rebaseLogoPaths( final Logo logo, final URLContainer urlContainer )
{
- logo.setImg( convertPath( logo.getImg(), urlContainer ) );
- resolveLinkItemPaths( logo, urlContainer );
+ logo.setImg( rebaseLink( logo.getImg(), urlContainer ) );
+ rebaseLinkItemPaths( logo, urlContainer );
}
private List mergeLinkItemLists( final List childList, final List parentList, final URLContainer urlContainer )
@@ -295,7 +328,7 @@ public class DefaultDecorationModelInher
{
LinkItem item = (LinkItem) ( (LinkItem) it.next() ).clone();
- resolveLinkItemPaths( item, urlContainer );
+ rebaseLinkItemPaths( item, urlContainer );
if ( !items.contains( item ) )
{
@@ -329,7 +362,7 @@ public class DefaultDecorationModelInher
logos.add( logo );
}
- resolveLogoPaths( logo, urlContainer );
+ rebaseLogoPaths( logo, urlContainer );
}
for ( Iterator it = childList.iterator(); it.hasNext(); )
@@ -345,20 +378,48 @@ public class DefaultDecorationModelInher
return logos;
}
- private String convertPath( final String relativePath, final URLContainer urlContainer )
+ // rebase only affects relative links, a relative link wrt an old base gets translated,
+ // so it points to the same location as viewed from a new base
+ private String rebaseLink( final String link, final URLContainer urlContainer )
{
+ if ( link == null || urlContainer.getOldPath() == null )
+ {
+ return link;
+ }
+
try
{
- PathDescriptor oldPathDescriptor = new PathDescriptor( urlContainer.getOldPath(), relativePath );
- PathDescriptor newPathDescriptor = new PathDescriptor( urlContainer.getNewPath(), "" );
+ final URIPathDescriptor oldPath = new URIPathDescriptor( urlContainer.getOldPath(), link );
+
+ return oldPath.rebaseLink( urlContainer.getNewPath() ).toString();
+ }
+ catch ( URISyntaxException ex )
+ {
+ throw new RuntimeException( "Bad URI syntax of either: " + link
+ + ", and/or " + urlContainer.getOldPath()
+ + ", and/or " + urlContainer.getNewPath(), ex );
+ }
+ }
- PathDescriptor relativePathDescriptor = PathUtils.convertPath( oldPathDescriptor, newPathDescriptor );
+ // relativize only affects absolute links, if the link has the same scheme, host and port
+ // as the base, it is made into a relative link as viewed from the base
+ private String relativizeLink( final String link, final String baseUri )
+ {
+ if ( link == null || baseUri == null )
+ {
+ return link;
+ }
+
+ try
+ {
+ final URIPathDescriptor path = new URIPathDescriptor( baseUri, link );
- return relativePathDescriptor.getLocation();
+ return path.relativizeLink().toString();
}
- catch ( MalformedURLException mue )
+ catch ( URISyntaxException ex )
{
- throw new RuntimeException( "While converting Pathes:", mue );
+ throw new RuntimeException( "Bad URI syntax of either: " + link
+ + ", and/or " + baseUri, ex );
}
}
Modified: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathDescriptor.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathDescriptor.java?rev=1058083&r1=1058082&r2=1058083&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathDescriptor.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathDescriptor.java Wed Jan 12 11:34:02 2011
@@ -31,6 +31,7 @@ import org.codehaus.plexus.util.StringUt
* anchor.
*
* @author <a href="mailto:henning@apache.org">Henning P. Schmiedehausen</a>
+ * @deprecated use {@link URIPathDescriptor} instead.
* @version $Id$
*/
Modified: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathUtils.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathUtils.java?rev=1058083&r1=1058082&r2=1058083&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathUtils.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathUtils.java Wed Jan 12 11:34:02 2011
@@ -29,6 +29,7 @@ import org.codehaus.plexus.util.PathTool
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @author <a href="mailto:henning@apache.org">Henning P. Schmiedehausen</a>
+ * @deprecated this only operates on deprecated classes, it is not used anymore.
* @version $Id$
*/
public abstract class PathUtils
Added: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptor.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptor.java?rev=1058083&view=auto
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptor.java (added)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptor.java Wed Jan 12 11:34:02 2011
@@ -0,0 +1,222 @@
+package org.apache.maven.doxia.site.decoration.inheritance;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.codehaus.plexus.util.PathTool;
+
+/**
+ * Describes a link that may be absolute or relative, and that is anchored to an absolute URI.
+ *
+ * @author ltheussl
+ * @since 1.1.5
+ */
+public class URIPathDescriptor
+{
+ private final URI baseURI;
+ private final URI link;
+
+ /**
+ * A URIPathDescriptor consists of a base URI and a link.
+ * Both arguments to this constructor have to be parsable to URIs.
+ * The baseURI parameter has to be absolute in the sense of {@link URI#isAbsolute()}.
+ *
+ * @param baseURI The base URI. Has to be a valid absolute URI.
+ * In addition, the path of the URI should not have any file part,
+ * ie <code>http://maven.apache.org/</code> is valid,
+ * <code>http://maven.apache.org/index.html</code> is not.
+ * @param link the link. This may be a relative link or an absolute link.
+ * Note that URIs that start with a "/", ie don't specify a scheme, are considered relative.
+ *
+ * @throws URISyntaxException if either argument is not parsable as a URI,
+ * or if baseURI is not absolute.
+ */
+ public URIPathDescriptor( final String baseURI, final String link )
+ throws URISyntaxException
+ {
+ final String llink = link.startsWith( "/" ) ? link.substring( 1 ) : link;
+ final String bbase = baseURI.endsWith( "/" ) ? baseURI : baseURI + "/";
+
+ this.baseURI = new URI( bbase ).normalize();
+ this.link = new URI( llink ).normalize();
+
+ if ( !this.baseURI.isAbsolute() )
+ {
+ throw new URISyntaxException( baseURI, "Base must be an absolute URI!" );
+ }
+ }
+
+ /**
+ * Return the base of this URIPathDescriptor as a URI.
+ *
+ * @return the base URI.
+ */
+ public URI getBaseURI()
+ {
+ return baseURI;
+ }
+
+ /**
+ * Return the link of this URIPathDescriptor as a URI.
+ *
+ * @return the link URI.
+ */
+ public URI getLink()
+ {
+ return link;
+ }
+
+ /**
+ * Resolve the link to the base.
+ * This always returns an absolute URI. If link is absolute, link is returned.
+ *
+ * @return the resolved link. This is equivalent to calling
+ * {@link #getBaseURI()}.{@link URI#resolve(java.net.URI) resolve}( {@link #getLink()} ).
+ */
+ public URI resolveLink()
+ {
+ return baseURI.resolve( link );
+ }
+
+ /**
+ * Calculate the relative link with respect to the base.
+ * The original link is returned if either
+ * link is relative;
+ * or link and base do not share the {@link #sameSite(java.net.URI) same site}.
+ *
+ * @return the link as a relative URI.
+ */
+ public URI relativizeLink()
+ {
+ return relativizeLink( baseURI.toString(), link );
+ }
+
+ private static URI relativizeLink( final String base, final URI link )
+ {
+ if ( !link.isAbsolute() )
+ {
+ return link;
+ }
+
+ final URI newBaseURI;
+
+ try
+ {
+ newBaseURI = new URI( base );
+ }
+ catch ( URISyntaxException ex )
+ {
+ return link;
+ }
+
+ if ( !sameSite( link, newBaseURI ) )
+ {
+ return link;
+ }
+
+ final String relativePath = PathTool.getRelativeFilePath( newBaseURI.getPath(), link.getPath() );
+
+ try
+ {
+ return new URI( relativePath );
+ }
+ catch ( URISyntaxException ex )
+ {
+ return link;
+ }
+ }
+
+ /**
+ * Calculate the link as viewed from a different base.
+ * This returns the original link if link is absolute.
+ * This returns {@link #resolveLink()} if
+ * newBase == null
+ * or newBase is not parsable as a URI.
+ *
+ * @param newBase the new base URI. Has to be parsable as a URI.
+ *.
+ * @return a new relative link.
+ */
+ public URI rebaseLink( final String newBase )
+ {
+ if ( link.isAbsolute() )
+ {
+ return link;
+ }
+
+ if ( newBase == null )
+ {
+ return resolveLink();
+ }
+
+ final URI newBaseURI;
+
+ try
+ {
+ newBaseURI = new URI( newBase );
+ }
+ catch ( URISyntaxException ex )
+ {
+ return resolveLink();
+ }
+
+ if ( !sameSite( newBaseURI ) )
+ {
+ return resolveLink();
+ }
+
+ final String relativeBasePath = PathTool.getRelativeFilePath( newBaseURI.getPath(), baseURI.getPath() );
+
+ try
+ {
+ return new URI( relativeBasePath ).resolve( link );
+ }
+ catch ( URISyntaxException ex )
+ {
+ return resolveLink();
+ }
+ }
+
+ /**
+ * Check if this URIPathDescriptor lives on the same site as the given URI.
+ *
+ * @param uri a URI to compare with.
+ *
+ * @return true if {@link #getBaseURI()} shares the same scheme, host and port with the given URI
+ * where null values are allowed.
+ */
+ public boolean sameSite( final URI uri )
+ {
+ return sameSite( this.baseURI, uri );
+ }
+
+ private static boolean sameSite( final URI baseURI, final URI newBaseURI )
+ {
+ final boolean equalScheme = ( baseURI.getScheme() == null ? newBaseURI.getScheme() == null
+ : baseURI.getScheme().equals( newBaseURI.getScheme() ) );
+ final boolean equalHost = ( baseURI.getHost() == null ? newBaseURI.getHost() == null
+ : baseURI.getHost().equals( newBaseURI.getHost() ) );
+ final boolean equalPort = ( baseURI.getPort() == newBaseURI.getPort() );
+
+ return ( equalScheme && equalPort && equalHost );
+ }
+}
Modified: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java?rev=1058083&r1=1058082&r2=1058083&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritenceAssemblerTest.java Wed Jan 12 11:34:02 2011
@@ -64,7 +64,7 @@ public class DecorationModelInheritenceA
childModel = readModel( "child.xml" );
assembler.assembleModelInheritance( NAME, childModel, parentModel, "scp://people.apache.org/doxia",
"scp://people.apache.org" );
- // FIXME! assertEquals( "Check scp result", mergedModel, childModel );
+ assertEquals( "Check scp result", mergedModel, childModel );
assertEquals( "Modified parent!", readModel( "parent.xml" ), parentModel );
}
@@ -150,7 +150,7 @@ public class DecorationModelInheritenceA
childModel = readModel( "empty.xml" );
assembler.assembleModelInheritance( NAME, childModel, parentModel, "scp://people.apache.org/doxia",
"scp://people.apache.org" );
- //FIXME! assertPathsResolvedForRelativeUrls( childModel );
+ assertPathsResolvedForRelativeUrls( childModel );
assertEquals( "Modified parent!", readModel( "relative-urls.xml" ), parentModel );
}
@@ -186,13 +186,16 @@ public class DecorationModelInheritenceA
assembler.assembleModelInheritance( NAME, childModel, parentModel, "http://maven.apache.org/doxia/",
"http://maven.apache.org" );
+ assembler.resolvePaths( childModel, "http://maven.apache.org/doxia" );
+
assertPathsResolvedForSubsiteUrls( childModel );
// same with scp url, DOXIASITETOOLS-47
childModel = readModel( "empty.xml" );
assembler.assembleModelInheritance( NAME, childModel, parentModel, "scp://people.apache.org/doxia",
"scp://people.apache.org" );
- //FIXME! assertPathsResolvedForSubsiteUrls( childModel );
+ assembler.resolvePaths( childModel, "http://maven.apache.org/doxia" );
+ assertPathsResolvedForSubsiteUrls( childModel );
assertEquals( "Modified parent!", readModel( "subsite-urls.xml" ), parentModel );
}
@@ -234,7 +237,7 @@ public class DecorationModelInheritenceA
childModel = readModel( "empty.xml" );
assembler.assembleModelInheritance( NAME, childModel, parentModel, "scp://people.apache.org/doxia/core",
"scp://people.apache.org" );
- //FIXME! assertPathsResolvedForRelativeUrlsDepthOfTwo( childModel );
+ assertPathsResolvedForRelativeUrlsDepthOfTwo( childModel );
assertEquals( "Modified parent!", readModel( "relative-urls.xml" ), parentModel );
}
@@ -277,7 +280,7 @@ public class DecorationModelInheritenceA
childModel = readModel( "empty.xml" );
assembler.assembleModelInheritance( NAME, childModel, parentModel, "scp://people.apache.org/",
"scp://people.apache.org/doxia/" );
- //FIXME! assertPathsResolvedForReverseRelativeUrls( childModel );
+ assertPathsResolvedForReverseRelativeUrls( childModel );
assertEquals( "Modified parent!", readModel( "relative-urls.xml" ), parentModel );
}
@@ -320,7 +323,7 @@ public class DecorationModelInheritenceA
childModel = readModel( "empty.xml" );
assembler.assembleModelInheritance( NAME, childModel, parentModel, "scp://people.apache.org/",
"scp://people.apache.org/doxia/core/" );
- //FIXME! assertPathsResolvedForReverseRelativeUrlsDepthOfTwo( childModel );
+ assertPathsResolvedForReverseRelativeUrlsDepthOfTwo( childModel );
assertEquals( "Modified parent!", readModel( "relative-urls.xml" ), parentModel );
}
@@ -363,8 +366,8 @@ public class DecorationModelInheritenceA
// same with scp url, DOXIASITETOOLS-47
childModel = readModel( "empty.xml" );
assembler.assembleModelInheritance( NAME, childModel, parentModel, "scp://people.apache.org/",
- "scp://jakarta.apache.org" );
- //FIXME! assertPathsResolvedForUnrelatedRelativeUrls( childModel );
+ "http://jakarta.apache.org" );
+ assertPathsResolvedForUnrelatedRelativeUrls( childModel );
assertEquals( "Modified parent!", readModel( "relative-urls.xml" ), parentModel );
}
@@ -443,6 +446,11 @@ public class DecorationModelInheritenceA
assembler.assembleModelInheritance( NAME, childModel, parentModel, "http://maven.apache.org/doxia",
"http://maven.apache.org" );
+
+ DecorationModel unresolvedModel = readModel( "fully-populated-unresolved.xml" );
+ assertEquals( "Check result", unresolvedModel, childModel );
+
+ assembler.resolvePaths( childModel, "http://maven.apache.org/doxia" );
DecorationModel mergedModel = readModel( "fully-populated-merged.xml" );
assertEquals( "Check result", mergedModel, childModel );
@@ -451,7 +459,8 @@ public class DecorationModelInheritenceA
childModel = readModel( "empty.xml" );
assembler.assembleModelInheritance( NAME, childModel, parentModel, "scp://maven.apache.org/doxia",
"scp://maven.apache.org" );
- // FIXME! assertEquals( "Check scp result", mergedModel, childModel );
+ assembler.resolvePaths( childModel, "http://maven.apache.org/doxia" );
+ assertEquals( "Check scp result", mergedModel, childModel );
assertEquals( "Modified parent!", readModel( "fully-populated-child.xml" ), parentModel );
}
Added: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptorTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptorTest.java?rev=1058083&view=auto
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptorTest.java (added)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptorTest.java Wed Jan 12 11:34:02 2011
@@ -0,0 +1,95 @@
+
+package org.apache.maven.doxia.site.decoration.inheritance;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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;
+
+/**
+ *
+ * @author ltheussl
+ * @since 1.1.5
+ */
+public class URIPathDescriptorTest
+ extends TestCase
+{
+ /**
+ * Test of resolveLink method, of class URIPathDescriptor.
+ *
+ * @throws Exception
+ */
+ public void testResolveLink()
+ throws Exception
+ {
+ URIPathDescriptor oldPath = new URIPathDescriptor( "http://maven.apache.org/", "source" );
+ assertEquals( "http://maven.apache.org/source", oldPath.resolveLink().toString() );
+
+ oldPath = new URIPathDescriptor( "http://maven.apache.org/", "source/" );
+ assertEquals( "http://maven.apache.org/source/", oldPath.resolveLink().toString() );
+
+ oldPath = new URIPathDescriptor( "http://maven.apache.org/", "/source" );
+ assertEquals( "http://maven.apache.org/source", oldPath.resolveLink().toString() );
+
+ oldPath = new URIPathDescriptor( "http://maven.apache.org", "source" );
+ assertEquals( "http://maven.apache.org/source", oldPath.resolveLink().toString() );
+ }
+
+ /**
+ * Test of rebaseLink method, of class URIPathDescriptor.
+ *
+ * @throws Exception
+ */
+ public void testRebaseLink()
+ throws Exception
+ {
+ URIPathDescriptor oldPath = new URIPathDescriptor( "http://maven.apache.org/", "source" );
+ assertEquals( "../source", oldPath.rebaseLink( "http://maven.apache.org/doxia/" ).toString() );
+
+ oldPath = new URIPathDescriptor( "scp://people.apache.org/", "source" );
+ assertEquals( "../source", oldPath.rebaseLink( "scp://people.apache.org/doxia" ).toString() );
+
+ oldPath = new URIPathDescriptor( "http://maven.apache.org/", "banner/left" );
+ assertEquals( "../banner/left", oldPath.rebaseLink( "http://maven.apache.org/doxia/" ).toString() );
+
+ oldPath = new URIPathDescriptor( "http://jakarta.apache.org/", "banner/left" );
+ assertEquals( "http://jakarta.apache.org/banner/left", oldPath.rebaseLink( "http://maven.apache.org/" ).toString() );
+ }
+
+ /**
+ * Test of relativizeLink method, of class URIPathDescriptor.
+ *
+ * @throws Exception
+ */
+ public void testRelativizeLink()
+ throws Exception
+ {
+ URIPathDescriptor path = new URIPathDescriptor( "http://maven.apache.org/", "source" );
+ assertEquals( "source", path.relativizeLink().toString() );
+
+ path = new URIPathDescriptor( "http://maven.apache.org/", "http://maven.apache.org/source" );
+ assertEquals( "source", path.relativizeLink().toString() );
+
+ path = new URIPathDescriptor( "http://maven.apache.org/doxia/", "http://maven.apache.org/source/" );
+ assertEquals( "../source/", path.relativizeLink().toString() );
+
+ path = new URIPathDescriptor( "http://maven.apache.org/doxia", "http://maven.apache.org/source" );
+ assertEquals( "../source", path.relativizeLink().toString() );
+ }
+}
Added: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/resources/fully-populated-unresolved.xml
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/resources/fully-populated-unresolved.xml?rev=1058083&view=auto
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/resources/fully-populated-unresolved.xml (added)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/resources/fully-populated-unresolved.xml Wed Jan 12 11:34:02 2011
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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 xmlns="http://maven.apache.org/DECORATION/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 file:../../../target/generated-site/xsd/decoration-1.0.0.xsd"
+ 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"/>
+ <version position="right" />
+
+ <poweredBy>
+ <logo name="Maven" href="http://maven.apache.org" img="http://maven.apache.org/images/maven-feather.png"/>
+ </poweredBy>
+
+ <skin>
+ <groupId>org.apache.maven.skins</groupId>
+ <artifactId>maven-default-skin</artifactId>
+ </skin>
+
+ <body>
+ <head>
+ <meta name="blah" value="blah"/>
+ </head>
+
+ <links>
+ <item name="Bouncy Castle" href="http://www.bouncycastle.org"/>
+ </links>
+ </body>
+
+ <custom>
+ <junk>junk</junk>
+ </custom>
+</project>