You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2011/11/01 17:56:06 UTC

svn commit: r1196128 - 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/

Author: hboutemy
Date: Tue Nov  1 16:56:06 2011
New Revision: 1196128

URL: http://svn.apache.org/viewvc?rev=1196128&view=rev
Log:
[DOXIASITETOOLS-62] improved breadcrumbs inheritence: ability to remove items

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/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=1196128&r1=1196127&r2=1196128&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 Tue Nov  1 16:56:06 2011
@@ -203,7 +203,7 @@ public class DefaultDecorationModelInher
                 cBody.setHead( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) cBody.getHead(), (Xpp3Dom) pBody.getHead() ) );
             }
 
-            cBody.setLinks( mergeLinkItemLists( cBody.getLinks(), pBody.getLinks(), urlContainer ) );
+            cBody.setLinks( mergeLinkItemLists( cBody.getLinks(), pBody.getLinks(), urlContainer, false ) );
 
             if ( cBody.getBreadcrumbs().isEmpty() && !pBody.getBreadcrumbs().isEmpty() )
             {
@@ -212,7 +212,8 @@ public class DefaultDecorationModelInher
                 breadcrumb.setHref( "" );
                 cBody.getBreadcrumbs().add( breadcrumb );
             }
-            cBody.setBreadcrumbs( mergeLinkItemLists( cBody.getBreadcrumbs(), pBody.getBreadcrumbs(), urlContainer ) );
+            cBody.setBreadcrumbs( mergeLinkItemLists( cBody.getBreadcrumbs(), pBody.getBreadcrumbs(), urlContainer,
+                                                      true ) );
 
             cBody.setMenus( mergeMenus( cBody.getMenus(), pBody.getMenus(), urlContainer ) );
         }
@@ -294,13 +295,13 @@ public class DefaultDecorationModelInher
     }
 
     private List<LinkItem> mergeLinkItemLists( final List<LinkItem> childList, final List<LinkItem> parentList,
-                                               final URLContainer urlContainer )
+                                               final URLContainer urlContainer, boolean cutParentAfterDuplicate )
     {
         List<LinkItem> items = new ArrayList<LinkItem>( childList.size() + parentList.size() );
 
         for ( LinkItem item : parentList )
         {
-            if ( !items.contains( item ) )
+            if ( !items.contains( item ) && !childList.contains( item ) )
             {
                 final LinkItem clone = item.clone();
 
@@ -308,6 +309,13 @@ public class DefaultDecorationModelInher
 
                 items.add( clone );
             }
+            else if ( cutParentAfterDuplicate )
+            {
+                // if a parent item is found in child, ignore next items (case for breadcrumbs)
+                // merge ( "B > E", "A > B > C > D" ) -> "A > B > E" (notice missing "C > D")
+                // see http://jira.codehaus.org/browse/DOXIASITETOOLS-62
+                break;
+            }
         }
 
         for ( LinkItem item : childList )

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=1196128&r1=1196127&r2=1196128&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 Tue Nov  1 16:56:06 2011
@@ -780,6 +780,33 @@ public class DecorationModelInheritenceA
     }
 
     /**
+     * http://jira.codehaus.org/browse/DOXIASITETOOLS-62
+     */
+    public void testBreadcrumbCutParentAfterDuplicate()
+    {
+        DecorationModel child = new DecorationModel(); // B > E
+        child.setBody( new Body() );
+        child.getBody().addBreadcrumb( createLinkItem( "B", null ) );
+        child.getBody().addBreadcrumb( createLinkItem( "E", null ) );
+
+        DecorationModel parent = new DecorationModel(); // A > B > C > D
+        parent.setBody( new Body() );
+        parent.getBody().addBreadcrumb( createLinkItem( "A", null ) );
+        parent.getBody().addBreadcrumb( createLinkItem( "B", null ) );
+        parent.getBody().addBreadcrumb( createLinkItem( "C", null ) );
+        parent.getBody().addBreadcrumb( createLinkItem( "D", null ) );
+
+        assembler.assembleModelInheritance( NAME, child, parent, "http://maven.apache.org/doxia",
+                                            "http://maven.apache.org" );
+
+        final List<LinkItem> breadcrumbs = child.getBody().getBreadcrumbs(); // expected: A > B > E
+        assertEquals( "Check size", 3, breadcrumbs.size() );
+        assertEquals( "Check item", createLinkItem( "A", null ), breadcrumbs.get( 0 ) );
+        assertEquals( "Check item", createLinkItem( "B", null ), breadcrumbs.get( 1 ) );
+        assertEquals( "Check item", createLinkItem( "E", null ), breadcrumbs.get( 2 ) );
+    }
+
+    /**
      *
      */
     public void testBannerWithoutHref()