Author: brett
Date: Wed Dec 21 18:57:50 2005
New Revision: 358451
URL: http://svn.apache.org/viewcvs?rev=358451&view=rev
Log:
- move doxia's site renderer to a model for the decoration, while retaining the
<custom> element to allow arbitrary extension that can be used from the
velocity template.
- simplify various parts of the API
- add inheritance of the site descriptor from a file based source
Modified:
maven/plugins/trunk/maven-site-plugin/pom.xml
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDescriptorAttachMojo.java
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java
maven/plugins/trunk/maven-site-plugin/src/main/resources/org/apache/maven/plugins/site/maven-site.vm
Modified: maven/plugins/trunk/maven-site-plugin/pom.xml
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-site-plugin/pom.xml?rev=358451&r1=358450&r2=358451&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-site-plugin/pom.xml Wed Dec 21 18:57:50 2005
@@ -2,13 +2,16 @@
<parent>
<artifactId>maven-plugin-parent</artifactId>
<groupId>org.apache.maven.plugins</groupId>
- <version>2.0</version>
+ <version>2.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>maven-site-plugin</artifactId>
<packaging>maven-plugin</packaging>
<name>Maven Site plugin</name>
<version>2.0-beta-5-SNAPSHOT</version>
+ <prerequisites>
+ <maven>2.0.2-SNAPSHOT</maven>
+ </prerequisites>
<developers>
<developer>
<id>vsiveton</id>
@@ -54,14 +57,21 @@
<artifactId>maven-project</artifactId>
</dependency>
<dependency>
- <groupId>org.codehaus.doxia</groupId>
+ <groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-site-renderer</artifactId>
- <version>1.0-alpha-6-SNAPSHOT</version>
+ <version>1.0-alpha-7-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <!-- TODO: upgrade p-velo -->
+ <groupId>plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.maven.reporting</groupId>
<artifactId>maven-reporting-api</artifactId>
- <version>2.0</version>
+ <version>2.0.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
Modified:
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java?rev=358451&r1=358450&r2=358451&view=diff
==============================================================================
---
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java
(original)
+++
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractSiteMojo.java
Wed Dec 21 18:57:50 2005
@@ -71,13 +71,15 @@
* @param locale the locale
* @return the site descriptor path
*/
- protected File getSiteDescriptorFile( Locale locale )
+ protected File getSiteDescriptorFile( File basedir, Locale locale )
{
- File siteDescriptor = new File( siteDirectory, "site_" +
locale.getLanguage() + ".xml" );
+ // TODO: get proper siteDirectory
+
+ File siteDescriptor = new File( basedir, "src/site/site_" +
locale.getLanguage() + ".xml" );
if ( !siteDescriptor.exists() )
{
- siteDescriptor = new File( siteDirectory, "site.xml" );
+ siteDescriptor = new File( basedir, "src/site/site.xml" );
}
return siteDescriptor;
}
Modified:
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDescriptorAttachMojo.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDescriptorAttachMojo.java?rev=358451&r1=358450&r2=358451&view=diff
==============================================================================
---
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDescriptorAttachMojo.java
(original)
+++
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteDescriptorAttachMojo.java
Wed Dec 21 18:57:50 2005
@@ -42,6 +42,13 @@
*/
private Artifact artifact;
+ /**
+ * @parameter expression="${basedir}"
+ * @required
+ * @readonly
+ */
+ private File basedir;
+
public void execute()
throws MojoExecutionException
{
@@ -51,7 +58,7 @@
{
Locale locale = (Locale) iterator.next();
- File descriptorFile = getSiteDescriptorFile( locale );
+ File descriptorFile = getSiteDescriptorFile( basedir, locale );
if ( descriptorFile.exists() )
{
Modified:
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java?rev=358451&r1=358450&r2=358451&view=diff
==============================================================================
---
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java
(original)
+++
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java
Wed Dec 21 18:57:50 2005
@@ -16,19 +16,24 @@
* limitations under the License.
*/
+import org.apache.maven.doxia.module.xdoc.XdocSiteModule;
+import org.apache.maven.doxia.site.decoration.DecorationModel;
+import
org.apache.maven.doxia.site.decoration.inheritance.DecorationModelInheritanceAssembler;
+import org.apache.maven.doxia.site.decoration.io.xpp3.DecorationXpp3Reader;
+import org.apache.maven.doxia.siterenderer.Renderer;
+import org.apache.maven.doxia.siterenderer.RendererException;
+import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
+import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.apache.maven.reporting.MavenReport;
import org.apache.maven.reporting.MavenReportException;
-import org.codehaus.doxia.module.xdoc.XdocSiteModule;
-import org.codehaus.plexus.siterenderer.Renderer;
-import org.codehaus.plexus.siterenderer.RendererException;
-import org.codehaus.plexus.siterenderer.sink.SiteRendererSink;
import org.codehaus.plexus.util.DirectoryScanner;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import java.io.File;
import java.io.FileOutputStream;
@@ -37,6 +42,7 @@
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.OutputStreamWriter;
+import java.io.StringReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
@@ -166,6 +172,20 @@
private List reports;
/**
+ * Convenience parameter that allows you to disable report generation.
+ *
+ * @parameter expression="${generateReports}" default-value="true"
+ */
+ private boolean generateReports;
+
+ /**
+ * The component for assembling inheritance.
+ *
+ * @component
+ */
+ private DecorationModelInheritanceAssembler assembler;
+
+ /**
* Generate the project site
* <p/>
* throws MojoExecutionException if any
@@ -175,10 +195,11 @@
public void execute()
throws MojoExecutionException, MojoFailureException
{
+ ClassLoader templateClassLoader;
if ( templateDirectory == null )
{
- siteRenderer.setTemplateClassLoader(
SiteMojo.class.getClassLoader() );
+ templateClassLoader = SiteMojo.class.getClassLoader();
}
else
{
@@ -190,13 +211,7 @@
"This templateDirectory=[" + templateDirectory + "]
doesn't exist." );
}
- URL templateDirectoryUrl = templateDirectory.toURL();
-
- URL[] urls = {templateDirectoryUrl};
-
- URLClassLoader urlClassloader = new URLClassLoader( urls );
-
- siteRenderer.setTemplateClassLoader( urlClassloader );
+ templateClassLoader = new URLClassLoader( new
URL[]{templateDirectory.toURL()} );
}
catch ( MalformedURLException e )
{
@@ -301,25 +316,31 @@
// Exception if a file is duplicate
checkDuplicates( duplicate, locale );
- String siteDescriptor = getSiteDescriptor( reports, locale,
projectInfos, projectReports );
+ DecorationModel decoration = getDecorationModel( reports,
locale, projectInfos, projectReports );
+
+ SiteRenderingContext context = new SiteRenderingContext();
+ context.setTemplate( template );
+ context.setTemplateProperties( attributes );
+ context.setLocale( locale );
+ context.setTemplateClassLoader( templateClassLoader );
+ context.setDecoration( decoration );
//Generate reports
List generatedReportsFileName = Collections.EMPTY_LIST;
if ( reports != null )
{
- generatedReportsFileName =
- generateReportsPages( reports, locale,
outputDirectory, defaultLocale, siteDescriptor );
+ generatedReportsFileName = generateReportsPages( reports,
outputDirectory, defaultLocale, context );
}
//Generate overview pages
if ( projectInfos.size() > 0 )
{
- generateProjectInfoPage( siteDescriptor, locale,
projectInfos, outputDirectory );
+ generateProjectInfoPage( projectInfos, outputDirectory,
context );
}
if ( projectReports.size() > 0 )
{
- generateProjectReportsPage( siteDescriptor, locale,
projectReports, outputDirectory );
+ generateProjectReportsPage( projectReports,
outputDirectory, context );
}
// Try to generate the index.html
@@ -331,7 +352,7 @@
else
{
getLog().info( "Generate an index file for the " +
displayLanguage + " version." );
- generateIndexPage( siteDescriptor, locale, outputDirectory
);
+ generateIndexPage( outputDirectory, context );
}
// TODO: Be good to generate a module's summary page thats
referenced off the
@@ -349,7 +370,7 @@
}
}
- siteRenderer.render( siteDirectoryFile, outputDirectory,
siteDescriptor, template, attributes, locale );
+ siteRenderer.render( siteDirectoryFile, outputDirectory,
context );
// Check if ${basedir}/xdocs is existing
if ( xdocDirectory.exists() )
@@ -360,9 +381,8 @@
{
XdocSiteModule xdoc = new XdocSiteModule();
- siteRenderer.render( xdocDirectoryFile,
outputDirectory, xdoc.getSourceDirectory(), xdoc
- .getExtension(), xdoc.getParserId(),
siteDescriptor, template, attributes, locale,
- outputEncoding );
+ siteRenderer.render( xdocDirectoryFile,
outputDirectory, xdoc.getSourceDirectory(),
+ xdoc.getExtension(),
xdoc.getParserId(), context, outputEncoding );
}
}
@@ -376,8 +396,7 @@
if ( generatedSiteDirectory.exists() )
{
- siteRenderer.render( generatedSiteDirectory,
outputDirectory, siteDescriptor, template, attributes,
- locale );
+ siteRenderer.render( generatedSiteDirectory,
outputDirectory, context );
}
}
}
@@ -395,28 +414,140 @@
}
}
+ private DecorationModel getDecorationModel( List reports, Locale locale,
List projectInfos, List projectReports )
+ throws MojoExecutionException
+ {
+ Map props = new HashMap();
+
+ // TODO: can we replace these with an XML tag?
+ if ( reports != null )
+ {
+ props.put( "reports", getReportsMenu( locale, projectInfos,
projectReports ) );
+ }
+ else
+ {
+ props.put( "reports", "" );
+ }
+
+ // we require child modules and reactors to process module menu
+
+ if ( addModules && reactorProjects.size() > 1 &&
project.getModules().size() > 0 )
+ {
+ props.put( "modules", getModulesMenu( locale ) );
+ }
+ else
+ {
+ props.put( "modules", "" );
+ }
+
+ return getDecorationModel( project, locale, props );
+ }
+
+ private DecorationModel getDecorationModel( MavenProject project, Locale
locale, Map origProps )
+ throws MojoExecutionException
+ {
+ Map props = new HashMap( origProps );
+
+ // TODO: this isn't taking into account the pom in the repository. It
should be resolving it in some way that
+ // is compatible with the parent resolution and USD
+ File siteDescriptor = getSiteDescriptorFile( project.getBasedir(),
locale );
+
+ String siteDescriptorContent;
+
+ try
+ {
+ if ( siteDescriptor.exists() )
+ {
+ siteDescriptorContent = FileUtils.fileRead( siteDescriptor );
+ }
+ else
+ {
+ siteDescriptorContent = IOUtil.toString(
getClass().getResourceAsStream( "/default-site.xml" ) );
+ }
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "The site descriptor cannot be
read!", e );
+ }
+
+ props.put( "outputEncoding", outputEncoding );
+
+ // TODO: interpolate ${project.*} in general
+
+ if ( project.getName() != null )
+ {
+ props.put( "project.name", project.getName() );
+ }
+ else
+ {
+ props.put( "project.name", "NO_PROJECT_NAME_SET" );
+ }
+
+ if ( project.getUrl() != null )
+ {
+ props.put( "project.url", project.getUrl() );
+ }
+ else
+ {
+ props.put( "project.url", "NO_PROJECT_URL_SET" );
+ }
+
+ siteDescriptorContent = StringUtils.interpolate(
siteDescriptorContent, props );
+
+ DecorationModel decoration;
+ try
+ {
+ decoration = new DecorationXpp3Reader().read( new StringReader(
siteDescriptorContent ) );
+ }
+ catch ( XmlPullParserException e )
+ {
+ throw new MojoExecutionException( "Error parsing site descriptor",
e );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Error reading site descriptor",
e );
+ }
+
+ if ( project.getParent() != null )
+ {
+ props.put( "parentProject", getProjectParentMenu( locale ) );
+
+ DecorationModel parent = getDecorationModel( project.getParent(),
locale, props );
+
+ assembler.assembleModelInheritance( decoration, parent );
+ }
+
+ return decoration;
+ }
+
private List filterReports( List reports )
{
List filteredReports = new ArrayList( reports.size() );
- for ( Iterator i = reports.iterator(); i.hasNext(); )
+ if ( generateReports )
{
- MavenReport report = (MavenReport) i.next();
- try
+ for ( Iterator i = reports.iterator(); i.hasNext(); )
{
- if ( report.canGenerateReport() )
+ MavenReport report = (MavenReport) i.next();
+ //noinspection ErrorNotRethrown,UnusedCatchParameter
+ try
+ {
+ if ( report.canGenerateReport() )
+ {
+ filteredReports.add( report );
+ }
+ }
+ catch ( AbstractMethodError e )
{
+
+ // the canGenerateReport() has been added just before the
2.0 release and will cause all the reporting
+ // plugins with an earlier version to fail (most of the
codehaus mojo now fails)
+ // be nice with them, output a warning and don't let them
break anything
+
+ getLog().warn( "Error loading report " +
report.getClass().getName() +
+ " - AbstractMethodError: canGenerateReport()" );
filteredReports.add( report );
}
}
- // the canGenerateReport() has been added just before the 2.0
release and will cause all the reporting
- // plugins with an earlier version to fail (most of the codehaus
mojo now fails)
- // be nice with them, output a warning and don't let them break
anything
- catch ( AbstractMethodError e )
- {
- getLog().warn( "Error loading report " +
report.getClass().getName() +
- " - AbstractMethodError: canGenerateReport()" );
- filteredReports.add( report );
- }
}
return filteredReports;
}
@@ -609,95 +740,18 @@
}
/**
- * @param reports a list of reports
- * @param locale the current locale
- * @return the inpustream
- * @throws org.apache.maven.plugin.MojoExecutionException
- * is any
- */
- private String getSiteDescriptor( List reports, Locale locale, List
projectInfos, List projectReports )
- throws MojoExecutionException
- {
- File siteDescriptor = getSiteDescriptorFile( locale );
-
- String siteDescriptorContent;
-
- try
- {
- if ( siteDescriptor.exists() )
- {
- siteDescriptorContent = FileUtils.fileRead( siteDescriptor );
- }
- else
- {
- siteDescriptorContent = IOUtil.toString(
getClass().getResourceAsStream( "/default-site.xml" ) );
- }
- }
- catch ( IOException e )
- {
- throw new MojoExecutionException( "The site descriptor cannot be
read!", e );
- }
-
- Map props = new HashMap();
-
- props.put( "outputEncoding", outputEncoding );
-
- if ( reports != null )
- {
- props.put( "reports", getReportsMenu( locale, projectInfos,
projectReports ) );
- }
-
- if ( project.getParent() != null )
- {
- props.put( "parentProject", getProjectParentMenu( locale ) );
- }
-
- // we require child modules and reactors to process module menu
-
- if ( ( addModules && reactorProjects.size() > 1 &&
project.getModules().size() > 0 ) )
- {
- props.put( "modules", getModulesMenu( locale ) );
- }
-
- // TODO: interpolate ${project.*} in general
-
- if ( project.getName() != null )
- {
- props.put( "project.name", project.getName() );
- }
- else
- {
- props.put( "project.name", "NO_PROJECT_NAME_SET" );
- }
-
- if ( project.getUrl() != null )
- {
- props.put( "project.url", project.getUrl() );
- }
- else
- {
- props.put( "project.url", "NO_PROJECT_URL_SET" );
- }
-
- siteDescriptorContent = StringUtils.interpolate(
siteDescriptorContent, props );
-
- return siteDescriptorContent;
- }
-
- /**
* Generate an index page.
*
- * @param siteDescriptor
- * @param locale
* @param outputDirectory
*/
- private void generateIndexPage( String siteDescriptor, Locale locale, File
outputDirectory )
+ private void generateIndexPage( File outputDirectory, SiteRenderingContext
context )
throws RendererException, IOException
{
String outputFileName = "index.html";
- SiteRendererSink sink = siteRenderer.createSink( siteDirectory,
outputFileName, siteDescriptor );
+ SiteRendererSink sink = siteRenderer.createSink( siteDirectory,
outputFileName );
+ Locale locale = context.getLocale();
String title = i18n.getString( "site-plugin", locale,
"report.index.title" ).trim() + " " + project.getName();
sink.head();
@@ -733,7 +787,7 @@
File outputFile = new File( outputDirectory, outputFileName );
siteRenderer.generateDocument( new OutputStreamWriter( new
FileOutputStream( outputFile ), outputEncoding ),
- template, attributes, sink, locale );
+ sink, context );
}
// Generate specific pages
@@ -742,11 +796,10 @@
* Generate reports pages
*
* @param reports
- * @param locale
* @param localeOutputDirectory
*/
- private List generateReportsPages( List reports, Locale locale, File
localeOutputDirectory, Locale defaultLocale,
- String siteDescriptor )
+ private List generateReportsPages( List reports, File
localeOutputDirectory, Locale defaultLocale,
+ SiteRenderingContext context )
throws RendererException, IOException, MavenReportException
{
List generatedReportsFileName = new ArrayList();
@@ -755,6 +808,7 @@
{
MavenReport report = (MavenReport) j.next();
+ Locale locale = context.getLocale();
getLog().info( "Generate \"" + report.getName( locale ) + "\"
report." );
report.setReportOutputDirectory( localeOutputDirectory );
@@ -772,7 +826,7 @@
String outputFileName = reportFileName + ".html";
- SiteRendererSink sink = siteRenderer.createSink( siteDirectory,
outputFileName, siteDescriptor );
+ SiteRendererSink sink = siteRenderer.createSink( siteDirectory,
outputFileName );
report.generate( sink, locale );
@@ -786,8 +840,7 @@
}
siteRenderer.generateDocument(
- new OutputStreamWriter( new FileOutputStream( outputFile
), outputEncoding ), template, attributes,
- sink, locale );
+ new OutputStreamWriter( new FileOutputStream( outputFile
), outputEncoding ), sink, context );
}
}
return generatedReportsFileName;
@@ -796,19 +849,17 @@
/**
* Generates Project Info Page
*
- * @param siteDescriptor site.xml
- * @param locale the locale used
* @param projectInfos list of projectInfos
* @param outputDirectory directory that will contain the generated
project info page
*/
- private void generateProjectInfoPage( String siteDescriptor, Locale
locale, List projectInfos,
- File outputDirectory )
+ private void generateProjectInfoPage( List projectInfos, File
outputDirectory, SiteRenderingContext context )
throws RendererException, IOException
{
String outputFileName = "project-info.html";
- SiteRendererSink sink = siteRenderer.createSink( siteDirectory,
outputFileName, siteDescriptor );
+ SiteRendererSink sink = siteRenderer.createSink( siteDirectory,
outputFileName );
+ Locale locale = context.getLocale();
String title = i18n.getString( "site-plugin", locale,
"report.information.title" );
sink.head();
@@ -879,25 +930,23 @@
File outputFile = new File( outputDirectory, outputFileName );
siteRenderer.generateDocument( new OutputStreamWriter( new
FileOutputStream( outputFile ), outputEncoding ),
- template, attributes, sink, locale );
+ sink, context );
}
/**
* Generates the Project Report Pages
*
- * @param siteDescriptor site.xml
- * @param locale the locale used
* @param projectReports list of project reports
* @param outputDirectory directory that will contain the generated
project report pages
*/
- private void generateProjectReportsPage( String siteDescriptor, Locale
locale, List projectReports,
- File outputDirectory )
+ private void generateProjectReportsPage( List projectReports, File
outputDirectory, SiteRenderingContext context )
throws RendererException, IOException
{
String outputFileName = "maven-reports.html";
- SiteRendererSink sink = siteRenderer.createSink( siteDirectory,
outputFileName, siteDescriptor );
+ SiteRendererSink sink = siteRenderer.createSink( siteDirectory,
outputFileName );
+ Locale locale = context.getLocale();
String title = i18n.getString( "site-plugin", locale,
"report.project.title" );
sink.head();
@@ -964,7 +1013,7 @@
File outputFile = new File( outputDirectory, outputFileName );
siteRenderer.generateDocument( new OutputStreamWriter( new
FileOutputStream( outputFile ), outputEncoding ),
- template, attributes, sink, locale );
+ sink, context );
}
/**
@@ -972,6 +1021,7 @@
*
* @param outputDir the output directory
* @throws IOException if any
+ * @todo move to skin functionality in site renderer
*/
private void copyResources( File outputDir )
throws IOException
@@ -1066,12 +1116,16 @@
private File getOutputDirectory( Locale locale, Locale defaultLocale )
{
+ File file;
if ( locale.getLanguage().equals( defaultLocale.getLanguage() ) )
{
- return outputDirectory;
+ file = outputDirectory;
}
-
- return new File( outputDirectory, locale.getLanguage() );
+ else
+ {
+ file = new File( outputDirectory, locale.getLanguage() );
+ }
+ return file;
}
/**
@@ -1091,28 +1145,29 @@
{
String currentFile = (String) it.next();
+ int endIndex = currentFile.lastIndexOf( "." );
if ( currentFile.lastIndexOf( File.separator ) == -1 )
{
// ignore files directly in the directory
- continue;
}
-
- if ( currentFile.lastIndexOf( "." ) == -1 ||
currentFile.startsWith( "." ) )
+ else if ( endIndex == -1 || currentFile.startsWith( "." ) )
{
// ignore files without extension
- continue;
}
+ else
+ {
- String key = currentFile.substring( currentFile.indexOf(
File.separator ) + 1, currentFile
- .lastIndexOf( "." ) );
+ int beginIndex = currentFile.indexOf( File.separator ) + 1;
+ String key = currentFile.substring( beginIndex, endIndex
).toLowerCase( Locale.getDefault() );
- List tmp = (List) duplicate.get( key.toLowerCase() );
- if ( tmp == null )
- {
- tmp = new ArrayList();
- duplicate.put( key.toLowerCase(), tmp );
+ List tmp = (List) duplicate.get( key );
+ if ( tmp == null )
+ {
+ tmp = new ArrayList();
+ duplicate.put( key, tmp );
+ }
+ tmp.add( currentFile );
}
- tmp.add( currentFile );
}
}
Modified:
maven/plugins/trunk/maven-site-plugin/src/main/resources/org/apache/maven/plugins/site/maven-site.vm
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-site-plugin/src/main/resources/org/apache/maven/plugins/site/maven-site.vm?rev=358451&r1=358450&r2=358451&view=diff
==============================================================================
---
maven/plugins/trunk/maven-site-plugin/src/main/resources/org/apache/maven/plugins/site/maven-site.vm
(original)
+++
maven/plugins/trunk/maven-site-plugin/src/main/resources/org/apache/maven/plugins/site/maven-site.vm
Wed Dec 21 18:57:50 2005
@@ -1,30 +1,28 @@
-#macro ( banner $id )
- #if ( $siteDescriptor.getChild( $id ) )
- #set ( $e = $siteDescriptor.getChild( $id ) )
- #if( $e.getChild( "href" ) )
- #set ( $link = $e.getChild( "href" ).getValue() )
- <a href="$link" id="$id">
+#macro ( banner $banner $id )
+ #if ( $banner )
+ #if( $banner.href )
+ <a href="$banner.href" id="$id">
#else
<span id="$id">
#end
- #if( $e.getChild( "src" ) )
- #set ( $src = $e.getChild( "src" ).getValue() )
+ #if( $banner.src )
+ #set ( $src = $banner.src )
#if ( ! ( $src.toLowerCase().startsWith("http") ||
$src.toLowerCase().startsWith("https") ) )
#set ( $src = $PathTool.calculateLink( $src, $relativePath ) )
#set ( $src = $src.replaceAll( "\\", "/" ) )
#end
- #if ( $e.getChild( "alt" ) )
- #set ( $alt = $e.getChild( "alt" ).getValue() )
+ #if ( $banner.alt )
+ #set ( $alt = $banner.alt )
#else
#set ( $alt = "" )
#end
<img src="$src" alt="$alt" />
#else
- $e.getChild( "name" ).getValue()
+ $banner.name
#end
- #if( $e.getChild( "href" ) )
+ #if( $banner.href )
</a>
#else
</span>
@@ -32,22 +30,21 @@
#end
#end
-#macro ( links )
+#macro ( links $links )
#set ( $counter = 0 )
- #set ( $links = $siteDescriptor.getChild( "body" ).getChild( "links" ) )
- #foreach( $item in $links.getChildren() )
+ #foreach( $item in $links )
#set ( $counter = $counter + 1 )
- <a href="$item.getAttribute( "href" )">$item.getAttribute( "name" )</a>
- #if ( $links.getChildCount() > $counter )
+ <a href="$item.href">$item.name</a>
+ #if ( $links.size() > $counter )
|
#end
#end
#end
#macro ( displayTree $display $item )
- #if ( $item && $item.getChildren() && $item.getChildCount() > 0 )
- #foreach( $subitem in $item.getChildren() )
- #set ( $subitemHref = $PathTool.calculateLink( $subitem.getAttribute(
"href" ), $relativePath ) )
+ #if ( $item && $item.items && $item.items.size() > 0 )
+ #foreach( $subitem in $item.items )
+ #set ( $subitemHref = $PathTool.calculateLink( $subitem.href,
$relativePath ) )
#set ( $subitemHref = $subitemHref.replaceAll( "\\", "/" ) )
#if ( $currentFileName == $subitemHref )
@@ -61,12 +58,12 @@
#macro ( menuItem $item )
#set ( $collapse = "none" )
- #set ( $currentItemHref = $PathTool.calculateLink( $item.getAttribute(
"href" ), $relativePath ) )
+ #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath
) )
#set ( $currentFileName = $currentFileName.replaceAll( "\\", "/" ) )
#set ( $currentItemHref = $currentItemHref.replaceAll( "\\", "/" ) )
- #if ( $item && $item.getChildCount() > 0 )
- #if ( ( $item.getAttribute( "collapse" ) ) && ( $item.getAttribute(
"collapse" ).equalsIgnoreCase( "false" ) ) )
+ #if ( $item && $item.items && $item.items.size() > 0 )
+ #if ( $item.collapse == false )
#set ( $collapse = "expanded" )
#else
## By default collapsed
@@ -79,18 +76,17 @@
#end
<li class="$collapse">
#if ( $currentFileName == $currentItemHref )
- <strong><a href="$currentItemHref">$item.getAttribute( "name"
)</a></strong>
+ <strong><a href="$currentItemHref">$item.name</a></strong>
#else
- <a href="$currentItemHref">$item.getAttribute( "name" )</a>
+ <a href="$currentItemHref">$item.name</a>
#end
- #if ( $item && $item.getChildren() && $item.getChildCount() > 0 )
+ #if ( $item && $item.items && $item.items.size() > 0 )
#set ( $display = false )
- #set ( $itemTmp = $item )
- #displayTree( $display $itemTmp )
+ #displayTree( $display $item )
#if ( $collapse == "expanded" || $display )
<ul>
- #foreach( $subitem in $item.getChildren() )
+ #foreach( $subitem in $item.items )
#menuItem( $subitem )
#end
</ul>
@@ -99,12 +95,11 @@
</li>
#end
-#macro ( mainMenu )
- #set ( $menus = $siteDescriptor.getChild( "body" ).getChildren( "menu" ) )
+#macro ( mainMenu $menus )
#foreach( $menu in $menus )
- <h5>$menu.getAttribute( "name" )</h5>
+ <h5>$menu.name</h5>
<ul>
- #foreach( $item in $menu.getChildren() )
+ #foreach( $item in $menu.items )
#menuItem( $item )
#end
</ul>
@@ -127,9 +122,9 @@
#end
#end
-#macro ( publishDate $position )
- #if ( ( $siteDescriptor.getChild( "publishDate" ) ) && (
$siteDescriptor.getChild( "publishDate" ).getAttribute( "format" ) ) )
- #set ( $format = $siteDescriptor.getChild( "publishDate" ).getAttribute(
"format" ) )
+#macro ( publishDate $position $publishDate )
+ #if ( $publishDate && $publishDate.format )
+ #set ( $format = $publishDate.format )
#else
#set ( $format = "MM/dd/yyyy" )
#end
@@ -138,8 +133,8 @@
#set ( $dateToday = $dateFormat.format( $currentDate ) )
- #if ( ( $siteDescriptor.getChild( "publishDate" ) ) && (
$siteDescriptor.getChild( "publishDate" ).getAttribute( "position" ) ) )
- #set ( $datePosition = $siteDescriptor.getChild( "publishDate"
).getAttribute( "position" ) )
+ #if ( $publishDate && $publishDate.position )
+ #set ( $datePosition = $publishDate.position )
#else
#set ( $datePosition = "left" )
#end
@@ -152,44 +147,41 @@
#elseif ( $datePosition.equalsIgnoreCase("left") )
<div class="xleft">
$i18n.getString( "site-plugin", $locale, "template.lastpublished" ):
$dateToday | Doc for
- #if ( $siteDescriptor.getChild( "version" ))
- $siteDescriptor.getChild( "version" ).getValue()
- #else
- ${project.version}
- #end
+ ${project.version}
</div>
#end
#end
#end
-#macro ( poweredByLogo )
-
- #if( $siteDescriptor.getChild( "powered-by" ) )
- #foreach ($item in $siteDescriptor.getChild( "powered-by"
).getChildren() )
- #if( $item.getAttribute( "href" ) )
- #set ( $href = $item.getAttribute( "href" ) )
+#macro ( poweredByLogo $poweredBy )
+ #if( $poweredBy )
+ #foreach ($item in $poweredBy)
+ #if( $item.href )
+ #set ( $href = $item.href )
#else
#set ( $href="http://maven.apache.org/" )
#end
- #if( $item.getAttribute( "name" ) )
- #set ( $name = $item.getAttribute( "name" ) )
+ #if( $item.name )
+ #set ( $name = $item.name )
#else
#set ( $name = $i18n.getString( "site-plugin", $locale,
"template.builtby" ) )
#set ( $name = "${name} Maven" )
#end
- #if( $item.getAttribute( "img" ) )
- #set ( $img = $item.getAttribute( "img" ) )
+ #if( $item.img )
+ #set ( $img = $item.img )
#else
#set ( $img = "maven-feather.png" )
#end
<a href="$href" title="$name" id="poweredBy">
- <img alt="$name" src="$relativePath/images/logos/$img"></img>
+ #set ( $img = $PathTool.calculateLink( $img,
"$relativePath/images/logos" ) )
+ #set ( $img = $img.replaceAll( "\\", "/" ) )
+ <img alt="$name" src="$img" />
</a>
#end
- #if( $siteDescriptor.getChild( "powered-by" ).getChildCount() == 0 )
+ #if( $poweredBy.isEmpty() )
<a href="http://maven.apache.org/" title="$i18n.getString(
"site-plugin", $locale, "template.builtby" ) Maven" id="poweredBy">
<img alt="$i18n.getString( "site-plugin", $locale,
"template.builtby" ) Maven"
src="$relativePath/images/logos/maven-feather.png"></img>
</a>
@@ -216,8 +208,8 @@
<meta name="author" content="$author" />
#end
<meta http-equiv="Content-Type" content="text/html;
charset=${outputEncoding}" />
- #if ( $siteDescriptor.getChild( "body" ).getChild( "head" ) )
- #foreach( $item in $siteDescriptor.getChild( "body" ).getChild( "head"
).getChildren() )
+ #if ( $decoration.body.head )
+ #foreach( $item in $decoration.body.head.getChildren() )
#if ( $item.name == "script" )
$item.toUnescapedString()
#else
@@ -228,27 +220,25 @@
</head>
<body class="composite">
<div id="banner">
- #set ( $banner = "bannerLeft" )
- #banner( $banner )
- #set ( $banner = "bannerRight" )
- #banner( $banner )
+ #banner( $decoration.bannerLeft "bannerLeft" )
+ #banner( $decoration.bannerRight "bannerRight" )
<div class="clear">
<hr/>
</div>
</div>
<div id="breadcrumbs">
- #publishDate( "left" )
- <div class="xright">#links()#publishDate( "right" )</div>
+ #publishDate( "left" $decoration.publishDate )
+ <div class="xright">#links( $decoration.body.links )#publishDate(
"right" $decoration.publishDate )</div>
<div class="clear">
<hr/>
</div>
</div>
<div id="leftColumn">
<div id="navcolumn">
- #publishDate( "navigation-top" )
- #mainMenu()
- #poweredByLogo()
- #publishDate( "navigation-bottom" )
+ #publishDate( "navigation-top" $decoration.publishDate )
+ #mainMenu( $decoration.body.menus )
+ #poweredByLogo( $decoration.poweredBy )
+ #publishDate( "navigation-bottom" $decoration.publishDate )
</div>
</div>
<div id="bodyColumn">
@@ -260,7 +250,7 @@
<hr/>
</div>
<div id="footer">
- <div class="xright">©#copyright()#publishDate( "bottom" )</div>
+ <div class="xright">©#copyright()#publishDate( "bottom"
$decoration.publishDate )</div>
<div class="clear">
<hr/>
</div>