Author: dennisl
Date: Sun Jan 25 22:32:15 2009
New Revision: 737595

URL: http://svn.apache.org/viewvc?rev=737595&view=rev
Log:
[DOXIA-254] Merge revisions 629097, 736603, 736628 and 736630 from trunk.

Modified:
    
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/pom.xml
    
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
    
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathUtils.java
    
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/mdo/decoration.mdo
    
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/child.xml
    
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/merged.xml
    
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/parent.xml
    
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/relative-urls-resolved.xml

Modified: 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/pom.xml?rev=737595&r1=737594&r2=737595&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/pom.xml
 (original)
+++ 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/pom.xml
 Sun Jan 25 22:32:15 2009
@@ -41,16 +41,6 @@
   </dependencies>
 
   <build>
-    <pluginManagement>
-      <plugins>
-        <!-- TODO need to upgrade to last version -->
-        <plugin>
-          <groupId>org.codehaus.modello</groupId>
-          <artifactId>modello-maven-plugin</artifactId>
-          <version>1.0-alpha-17</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
     <plugins>
       <plugin>
         <groupId>org.codehaus.modello</groupId>

Modified: 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/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/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java?rev=737595&r1=737594&r2=737595&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
 (original)
+++ 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
 Sun Jan 25 22:32:15 2009
@@ -31,6 +31,7 @@
 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.StringUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 /**
@@ -38,6 +39,7 @@
  *
  * @author <a href="mailto:br...@apache.org";>Brett Porter</a>
  * @author <a href="mailto:henn...@apache.org";>Henning P. Schmiedehausen</a>
+ * @version $Id$
  * @plexus.component 
role="org.apache.maven.doxia.site.decoration.inheritance.DecorationModelInheritanceAssembler"
  */
 public class DefaultDecorationModelInheritanceAssembler implements 
DecorationModelInheritanceAssembler
@@ -250,9 +252,13 @@
 
     private void resolveLinkItemPaths( LinkItem item, final URLContainer 
urlContainer )
     {
-        if ( item.getHref() != null )
+        if ( StringUtils.isNotEmpty( item.getHref() ) )
         {
-            item.setHref( convertPath( item.getHref(), urlContainer ) );
+            String href = convertPath( item.getHref(), urlContainer );
+            if ( StringUtils.isNotEmpty( href ) )
+            {
+                item.setHref( href );
+            }
         }
         else
         {

Modified: 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/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/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathUtils.java?rev=737595&r1=737594&r2=737595&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathUtils.java
 (original)
+++ 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathUtils.java
 Sun Jan 25 22:32:15 2009
@@ -19,13 +19,13 @@
  * under the License.
  */
 
-import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.StringTokenizer;
+
+import org.codehaus.plexus.util.PathTool;
 
 /**
- * Utilitites that allow conversion of old and new pathes and URLs relative to 
each other.
+ * Utilities that allow conversion of old and new pathes and URLs relative to 
each other.
  *
  * @author <a href="mailto:br...@apache.org";>Brett Porter</a>
  * @author <a href="mailto:henn...@apache.org";>Henning P. Schmiedehausen</a>
@@ -35,8 +35,15 @@
 {
     private PathUtils()
     {
+        // nop
     }
 
+    /**
+     * @param oldPath not null
+     * @param newPath not null
+     * @return a PathDescriptor converted by the new path
+     * @throws MalformedURLException if any
+     */
     public static final PathDescriptor convertPath( final PathDescriptor 
oldPath, final PathDescriptor newPath )
         throws MalformedURLException
     {
@@ -50,8 +57,15 @@
         return new PathDescriptor( relative );
     }
 
+    /**
+     * @param oldPathDescriptor not null
+     * @param newPathDescriptor not null
+     * @return a relative path depending if PathDescriptor is a file or a web 
url.
+     * @see PathTool#getRelativeFilePath(String, String)
+     * @see PathTool#getRelativeWebPath(String, String)
+     */
     public static final String getRelativePath( final PathDescriptor 
oldPathDescriptor,
-                                                final PathDescriptor 
newPathDescriptor ) throws MalformedURLException
+                                                final PathDescriptor 
newPathDescriptor )
     {
         // Cannot convert from URL to file.
         if ( oldPathDescriptor.isFile() )
@@ -65,11 +79,9 @@
                     // site into a new URL using resolvePaths()...
                     return oldPathDescriptor.getPath();
                 }
-                else
-                {
-                    // The old path is not relative. Bail out.
-                    return null;
-                }
+
+                // The old path is not relative. Bail out.
+                return null;
             }
         }
 
@@ -95,177 +107,23 @@
                 String oldPath = oldPathDescriptor.getPath();
                 String newPath = newPathDescriptor.getPath();
 
-                return getRelativeWebPath( newPath, oldPath );
-            }
-            else
-            {
-                // Different sites. No relative Path possible.
-                return null;
+                return PathTool.getRelativeWebPath( newPath, oldPath );
             }
-        }
-        else
-        {
-            // Both Descriptors point to a path. We can build a relative path.
-            String oldPath = oldPathDescriptor.getPath();
-            String newPath = newPathDescriptor.getPath();
-
-            if ( oldPath == null || newPath == null )
-            {
-                // One of the sites has a strange URL. no relative path 
possible, bail out.
-                return null;
-            }
-
-            return getRelativeFilePath( oldPath, newPath );
-        }
-    }
-
-    /**
-     * This method can calculate the relative path between two pathes on a web 
site.
-     */
-    public static final String getRelativeWebPath( final String oldPath, final 
String newPath )
-    {
-        String resultPath = buildRelativePath( newPath, oldPath, '/' );
-
-        if ( newPath.endsWith( "/" ) && !resultPath.endsWith( "/" ) )
-        {
-            return resultPath + "/";
-        }
-        else
-        {
-            return resultPath;
-        }
-    }
-
-    /**
-     * This method can calculate the relative path between two pathes on a 
file system.
-     */
-    public static final String getRelativeFilePath( final String oldPath, 
final String newPath )
-    {
-        // normalise the path delimiters
-        String fromPath = new File( oldPath ).getPath();
-        String toPath = new File( newPath ).getPath();
-
-        // strip any leading slashes if its a windows path
-        if ( toPath.matches( "^\\[a-zA-Z]:" ) )
-        {
-            toPath = toPath.substring( 1 );
-        }
-        if ( fromPath.matches( "^\\[a-zA-Z]:" ) )
-        {
-            fromPath = fromPath.substring( 1 );
-        }
-
-        // lowercase windows drive letters.
-        if ( fromPath.startsWith( ":", 1 ) )
-        {
-            fromPath = fromPath.substring( 0, 1 ).toLowerCase() + 
fromPath.substring( 1 );
-        }
-        if ( toPath.startsWith( ":", 1 ) )
-        {
-            toPath = toPath.substring( 0, 1 ).toLowerCase() + 
toPath.substring( 1 );
-        }
 
-        // check for the presence of windows drives. No relative way of
-        // traversing from one to the other.
-        if ( ( toPath.startsWith( ":", 1 ) && fromPath.startsWith( ":", 1 ) )
-                        && ( !toPath.substring( 0, 1 ).equals( 
fromPath.substring( 0, 1 ) ) ) )
-        {
-            // they both have drive path element but they dont match, no
-            // relative path
-            return null;
-        }
-
-        if ( ( toPath.startsWith( ":", 1 ) && !fromPath.startsWith( ":", 1 ) )
-                        || ( !toPath.startsWith( ":", 1 ) && 
fromPath.startsWith( ":", 1 ) ) )
-        {
-            // one has a drive path element and the other doesnt, no relative
-            // path.
+            // Different sites. No relative Path possible.
             return null;
         }
 
-        String resultPath = buildRelativePath( toPath, fromPath, 
File.separatorChar );
+        // Both Descriptors point to a path. We can build a relative path.
+        String oldPath = oldPathDescriptor.getPath();
+        String newPath = newPathDescriptor.getPath();
 
-        if ( newPath.endsWith( File.separator ) && !resultPath.endsWith( 
File.separator ) )
-        {
-            return resultPath + File.separator;
-        }
-        else
+        if ( oldPath == null || newPath == null )
         {
-            return resultPath;
-        }
-    }
-
-    private static final String buildRelativePath( final String toPath, final 
String fromPath, final char separatorChar )
-    {
-        // use tokeniser to traverse paths and for lazy checking
-        StringTokenizer toTokeniser = new StringTokenizer( toPath, 
String.valueOf( separatorChar ) );
-        StringTokenizer fromTokeniser = new StringTokenizer( fromPath, 
String.valueOf( separatorChar ) );
-
-        int count = 0;
-
-        // walk along the to path looking for divergence from the from path
-        while ( toTokeniser.hasMoreTokens() && fromTokeniser.hasMoreTokens() )
-        {
-            if ( separatorChar == '\\' )
-            {
-                if ( !fromTokeniser.nextToken().equalsIgnoreCase( 
toTokeniser.nextToken() ) )
-                {
-                    break;
-                }
-            }
-            else
-            {
-                if ( !fromTokeniser.nextToken().equals( 
toTokeniser.nextToken() ) )
-                {
-                    break;
-                }
-            }
-
-            count++;
-        }
-
-        // reinitialise the tokenisers to count positions to retrieve the
-        // gobbled token
-
-        toTokeniser = new StringTokenizer( toPath, String.valueOf( 
separatorChar ) );
-        fromTokeniser = new StringTokenizer( fromPath, String.valueOf( 
separatorChar ) );
-
-        while ( count-- > 0 )
-        {
-            fromTokeniser.nextToken();
-            toTokeniser.nextToken();
-        }
-
-        String relativePath = "";
-
-        // add back refs for the rest of from location.
-        while ( fromTokeniser.hasMoreTokens() )
-        {
-            fromTokeniser.nextToken();
-
-            relativePath += "..";
-
-            if ( fromTokeniser.hasMoreTokens() )
-            {
-                relativePath += separatorChar;
-            }
-        }
-
-        if ( relativePath.length() != 0 && toTokeniser.hasMoreTokens() )
-        {
-            relativePath += separatorChar;
+            // One of the sites has a strange URL. no relative path possible, 
bail out.
+            return null;
         }
 
-        // add fwd fills for whatevers left of newPath.
-        while ( toTokeniser.hasMoreTokens() )
-        {
-            relativePath += toTokeniser.nextToken();
-
-            if ( toTokeniser.hasMoreTokens() )
-            {
-                relativePath += separatorChar;
-            }
-        }
-        return relativePath;
+        return PathTool.getRelativeFilePath( oldPath, newPath );
     }
 }

Modified: 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/mdo/decoration.mdo
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/mdo/decoration.mdo?rev=737595&r1=737594&r2=737595&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/mdo/decoration.mdo
 (original)
+++ 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/main/mdo/decoration.mdo
 Sun Jan 25 22:32:15 2009
@@ -19,7 +19,8 @@
 under the License.
 -->
 
-<model>
+<model xmlns="http://modello.codehaus.org/MODELLO/1.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://modello.codehaus.org/MODELLO/1.0.0 
http://modello.codehaus.org/xsd/modello-1.0.0.xsd";
+  xsd.namespace="http://maven.apache.org/DECORATION/1.0.0"; 
xsd.target-namespace="http://maven.apache.org/DECORATION/1.0.0";>
   <id>decoration</id>
   <name>Decoration</name>
   <description><![CDATA[
@@ -312,7 +313,7 @@
         </field>
       </fields>
     </class>
-    <class>
+    <class xsd.compositor="sequence">
       <name>Body</name>
       <description><![CDATA[
         The main content decoration.
@@ -349,7 +350,6 @@
           <association>
             <type>LinkItem</type>
             <multiplicity>*</multiplicity>
-            <identifier>true</identifier>
           </association>
           <identifier>true</identifier>
         </field>
@@ -394,7 +394,7 @@
         </field>
       </fields>
     </class>
-    <class>
+    <class xsd.compositor="sequence">
       <name>Menu</name>
       <description><![CDATA[
         A menu in the navigation.
@@ -413,7 +413,7 @@
         <field xml.attribute="true">
           <name>inherit</name>
           <description><![CDATA[
-            The way in which the menu is inherited.
+            The way in which the menu is inherited. Can be one of : 
<code>top</code>, <code>bottom</code>.
           ]]></description>
           <version>1.0.0</version>
           <type>String</type>
@@ -461,7 +461,7 @@
         </field>
       </fields>
     </class>
-    <class>
+    <class xsd.compositor="sequence">
       <name>MenuItem</name>
       <description><![CDATA[
         A menu item.
@@ -512,7 +512,7 @@
     <class>
       <name>Skin</name>
       <description><![CDATA[
-        An skin artifact declaratio.
+        An skin artifact declaration.
       ]]></description>
       <version>1.0.0</version>
       <fields>

Modified: 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/child.xml
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/child.xml?rev=737595&r1=737594&r2=737595&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/child.xml
 (original)
+++ 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/child.xml
 Sun Jan 25 22:32:15 2009
@@ -24,8 +24,8 @@
     </links>
 
     <menu name="Subproject menu">
-      <item name="Introduction" href="/index.html"/>
-      <item name="Usage" href="/usage.html"/>
+      <item name="Introduction" href="/indexChild.html"/>
+      <item name="Usage" href="/usageChild.html"/>
     </menu>
 
   </body>

Modified: 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/merged.xml
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/merged.xml?rev=737595&r1=737594&r2=737595&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/merged.xml
 (original)
+++ 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/merged.xml
 Sun Jan 25 22:32:15 2009
@@ -47,18 +47,18 @@
     </links>
 
     <menu name="Top Menu" inherit="top">
-      <item name="Introduction" href="/index.html"/>
-      <item name="Usage" href="/usage.html"/>
+      <item name="Introduction" href="../indexParent.html"/>
+      <item name="Usage" href="../usageParent.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"/>
+      <item name="Introduction" href="/indexChild.html"/>
+      <item name="Usage" href="/usageChild.html"/>
     </menu>
     <menu name="Other Links" inherit="bottom">
-      <item name="Copyright" href="/copyright.html"/>
+      <item name="Copyright" href="../copyrightParent.html"/>
     </menu>
   </body>
 </project>

Modified: 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/parent.xml
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/parent.xml?rev=737595&r1=737594&r2=737595&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/parent.xml
 (original)
+++ 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/parent.xml
 Sun Jan 25 22:32:15 2009
@@ -43,17 +43,17 @@
     </breadcrumbs>
 
     <menu name="Top Menu" inherit="top">
-      <item name="Introduction" href="/index.html"/>
-      <item name="Usage" href="/usage.html"/>
+      <item name="Introduction" href="/indexParent.html"/>
+      <item name="Usage" href="/usageParent.html"/>
     </menu>
     <menu name="empty menu" inherit="top">
 
     </menu>
     <menu name="Special" inherit="off">
-      <item name="Special" href="/special.html"/>
+      <item name="Special" href="/specialParent.html"/>
     </menu>
     <menu name="Other Links" inherit="bottom">
-      <item name="Copyright" href="/copyright.html"/>
+      <item name="Copyright" href="/copyrightParent.html"/>
     </menu>
   </body>
 </project>

Modified: 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/relative-urls-resolved.xml
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/relative-urls-resolved.xml?rev=737595&r1=737594&r2=737595&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/relative-urls-resolved.xml
 (original)
+++ 
maven/doxia/doxia-sitetools/branches/doxia-sitetools-1.0.x/doxia-decoration-model/src/test/resources/relative-urls-resolved.xml
 Sun Jan 25 22:32:15 2009
@@ -30,7 +30,7 @@
   </bannerRight>
 
   <poweredBy>
-    <logo name="Tomcat" href="/tomcat" img="tomcat/logo.gif"/>
+    <logo name="Tomcat" href="tomcat" img="tomcat/logo.gif"/>
   </poweredBy>
 
   <body>


Reply via email to