[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>