[DOXIASITETOOLS-158] added meaningful error message about late interpolation
git-svn-id: https://svn.apache.org/repos/asf/maven/doxia/doxia-sitetools/trunk@1736756 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java b/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
index 149aa93..7285916 100644
--- a/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
+++ b/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
@@ -451,6 +451,12 @@
return link;
}
+ if ( link.contains( "${project." ) )
+ {
+ throw new IllegalArgumentException( "site.xml late interpolation ${project.*} expression found in link: '"
+ + link + "'. Use early interpolation ${this.*}" );
+ }
+
final URIPathDescriptor oldPath = new URIPathDescriptor( getOldPath(), link );
return oldPath.rebaseLink( getNewPath() ).toString();
diff --git a/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssemblerTest.java b/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssemblerTest.java
index a342a32..a27a1f8 100644
--- a/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssemblerTest.java
+++ b/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/DecorationModelInheritanceAssemblerTest.java
@@ -74,6 +74,20 @@
assertEquals( "Check scp result", expectedModel, childModel );
assertEquals( "Modified parent!", readModel( "inheritance-parent.xml" ), parentModel );
+
+ // late inheritance in links can't be rebased: check friendly message
+ parentModel.getBannerLeft().setHref( "${project.url}" );
+ childModel = readModel( "inheritance-child.xml" );
+ try
+ {
+ assembler.assembleModelInheritance( NAME, childModel, parentModel, "scp://people.apache.org/doxia",
+ "scp://people.apache.org" );
+ fail( "late interpolation in link should cause IllegalArgumentException" );
+ }
+ catch ( IllegalArgumentException iae )
+ {
+ assertTrue( iae.getMessage().startsWith( "site.xml late interpolation" ) );
+ }
}
/**