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 2016/03/26 15:27:37 UTC
svn commit: r1736695 - in
/maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src:
main/java/org/apache/maven/doxia/tools/
test/java/org/apache/maven/doxia/tools/
test/java/org/apache/maven/doxia/tools/stubs/
test/resources/unit/interpolation-ch...
Author: hboutemy
Date: Sat Mar 26 14:27:37 2016
New Revision: 1736695
URL: http://svn.apache.org/viewvc?rev=1736695&view=rev
Log:
[DOXIASITETOOLS-158] fixed late interpolation of project properties
Modified:
maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/stubs/SiteToolMavenProjectStub.java
maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/pom.xml
maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/pom.xml
maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml
Modified: maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java?rev=1736695&r1=1736694&r2=1736695&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java Sat Mar 26 14:27:37 2016
@@ -468,7 +468,8 @@ public class DefaultSiteTool
// DecorationModel back to String to interpolate, then go back to DecorationModel
String siteDescriptorContent = decorationModelToString( decorationModel );
- siteDescriptorContent = getInterpolatedSiteDescriptorContent( project, siteDescriptorContent, "project" );
+ // "classical" late interpolation, after full inheritance
+ siteDescriptorContent = getInterpolatedSiteDescriptorContent( project, siteDescriptorContent, false );
decorationModel = readDecorationModel( siteDescriptorContent );
@@ -497,11 +498,12 @@ public class DefaultSiteTool
{
checkNotNull( "props", props );
- return getInterpolatedSiteDescriptorContent( aProject, siteDescriptorContent, "project" );
+ // "classical" late interpolation
+ return getInterpolatedSiteDescriptorContent( aProject, siteDescriptorContent, false );
}
private String getInterpolatedSiteDescriptorContent( MavenProject aProject,
- String siteDescriptorContent, String prefix )
+ String siteDescriptorContent, boolean isEarly )
throws SiteToolException
{
checkNotNull( "aProject", aProject );
@@ -522,12 +524,15 @@ public class DefaultSiteTool
interpolator.addValueSource( new ObjectBasedValueSource( aProject ) );
- interpolator.addValueSource( new MapBasedValueSource( aProject.getProperties() ) );
+ if ( !isEarly )
+ {
+ interpolator.addValueSource( new MapBasedValueSource( aProject.getProperties() ) );
+ }
try
{
// FIXME: this does not escape xml entities, see MSITE-226, PLXCOMP-118
- return interpolator.interpolate( siteDescriptorContent, prefix );
+ return interpolator.interpolate( siteDescriptorContent, isEarly ? "this" : "project" );
}
catch ( InterpolationException e )
{
@@ -1102,7 +1107,7 @@ public class DefaultSiteTool
siteDescriptor = getSiteDescriptor( siteDirectory, locale );
}
- // 2. read DecorationModel from site descriptor File
+ // 2. read DecorationModel from site descriptor File and do early interpolation (${this.*})
DecorationModel decoration = null;
Reader siteDescriptorReader = null;
try
@@ -1116,8 +1121,8 @@ public class DefaultSiteTool
String siteDescriptorContent = readSiteDescriptor( siteDescriptorReader, project.getId() );
- // interpolate ${this.*}
- siteDescriptorContent = getInterpolatedSiteDescriptorContent( project, siteDescriptorContent, "this" );
+ // interpolate ${this.*} = early interpolation
+ siteDescriptorContent = getInterpolatedSiteDescriptorContent( project, siteDescriptorContent, true );
decoration = readDecorationModel( siteDescriptorContent );
decoration.setLastModified( siteDescriptor.lastModified() );
Modified: maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java?rev=1736695&r1=1736694&r2=1736695&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java Sat Mar 26 14:27:37 2016
@@ -20,11 +20,12 @@ package org.apache.maven.doxia.tools;
*/
import java.io.File;
-
+import java.io.Writer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Locale;
@@ -33,14 +34,16 @@ import org.apache.maven.artifact.reposit
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.site.decoration.io.xpp3.DecorationXpp3Writer;
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;
import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.WriterFactory;
/**
* @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
@@ -360,7 +363,40 @@ public class SiteToolTest
Locale.getDefault(), childProject, reactorProjects,
getLocalRepo(), childProject.getRemoteArtifactRepositories() );
assertNotNull( model );
+
+ writeModel( model, "unit/interpolation-child-test/effective-site.xml" );
+
assertEquals( "MSHARED-217 Child", model.getName() );
+ // late (classical) interpolation
assertEquals( "project.artifactId = mshared-217-child", model.getBannerLeft().getName() );
+ // early interpolation: DOXIASITETOOLS-158
+ assertEquals( "this.artifactId = mshared-217-parent", model.getBannerRight().getName() );
+ // href rebase
+ assertEquals( "../../index.html", model.getBody().getBreadcrumbs().iterator().next().getHref() );
+ Iterator<LinkItem> links = model.getBody().getLinks().iterator();
+ // early interpolation: DOXIASITETOOLS-158
+ assertEquals( "this.name = MSHARED-217 Parent", links.next().getName() );
+ // Env Var interpolation
+ String val = links.next().getName();
+ assertTrue( val.startsWith( "PATH = " ) );
+ assertFalse( val.contains( "${" ) );
+ // late interpolation of project properties
+ assertEquals( "my_property = from child pom.xml", links.next().getName() );
+ // early interpolation of project properties: DOXIASITETOOLS-158
+ //assertEquals( "this.my_property = from parent pom.xml", links.next().getName() );
+ }
+
+ private void writeModel( DecorationModel model, String to )
+ throws Exception
+ {
+ Writer writer = WriterFactory.newXmlWriter( getTestFile( "target/test-classes/" + to ) );
+ try
+ {
+ new DecorationXpp3Writer().write( writer, model );
+ }
+ finally
+ {
+ IOUtil.close( writer );
+ }
}
}
Modified: maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/stubs/SiteToolMavenProjectStub.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/stubs/SiteToolMavenProjectStub.java?rev=1736695&r1=1736694&r2=1736695&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/stubs/SiteToolMavenProjectStub.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/stubs/SiteToolMavenProjectStub.java Sat Mar 26 14:27:37 2016
@@ -24,6 +24,7 @@ import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Properties;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.DefaultArtifactRepository;
@@ -48,6 +49,8 @@ public class SiteToolMavenProjectStub
private DistributionManagement distributionManagement;
+ private Properties properties;
+
public SiteToolMavenProjectStub( String projectName )
{
basedir = new File( super.getBasedir() + "/src/test/resources/unit/" + projectName );
@@ -70,6 +73,7 @@ public class SiteToolMavenProjectStub
setName( model.getName() );
setUrl( model.getUrl() );
setPackaging( model.getPackaging() );
+ setProperties( model.getProperties() );
build = new Build();
build.setFinalName( model.getArtifactId() );
@@ -106,6 +110,7 @@ public class SiteToolMavenProjectStub
return basedir;
}
+ /** {@inheritDoc} */
public void setBasedir( File basedir )
{
this.basedir = basedir;
@@ -120,6 +125,18 @@ public class SiteToolMavenProjectStub
return Collections.singletonList( repository );
}
+ /** {@inheritDoc} */
+ public Properties getProperties()
+ {
+ return properties;
+ }
+
+ /** {@inheritDoc} */
+ public void setProperties( Properties properties )
+ {
+ this.properties = properties;
+ }
+
public void setDistgributionManagementSiteUrl( String url )
{
Site site = new Site();
@@ -128,6 +145,7 @@ public class SiteToolMavenProjectStub
distributionManagement.setSite( site );
}
+ /** {@inheritDoc} */
public DistributionManagement getDistributionManagement()
{
return distributionManagement;
Modified: maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/pom.xml
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/pom.xml?rev=1736695&r1=1736694&r2=1736695&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/pom.xml (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-child-test/pom.xml Sat Mar 26 14:27:37 2016
@@ -29,4 +29,7 @@ under the License.
<name>MSHARED-217 Child</name>
<url>http://maven.apache.org/mshared-217/child</url>
+ <properties>
+ <my_property>from child pom.xml</my_property>
+ </properties>
</project>
Modified: maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/pom.xml
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/pom.xml?rev=1736695&r1=1736694&r2=1736695&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/pom.xml (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/pom.xml Sat Mar 26 14:27:37 2016
@@ -29,4 +29,7 @@ under the License.
<name>MSHARED-217 Parent</name>
<url>http://maven.apache.org/mshared-217</url>
+ <properties>
+ <my_property>from parent pom.xml</my_property>
+ </properties>
</project>
Modified: maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml?rev=1736695&r1=1736694&r2=1736695&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/resources/unit/interpolation-parent-test/src/site/site.xml Sat Mar 26 14:27:37 2016
@@ -25,14 +25,23 @@ under the License.
<bannerLeft>
<name>project.artifactId = ${project.artifactId}</name>
</bannerLeft>
+ <bannerRight>
+ <name>this.artifactId = ${this.artifactId}</name>
+ </bannerRight>
<body>
<links>
- <item name="${this.name}" href="${this.url}" />
+ <item name="this.name = ${this.name}" href="${this.url}" />
+ <!-- interpolation of env vars -->
+ <item name="PATH = ${PATH}" href="${this.url}" />
+ <!-- late interpolation of properties -->
+ <item name="my_property = ${my_property}" href="." />
+ <!-- early interpolation of properties -->
+ <item name="this.my_property = ${this.my_property}" href="." />
</links>
<breadcrumbs>
- <item name="Maven" href="http://maven.apache.org/index.html" />
- <item name="${this.name}" href="${this.url}" />
+ <item name="Maven" href="../index.html" />
+ <item name="project.name = ${project.name}" href="${this.url}" />
</breadcrumbs>
</body>
</project>