[DOXIASITETOOLS-158] added support for ${this.*} as expression in site.xml interpolation
git-svn-id: https://svn.apache.org/repos/asf/maven/doxia/doxia-sitetools/trunk@1736261 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java b/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
index 5f33e15..0da36cd 100644
--- a/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
+++ b/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
@@ -468,7 +468,7 @@
// DecorationModel back to String to interpolate, then go back to DecorationModel
String siteDescriptorContent = decorationModelToString( decorationModel );
- siteDescriptorContent = getInterpolatedSiteDescriptorContent( project, siteDescriptorContent );
+ siteDescriptorContent = getInterpolatedSiteDescriptorContent( project, siteDescriptorContent, "project" );
decorationModel = readDecorationModel( siteDescriptorContent );
@@ -497,11 +497,11 @@
{
checkNotNull( "props", props );
- return getInterpolatedSiteDescriptorContent( aProject, siteDescriptorContent );
+ return getInterpolatedSiteDescriptorContent( aProject, siteDescriptorContent, "project" );
}
private String getInterpolatedSiteDescriptorContent( MavenProject aProject,
- String siteDescriptorContent )
+ String siteDescriptorContent, String prefix )
throws SiteToolException
{
checkNotNull( "aProject", aProject );
@@ -527,7 +527,7 @@
try
{
// FIXME: this does not escape xml entities, see MSITE-226, PLXCOMP-118
- return interpolator.interpolate( siteDescriptorContent, "project" );
+ return interpolator.interpolate( siteDescriptorContent, prefix );
}
catch ( InterpolationException e )
{
@@ -1116,6 +1116,9 @@
String siteDescriptorContent = readSiteDescriptor( siteDescriptorReader, project.getId() );
+ // interpolate ${this.*}
+ siteDescriptorContent = getInterpolatedSiteDescriptorContent( project, siteDescriptorContent, "this" );
+
decoration = readDecorationModel( siteDescriptorContent );
decoration.setLastModified( siteDescriptor.lastModified() );
}
diff --git a/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java b/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
index 2c83494..067233e 100644
--- a/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
+++ b/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
@@ -35,6 +35,8 @@
import org.apache.maven.doxia.site.decoration.DecorationModel;
import org.apache.maven.doxia.site.decoration.Skin;
import org.apache.maven.doxia.tools.stubs.SiteToolMavenProjectStub;
+import org.apache.maven.model.DistributionManagement;
+import org.apache.maven.model.Site;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusTestCase;
@@ -346,17 +348,11 @@
assertNotNull( tool );
SiteToolMavenProjectStub parentProject = new SiteToolMavenProjectStub( "interpolation-parent-test" );
- parentProject.setGroupId( "org.apache.maven.shared.its" );
- parentProject.setArtifactId( "mshared-217-parent" );
- parentProject.setVersion( "1.0-SNAPSHOT" );
- parentProject.setName( "MSHARED-217 Parent" );
+ parentProject.setDistgributionManagementSiteUrl( "dav:https://davs.codehaus.org/site" );
SiteToolMavenProjectStub 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.setName( "MSHARED-217 Child" );
+ childProject.setDistgributionManagementSiteUrl( "dav:https://davs.codehaus.org/site/child" );
List<MavenProject> reactorProjects = Collections.<MavenProject>singletonList( parentProject );
diff --git a/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/stubs/SiteToolMavenProjectStub.java b/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/stubs/SiteToolMavenProjectStub.java
index 8b1a4ed..96c1883 100644
--- a/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/stubs/SiteToolMavenProjectStub.java
+++ b/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/stubs/SiteToolMavenProjectStub.java
@@ -29,7 +29,9 @@
import org.apache.maven.artifact.repository.DefaultArtifactRepository;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
import org.apache.maven.model.Build;
+import org.apache.maven.model.DistributionManagement;
import org.apache.maven.model.Model;
+import org.apache.maven.model.Site;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
@@ -44,6 +46,8 @@
private File basedir;
+ private DistributionManagement distributionManagement;
+
public SiteToolMavenProjectStub( String projectName )
{
basedir = new File( super.getBasedir() + "/src/test/resources/unit/" + projectName );
@@ -115,4 +119,17 @@
return Collections.singletonList( repository );
}
+
+ public void setDistgributionManagementSiteUrl( String url )
+ {
+ Site site = new Site();
+ site.setUrl( url );
+ distributionManagement = new DistributionManagement();
+ distributionManagement.setSite( site );
+ }
+
+ public DistributionManagement getDistributionManagement()
+ {
+ return distributionManagement;
+ }
}
diff --git a/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/pom.xml b/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/pom.xml
index a0e8f4a..198ff64 100644
--- a/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/pom.xml
+++ b/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/pom.xml
@@ -23,7 +23,10 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.shared.its</groupId>
- <artifactId>mshared-217-parent</artifactId>
+ <artifactId>mshared-217-child</artifactId>
<version>1.0-SNAPSHOT</version>
+ <name>MSHARED-217 Child</name>
+ <url>http://maven.apache.org/mshared-217/child</url>
+
</project>
diff --git a/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/pom.xml b/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/pom.xml
index b01a1e6..1923801 100644
--- a/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/pom.xml
+++ b/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/pom.xml
@@ -23,7 +23,10 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.shared.its</groupId>
- <artifactId>mshared-217-child</artifactId>
+ <artifactId>mshared-217-parent</artifactId>
<version>1.0-SNAPSHOT</version>
+ <name>MSHARED-217 Parent</name>
+ <url>http://maven.apache.org/mshared-217</url>
+
</project>
diff --git a/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml b/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml
index f5792de..46175d9 100644
--- a/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml
+++ b/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml
@@ -27,8 +27,12 @@
</bannerLeft>
<body>
+ <links>
+ <item name="${this.name}" href="${this.url}" />
+ </links>
<breadcrumbs>
<item name="Maven" href="http://maven.apache.org/index.html" />
+ <item name="${this.name}" href="${this.url}" />
</breadcrumbs>
</body>
</project>