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/07 22:54:22 UTC
svn commit: r1056527 - in
/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src:
main/java/org/apache/maven/doxia/site/decoration/inheritance/ main/mdo/
test/java/org/apache/maven/doxia/site/decoration/inheritance/
Author: ltheussl
Date: Fri Jan 7 21:54:21 2011
New Revision: 1056527
URL: http://svn.apache.org/viewvc?rev=1056527&view=rev
Log:
[DOXIASITETOOLS-45] assembleModelInheritance modifies parent DecorationModel
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/mdo/decoration.mdo
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=1056527&r1=1056526&r2=1056527&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 Fri Jan 7 21:54:21 2011
@@ -31,6 +31,10 @@ import org.apache.maven.doxia.site.decor
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.apache.maven.doxia.site.decoration.PublishDate;
+import org.apache.maven.doxia.site.decoration.Skin;
+import org.apache.maven.doxia.site.decoration.Version;
+
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -53,32 +57,31 @@ public class DefaultDecorationModelInher
// cannot inherit from null parent.
if ( parent != null )
{
- if ( child.getBannerLeft() == null )
+ if ( child.getBannerLeft() == null && parent.getBannerLeft() != null )
{
- child.setBannerLeft( parent.getBannerLeft() );
+ child.setBannerLeft( (Banner) parent.getBannerLeft().clone());
resolveBannerPaths( child.getBannerLeft(), urlContainer );
}
- if ( child.getBannerRight() == null )
+ if ( child.getBannerRight() == null && parent.getBannerRight() != null)
{
- child.setBannerRight( parent.getBannerRight() );
-
+ child.setBannerRight( (Banner) parent.getBannerRight().clone());
resolveBannerPaths( child.getBannerRight(), urlContainer );
}
- if ( child.getPublishDate() == null )
+ if ( child.getPublishDate() == null && parent.getPublishDate() != null )
{
- child.setPublishDate( parent.getPublishDate() );
+ child.setPublishDate( (PublishDate) parent.getPublishDate().clone());
}
- if ( child.getVersion() == null )
+ if ( child.getVersion() == null && parent.getVersion() != null )
{
- child.setVersion( parent.getVersion() );
+ child.setVersion( (Version) parent.getVersion().clone());
}
- if ( child.getSkin() == null )
+ if ( child.getSkin() == null && parent.getSkin() != null )
{
- child.setSkin( parent.getSkin() );
+ child.setSkin( (Skin) parent.getSkin().clone());
}
child.setPoweredBy( mergePoweredByLists( child.getPoweredBy(), parent.getPoweredBy(), urlContainer ) );
@@ -220,7 +223,7 @@ public class DefaultDecorationModelInher
private List mergeMenus( final List childMenus, final List parentMenus, final URLContainer urlContainer )
{
- List menus = new ArrayList();
+ List menus = new ArrayList( childMenus.size() + parentMenus.size() );
for ( Iterator it = childMenus.iterator(); it.hasNext(); )
{
@@ -232,7 +235,7 @@ public class DefaultDecorationModelInher
int topCounter = 0;
for ( Iterator it = parentMenus.iterator(); it.hasNext(); )
{
- Menu menu = (Menu) it.next();
+ Menu menu = (Menu) ( (Menu) it.next() ).clone();
if ( "top".equals( menu.getInherit() ) )
{
@@ -286,11 +289,11 @@ public class DefaultDecorationModelInher
private List mergeLinkItemLists( final List childList, final List parentList, final URLContainer urlContainer )
{
- List items = new ArrayList();
+ List items = new ArrayList( childList.size() + parentList.size() );
for ( Iterator it = parentList.iterator(); it.hasNext(); )
{
- LinkItem item = (LinkItem) it.next();
+ LinkItem item = (LinkItem) ( (LinkItem) it.next() ).clone();
resolveLinkItemPaths( item, urlContainer );
@@ -315,11 +318,11 @@ public class DefaultDecorationModelInher
private List mergePoweredByLists( final List childList, final List parentList, final URLContainer urlContainer )
{
- List logos = new ArrayList();
+ List logos = new ArrayList( childList.size() + parentList.size() );
for ( Iterator it = parentList.iterator(); it.hasNext(); )
{
- Logo logo = (Logo) it.next();
+ Logo logo = (Logo) ( (Logo) it.next() ).clone();
if ( !logos.contains( logo ) )
{
Modified: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo?rev=1056527&r1=1056526&r2=1056527&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/mdo/decoration.mdo Fri Jan 7 21:54:21 2011
@@ -38,7 +38,7 @@ under the License.
</default>
</defaults>
<classes>
- <class rootElement="true" xml.tagName="project">
+ <class rootElement="true" xml.tagName="project" java.clone="deep">
<name>DecorationModel</name>
<description><![CDATA[
The <code><project></code> element is the root of the site decoration descriptor.
@@ -210,7 +210,7 @@ under the License.
</codeSegment>
</codeSegments>
</class>
- <class>
+ <class java.clone="deep">
<name>Banner</name>
<description>Banner logo on the masthead of the site.</description>
<version>1.0.0+</version>
@@ -267,7 +267,7 @@ under the License.
</field>
</fields>
</class>
- <class>
+ <class java.clone="deep">
<name>PublishDate</name>
<description>Modify display properties for date published.</description>
<version>1.0.0+</version>
@@ -289,7 +289,7 @@ under the License.
</field>
</fields>
</class>
- <class>
+ <class java.clone="deep">
<name>Version</name>
<description>Modify display properties for version published.</description>
<version>1.0.0+</version>
@@ -303,13 +303,13 @@ under the License.
</field>
</fields>
</class>
- <class>
+ <class java.clone="deep">
<name>Logo</name>
<description>Power by logo on the navigation.</description>
<version>1.0.0+</version>
<superClass>LinkItem</superClass>
</class>
- <class xsd.compositor="sequence">
+ <class java.clone="deep" xsd.compositor="sequence">
<name>Body</name>
<description>The main content decoration.</description>
<version>1.0.0+</version>
@@ -353,7 +353,7 @@ under the License.
</field>
</fields>
</class>
- <class>
+ <class java.clone="deep">
<name>LinkItem</name>
<description>A link in the navigation.</description>
<version>1.0.0+</version>
@@ -424,7 +424,7 @@ under the License.
</field>
</fields>
</class>
- <class xsd.compositor="sequence">
+ <class java.clone="deep" xsd.compositor="sequence">
<name>Menu</name>
<description>A menu in the navigation.</description>
<version>1.0.0+</version>
@@ -519,7 +519,7 @@ under the License.
</field>
</fields>
</class>
- <class xsd.compositor="sequence">
+ <class java.clone="deep" xsd.compositor="sequence">
<name>MenuItem</name>
<description>A menu item.</description>
<version>1.0.0+</version>
@@ -559,7 +559,7 @@ under the License.
</field>
</fields>
</class>
- <class>
+ <class java.clone="deep">
<name>Skin</name>
<description>An skin artifact declaration.</description>
<version>1.0.0+</version>
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=1056527&r1=1056526&r2=1056527&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 Fri Jan 7 21:54:21 2011
@@ -48,7 +48,6 @@ public class DecorationModelInheritenceA
private static final String NAME = "Name";
- /** @throws Exception */
public void testInheritence()
throws IOException, XmlPullParserException
{
@@ -60,6 +59,8 @@ public class DecorationModelInheritenceA
DecorationModel mergedModel = readModel( "merged.xml" );
assertEquals( "Check result", mergedModel, childModel );
+
+ assertEquals( "Modified parent!", readModel( "parent.xml" ), parentModel );
}
public void testPathsResolvedWhenEmpty()
@@ -74,6 +75,8 @@ public class DecorationModelInheritenceA
DecorationModel mergedModel = readModel( "empty.xml" );
assertEquals( "Check result", mergedModel, childModel );
+
+ assertEquals( "Modified parent!", readModel( "empty.xml" ), parentModel );
}
public void testPathsNotResolvedForExternalUrls()
@@ -107,6 +110,8 @@ public class DecorationModelInheritenceA
Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
assertEquals( "check menu item href", "http://www.apache.org/special/", menuItem.getHref() );
+
+ assertEquals( "Modified parent!", readModel( "external-urls.xml" ), parentModel );
}
public void testPathsResolvedForRelativeUrls()
@@ -137,6 +142,8 @@ public class DecorationModelInheritenceA
Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
assertEquals( "check menu item href", "../special/", menuItem.getHref() );
+
+ assertEquals( "Modified parent!", readModel( "relative-urls.xml" ), parentModel );
}
public void testPathsResolvedForSubsiteUrls()
@@ -167,6 +174,8 @@ public class DecorationModelInheritenceA
Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
assertEquals( "check menu item href", "../special/", menuItem.getHref() );
+
+ assertEquals( "Modified parent!", readModel( "subsite-urls.xml" ), parentModel );
}
public void testPathsResolvedForRelativeUrlsDepthOfTwo()
@@ -198,6 +207,8 @@ public class DecorationModelInheritenceA
Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
assertEquals( "check menu item href", "../../special/", menuItem.getHref() );
+
+ assertEquals( "Modified parent!", readModel( "relative-urls.xml" ), parentModel );
}
public void testPathsResolvedForReverseRelativeUrls()
@@ -229,6 +240,8 @@ public class DecorationModelInheritenceA
Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
assertEquals( "check menu item href", "doxia/special/", menuItem.getHref() );
+
+ assertEquals( "Modified parent!", readModel( "relative-urls.xml" ), parentModel );
}
public void testPathsResolvedForReverseRelativeUrlsDepthOfTwo()
@@ -261,6 +274,8 @@ public class DecorationModelInheritenceA
Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
assertEquals( "check menu item href", "doxia/core/special/", menuItem.getHref() );
+
+ assertEquals( "Modified parent!", readModel( "relative-urls.xml" ), parentModel );
}
public void testPathsResolvedForUnrelatedRelativeUrls()
@@ -295,6 +310,8 @@ public class DecorationModelInheritenceA
Menu menu = (Menu) childModel.getBody().getMenus().get( 0 );
LinkItem menuItem = (LinkItem) menu.getItems().get( 0 );
assertEquals( "check menu item href", "http://jakarta.apache.org/special/", menuItem.getHref() );
+
+ assertEquals( "Modified parent!", readModel( "relative-urls.xml" ), parentModel );
}
public void testNullParent()
@@ -320,6 +337,8 @@ public class DecorationModelInheritenceA
DecorationModel mergedModel = readModel( "fully-populated-child.xml" );
assertEquals( "Check result", mergedModel, childModel );
+
+ assertEquals( "Modified parent!", readModel( "fully-populated-child.xml" ), parentModel );
}
public void testFullyPopulatedParentAndEmptyChild()
@@ -333,6 +352,8 @@ public class DecorationModelInheritenceA
DecorationModel mergedModel = readModel( "fully-populated-merged.xml" );
assertEquals( "Check result", mergedModel, childModel );
+
+ assertEquals( "Modified parent!", readModel( "fully-populated-child.xml" ), parentModel );
}
public void testResolvingAllExternalUrls()
@@ -459,6 +480,8 @@ public class DecorationModelInheritenceA
assertEquals( "Check size", 1, model.getPoweredBy().size() );
assertEquals( "Check item", createLogo( "Foo", "http://foo.apache.org", "http://foo.apache.org/foo.jpg" ),
model.getPoweredBy().get( 0 ) );
+
+ assertEquals( "Modified parent!", new DecorationModel(), parent );
}
public void testBreadcrumbWithoutHref()