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()