You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2011/12/14 22:13:55 UTC
svn commit: r1214470 - in /maven/shared/trunk/maven-doxia-tools/src:
main/java/org/apache/maven/doxia/tools/
test/java/org/apache/maven/doxia/tools/
test/resources/unit/interpolation-child-test/
test/resources/unit/interpolation-child-test/src/ test/re...
Author: rfscholte
Date: Wed Dec 14 21:13:54 2011
New Revision: 1214470
URL: http://svn.apache.org/viewvc?rev=1214470&view=rev
Log:
Fix MSHARED-217: Separate inheritance and interpolation
Added:
maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/
maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/pom.xml
maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/src/
maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/src/site/
maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/src/site/site.xml
maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-parent-test/
maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-parent-test/pom.xml
Modified:
maven/shared/trunk/maven-doxia-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
maven/shared/trunk/maven-doxia-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
Modified: maven/shared/trunk/maven-doxia-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-doxia-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java?rev=1214470&r1=1214469&r2=1214470&view=diff
==============================================================================
--- maven/shared/trunk/maven-doxia-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java (original)
+++ maven/shared/trunk/maven-doxia-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java Wed Dec 14 21:13:54 2011
@@ -23,6 +23,7 @@ import java.io.File;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
+import java.io.StringWriter;
import java.net.MalformedURLException;
import java.net.URL;
@@ -54,6 +55,7 @@ import org.apache.maven.doxia.site.decor
import org.apache.maven.doxia.site.decoration.Skin;
import org.apache.maven.doxia.site.decoration.inheritance.DecorationModelInheritanceAssembler;
import org.apache.maven.doxia.site.decoration.io.xpp3.DecorationXpp3Reader;
+import org.apache.maven.doxia.site.decoration.io.xpp3.DecorationXpp3Writer;
import org.apache.maven.model.DistributionManagement;
import org.apache.maven.model.Model;
import org.apache.maven.model.Site;
@@ -459,10 +461,9 @@ public class DefaultSiteTool
getDecorationModel( project, parentProject, reactorProjects, localRepository, repositories, siteDirectory,
llocale, props, inputEncoding, outputEncoding );
+ String siteDescriptorContent;
if ( decorationModel == null )
{
- String siteDescriptorContent;
-
try
{
// Note the default is not a super class - it is used when nothing else is found
@@ -473,12 +474,24 @@ public class DefaultSiteTool
{
throw new SiteToolException( "Error reading default site descriptor: " + e.getMessage(), e );
}
-
- siteDescriptorContent = getInterpolatedSiteDescriptorContent( props, project, siteDescriptorContent,
- inputEncoding, outputEncoding );
-
- decorationModel = readDecorationModel( siteDescriptorContent );
}
+ else
+ {
+ try
+ {
+ StringWriter writer = new StringWriter();
+ new DecorationXpp3Writer().write( writer, decorationModel );
+ siteDescriptorContent = writer.toString();
+ }
+ catch ( IOException e )
+ {
+ throw new SiteToolException( "The site descriptor cannot be parsed!", e );
+ }
+ }
+
+ siteDescriptorContent = getInterpolatedSiteDescriptorContent( props, project, siteDescriptorContent,
+ inputEncoding, outputEncoding );
+ decorationModel = readDecorationModel( siteDescriptorContent );
if ( parentProject != null )
{
@@ -1160,16 +1173,15 @@ public class DefaultSiteTool
siteDescriptor = getSiteDescriptorFromBasedir( siteDirectory, project.getBasedir(), locale );
}
- String siteDescriptorContent = null;
- long siteDescriptorLastModified = 0L;
+ DecorationModel decoration = null;
try
{
if ( siteDescriptor != null && siteDescriptor.exists() )
{
getLogger().debug( "Reading site descriptor from " + siteDescriptor );
Reader siteDescriptorReader = ReaderFactory.newXmlReader( siteDescriptor );
- siteDescriptorContent = IOUtil.toString( siteDescriptorReader );
- siteDescriptorLastModified = siteDescriptor.lastModified();
+ decoration = readDecorationModel( siteDescriptorReader );
+ decoration.setLastModified( siteDescriptor.lastModified() );
}
}
catch ( IOException e )
@@ -1177,16 +1189,6 @@ public class DefaultSiteTool
throw new SiteToolException( "The site descriptor cannot be read!", e );
}
- DecorationModel decoration = null;
- if ( siteDescriptorContent != null )
- {
- siteDescriptorContent = getInterpolatedSiteDescriptorContent( props, project, siteDescriptorContent,
- inputEncoding, outputEncoding );
-
- decoration = readDecorationModel( siteDescriptorContent );
- decoration.setLastModified( siteDescriptorLastModified );
- }
-
if ( parentProject != null )
{
getLogger().debug( "Parent project loaded ..." );
@@ -1233,10 +1235,21 @@ public class DefaultSiteTool
private DecorationModel readDecorationModel( String siteDescriptorContent )
throws SiteToolException
{
+ return readDecorationModel( new StringReader( siteDescriptorContent ) );
+ }
+
+ /**
+ * @param siteDescriptorContent not null
+ * @return the decoration model object
+ * @throws SiteToolException if any
+ */
+ private DecorationModel readDecorationModel( Reader siteDescriptorReader )
+ throws SiteToolException
+ {
DecorationModel decoration;
try
{
- decoration = new DecorationXpp3Reader().read( new StringReader( siteDescriptorContent ) );
+ decoration = new DecorationXpp3Reader().read( siteDescriptorReader );
}
catch ( XmlPullParserException e )
{
Modified: maven/shared/trunk/maven-doxia-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-doxia-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java?rev=1214470&r1=1214469&r2=1214470&view=diff
==============================================================================
--- maven/shared/trunk/maven-doxia-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java (original)
+++ maven/shared/trunk/maven-doxia-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java Wed Dec 14 21:13:54 2011
@@ -25,17 +25,23 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
+import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.doxia.site.decoration.DecorationModel;
+import org.apache.maven.doxia.site.decoration.LinkItem;
import org.apache.maven.doxia.site.decoration.Skin;
import org.apache.maven.doxia.tools.stubs.SiteToolMavenProjectStub;
+import org.apache.maven.plugin.testing.stubs.ArtifactStub;
+import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusTestCase;
+import edu.emory.mathcs.backport.java.util.Collections;
+
/**
* @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
* @version $Id$
@@ -289,5 +295,38 @@ public class SiteToolTest
siteDirectory, Locale.getDefault(), "UTF-8", "UTF-8" );
assertNotNull( model );
}
+
+ // MSHARED-217
+ public void testMultiModuleInterpolation()
+ throws Exception
+ {
+ SiteTool tool = (SiteTool) lookup( SiteTool.ROLE );
+ assertNotNull( tool );
+
+ MavenProjectStub parentProject = new SiteToolMavenProjectStub( "interpolation-parent-test" );
+ parentProject.setGroupId( "org.apache.maven.shared.its" );
+ parentProject.setArtifactId( "mshared-217-parent" );
+ parentProject.setVersion( "1.0-SNAPSHOT" );
+ parentProject.setBasedir( null ); // get it from repo
+ parentProject.setName( "MSHARED-217 Parent" );
+ String siteDirectory = "src/site";
+
+ MavenProjectStub childProject = new SiteToolMavenProjectStub( "interpolation-child-test" );
+ childProject.setParent( parentProject );
+ childProject.setGroupId( "org.apache.maven.shared.its" );
+ childProject.setArtifactId( "mshared-217-child" );
+ childProject.setVersion( "1.0-SNAPSHOT" );
+ childProject.setBasedir( null ); // get it from repo
+ childProject.setName( "MSHARED-217 Child" );
+
+ List<MavenProject> reactorProjects = Collections.singletonList( parentProject );
+
+ DecorationModel model =
+ tool.getDecorationModel( childProject, reactorProjects, getLocalRepo(),
+ childProject.getRemoteArtifactRepositories(), siteDirectory, Locale.getDefault(),
+ "ISO-8859-1", "ISO-8859-1" );
+ assertNotNull( model );
+ assertEquals( "MSHARED-217 Child", model.getName() );
+ }
}
Added: maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/pom.xml?rev=1214470&view=auto
==============================================================================
--- maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/pom.xml (added)
+++ maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/pom.xml Wed Dec 14 21:13:54 2011
@@ -0,0 +1,29 @@
+<?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/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.shared.its</groupId>
+ <artifactId>mshared-217-parent</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
+</project>
Added: maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/src/site/site.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/src/site/site.xml?rev=1214470&view=auto
==============================================================================
--- maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/src/site/site.xml (added)
+++ maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-child-test/src/site/site.xml Wed Dec 14 21:13:54 2011
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+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 name="${project.name}" 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 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
+</project>
\ No newline at end of file
Added: maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-parent-test/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-parent-test/pom.xml?rev=1214470&view=auto
==============================================================================
--- maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-parent-test/pom.xml (added)
+++ maven/shared/trunk/maven-doxia-tools/src/test/resources/unit/interpolation-parent-test/pom.xml Wed Dec 14 21:13:54 2011
@@ -0,0 +1,29 @@
+<?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/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.shared.its</groupId>
+ <artifactId>mshared-217-child</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
+</project>