org.apache.maven.doxia.tools
Class DefaultSiteTool

java.lang.Object
  extended by org.codehaus.plexus.logging.AbstractLogEnabled
      extended by org.apache.maven.doxia.tools.DefaultSiteTool
All Implemented Interfaces:
SiteTool, org.codehaus.plexus.logging.LogEnabled

@Component(role=SiteTool.class)
public class DefaultSiteTool
extends org.codehaus.plexus.logging.AbstractLogEnabled
implements SiteTool

Default implementation of the site tool.

Version:
$Id: DefaultSiteTool.java 1388197 2012-09-20 20:29:18Z dennisl $
Author:
Vincent Siveton

Field Summary
protected  DecorationModelInheritanceAssembler assembler
          The component for assembling inheritance.
protected  I18N i18n
          Internationalization.
protected  MavenProjectBuilder mavenProjectBuilder
          Project builder.
 
Fields inherited from interface org.apache.maven.doxia.tools.SiteTool
DEFAULT_LOCALE, ROLE
 
Constructor Summary
DefaultSiteTool()
           
 
Method Summary
 Locale codeToLocale(String localeCode)
          Converts a locale code like "en", "en_US" or "en_US_win" to a java.util.Locale object.
 List<Locale> getAvailableLocales(String locales)
          Init the localesList variable.
 DecorationModel getDecorationModel(MavenProject project, List<MavenProject> reactorProjects, ArtifactRepository localRepository, List<ArtifactRepository> repositories, String siteDirectory, Locale locale, String inputEncoding, String outputEncoding)
          Get a decoration model for a project.
 Artifact getDefaultSkinArtifact(ArtifactRepository localRepository, List<ArtifactRepository> remoteArtifactRepositories)
          Get the default skin artifact for a project from one of the repositories.
 String getInterpolatedSiteDescriptorContent(Map<String,String> props, MavenProject aProject, String siteDescriptorContent, String inputEncoding, String outputEncoding)
          Interpolating several expressions in the site descriptor content.
protected static String getNormalizedPath(String path)
           
 MavenProject getParentProject(MavenProject aProject, List<MavenProject> reactorProjects, ArtifactRepository localRepository)
          Returns the parent POM with interpolated URLs.
 String getRelativePath(String to, String from)
          Calculate the relative path between two URLs or between two files.
 File getSiteDescriptorFromBasedir(String siteDirectory, File basedir, Locale locale)
          Get a site descriptor from the project's base directory.
 File getSiteDescriptorFromRepository(MavenProject project, ArtifactRepository localRepository, List<ArtifactRepository> repositories, Locale locale)
          Get a site descriptor from one of the repositories.
 Artifact getSkinArtifactFromRepository(ArtifactRepository localRepository, List<ArtifactRepository> remoteArtifactRepositories, DecorationModel decoration)
          Get a skin artifact from one of the repositories.
 void populateModules(MavenProject project, List<MavenProject> reactorProjects, ArtifactRepository localRepository, DecorationModel decorationModel, Locale locale, boolean keepInheritedRefs)
          Deprecated. Please use populateModulesMenu(MavenProject, List, ArtifactRepository, DecorationModel, Locale, boolean) instead
 void populateModulesMenu(MavenProject project, List<MavenProject> reactorProjects, ArtifactRepository localRepository, DecorationModel decorationModel, Locale locale, boolean keepInheritedRefs)
          Populate the modules menu part of the decoration model.
 void populateParentMenu(DecorationModel decorationModel, Locale locale, MavenProject project, MavenProject parentProject, boolean keepInheritedRefs)
          Populate the parent menu part of the decoration model.
 void populateProjectParentMenu(DecorationModel decorationModel, Locale locale, MavenProject project, MavenProject parentProject, boolean keepInheritedRefs)
          Deprecated. Please use populateParentMenu(DecorationModel, Locale, MavenProject, MavenProject, boolean) instead
 void populateReportsMenu(DecorationModel decorationModel, Locale locale, Map<String,List<MavenReport>> categories)
          Populate the reports menu part of the decoration model.
 
Methods inherited from class org.codehaus.plexus.logging.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

i18n

@Requirement
protected I18N i18n
Internationalization.


assembler

@Requirement
protected DecorationModelInheritanceAssembler assembler
The component for assembling inheritance.


mavenProjectBuilder

@Requirement
protected MavenProjectBuilder mavenProjectBuilder
Project builder.

Constructor Detail

DefaultSiteTool

public DefaultSiteTool()
Method Detail

getSkinArtifactFromRepository

public Artifact getSkinArtifactFromRepository(ArtifactRepository localRepository,
                                              List<ArtifactRepository> remoteArtifactRepositories,
                                              DecorationModel decoration)
                                       throws SiteToolException
Get a skin artifact from one of the repositories.

Specified by:
getSkinArtifactFromRepository in interface SiteTool
Parameters:
localRepository - the Maven local repository, not null.
remoteArtifactRepositories - the Maven remote repositories, not null.
decoration - the Doxia site descriptor model, not null.
Returns:
the Skin artifact defined in a DecorationModel from a given project and a local repository
Throws:
SiteToolException - if any

getDefaultSkinArtifact

public Artifact getDefaultSkinArtifact(ArtifactRepository localRepository,
                                       List<ArtifactRepository> remoteArtifactRepositories)
                                throws SiteToolException
Get the default skin artifact for a project from one of the repositories.

Specified by:
getDefaultSkinArtifact in interface SiteTool
Parameters:
localRepository - the Maven local repository, not null.
remoteArtifactRepositories - the Maven remote repositories, not null.
Returns:
the default Skin artifact from a given project and a local repository
Throws:
SiteToolException - if any
See Also:
Skin.getDefaultSkin(), SiteTool.getSkinArtifactFromRepository(ArtifactRepository, List, DecorationModel)

getRelativePath

public String getRelativePath(String to,
                              String from)
Calculate the relative path between two URLs or between two files. For example:
to = "http://maven.apache.org" and from = "http://maven.apache.org"
return ""
to = "http://maven.apache.org" and from = "http://maven.apache.org/plugins/maven-site-plugin/"
return "../.."
to = "http://maven.apache.org/plugins/maven-site-plugin/" and from = "http://maven.apache.org"
return "plugins/maven-site-plugin"
to = "/myproject/myproject-module1" and from = "/myproject/myproject"
return "../myproject-module1"
Note: The file separator depends on the system.

Specified by:
getRelativePath in interface SiteTool
Parameters:
to - the to url of file as string
from - the from url of file as string
Returns:
a relative path from from to to.

getSiteDescriptorFromBasedir

public File getSiteDescriptorFromBasedir(String siteDirectory,
                                         File basedir,
                                         Locale locale)
Get a site descriptor from the project's base directory.

Specified by:
getSiteDescriptorFromBasedir in interface SiteTool
Parameters:
siteDirectory - The path to the directory containing the site.xml file, relative to the project base directory. If null, using by default "src/site".
basedir - not null.
locale - the locale wanted for the site descriptor. If not null, searching for site_localeLanguage.xml, otherwise searching for site.xml.
Returns:
the site descriptor relative file, i.e. src/site/site.xml, depending on parameter values.

getSiteDescriptorFromRepository

public File getSiteDescriptorFromRepository(MavenProject project,
                                            ArtifactRepository localRepository,
                                            List<ArtifactRepository> repositories,
                                            Locale locale)
                                     throws SiteToolException
Get a site descriptor from one of the repositories.

Specified by:
getSiteDescriptorFromRepository in interface SiteTool
Parameters:
project - the Maven project, not null.
localRepository - the Maven local repository, not null.
repositories - the Maven remote repositories, not null.
locale - the locale wanted for the site descriptor. If not null, searching for site_localeLanguage.xml, otherwise searching for site.xml.
Returns:
the site descriptor into the local repository after download of it from repositories or null if not found in repositories.
Throws:
SiteToolException - if any

getDecorationModel

public DecorationModel getDecorationModel(MavenProject project,
                                          List<MavenProject> reactorProjects,
                                          ArtifactRepository localRepository,
                                          List<ArtifactRepository> repositories,
                                          String siteDirectory,
                                          Locale locale,
                                          String inputEncoding,
                                          String outputEncoding)
                                   throws SiteToolException
Get a decoration model for a project.

Specified by:
getDecorationModel in interface SiteTool
Parameters:
project - the Maven project, not null.
reactorProjects - the Maven reactor projects, not null.
localRepository - the Maven local repository, not null.
repositories - the Maven remote repositories, not null.
siteDirectory - The path to the directory containing the site.xml file, relative to the project base directory. If null, using by default "src/site".
locale - the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm.
inputEncoding - the input encoding of the site descriptor, not null.
outputEncoding - the output encoding wanted, not null.
Returns:
the DecorationModel object corresponding to the site.xml file with some interpolations.
Throws:
SiteToolException - if any

populateReportsMenu

public void populateReportsMenu(DecorationModel decorationModel,
                                Locale locale,
                                Map<String,List<MavenReport>> categories)
Populate the reports menu part of the decoration model.

Specified by:
populateReportsMenu in interface SiteTool
Parameters:
decorationModel - the Doxia DecorationModel, not null.
locale - the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm.
categories - a map to put on the decoration model, not null.

getInterpolatedSiteDescriptorContent

public String getInterpolatedSiteDescriptorContent(Map<String,String> props,
                                                   MavenProject aProject,
                                                   String siteDescriptorContent,
                                                   String inputEncoding,
                                                   String outputEncoding)
                                            throws SiteToolException
Interpolating several expressions in the site descriptor content. Actually, the expressions can be in the project, the environment variables and the specific properties like encoding.

For instance:

${project.name}
The value from the POM of:

<project>
  <name>myProjectName</name>
</project>

${my.value}
The value from the POM of:

<properties>
  <my.value>hello</my.value>
</properties>

${JAVA_HOME}
The value of JAVA_HOME in the environment variables

Specified by:
getInterpolatedSiteDescriptorContent in interface SiteTool
Parameters:
props - a map used for interpolation, not null.
aProject - a Maven project, not null.
siteDescriptorContent - the site descriptor file, not null.
inputEncoding - the input encoding of the site descriptor, not null.
outputEncoding - the output encoding wanted, not null.
Returns:
the site descriptor content based on the site.xml file with interpolated strings.
Throws:
SiteToolException - if errors happened during the interpolation.

getParentProject

public MavenProject getParentProject(MavenProject aProject,
                                     List<MavenProject> reactorProjects,
                                     ArtifactRepository localRepository)
Returns the parent POM with interpolated URLs. Attempts to source this value from the reactorProjects parameters if available (reactor env model attributes are interpolated), or if the reactor is unavailable (-N) resorts to the project.getParent().getUrl() value which will NOT have been interpolated.

TODO: once bug is fixed in Maven proper, remove this.

Specified by:
getParentProject in interface SiteTool
Parameters:
aProject - a Maven project, not null.
reactorProjects - the Maven reactor projects, not null.
localRepository - the Maven local repository, not null.
Returns:
the parent project with interpolated URLs.

populateParentMenu

public void populateParentMenu(DecorationModel decorationModel,
                               Locale locale,
                               MavenProject project,
                               MavenProject parentProject,
                               boolean keepInheritedRefs)
Populate the parent menu part of the decoration model.

Specified by:
populateParentMenu in interface SiteTool
Parameters:
decorationModel - the Doxia DecorationModel, not null.
locale - the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm.
project - a Maven project, not null.
parentProject - a Maven parent project, not null.
keepInheritedRefs - used for inherited references.

populateProjectParentMenu

public void populateProjectParentMenu(DecorationModel decorationModel,
                                      Locale locale,
                                      MavenProject project,
                                      MavenProject parentProject,
                                      boolean keepInheritedRefs)
Deprecated. Please use populateParentMenu(DecorationModel, Locale, MavenProject, MavenProject, boolean) instead

Populate the parent menu part of the decoration model.

Specified by:
populateProjectParentMenu in interface SiteTool
Parameters:
decorationModel - the Doxia DecorationModel, not null.
locale - the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm.
project - a Maven project, not null.
parentProject - a Maven parent project, not null.
keepInheritedRefs - used for inherited references.

populateModules

public void populateModules(MavenProject project,
                            List<MavenProject> reactorProjects,
                            ArtifactRepository localRepository,
                            DecorationModel decorationModel,
                            Locale locale,
                            boolean keepInheritedRefs)
                     throws SiteToolException
Deprecated. Please use populateModulesMenu(MavenProject, List, ArtifactRepository, DecorationModel, Locale, boolean) instead

Populate the modules menu part of the decoration model.

Specified by:
populateModules in interface SiteTool
Parameters:
project - a Maven project, not null.
reactorProjects - the Maven reactor projects, not null.
localRepository - the Maven local repository, not null.
decorationModel - the Doxia site descriptor model, not null.
locale - the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm.
keepInheritedRefs - used for inherited references.
Throws:
SiteToolException - if any

populateModulesMenu

public void populateModulesMenu(MavenProject project,
                                List<MavenProject> reactorProjects,
                                ArtifactRepository localRepository,
                                DecorationModel decorationModel,
                                Locale locale,
                                boolean keepInheritedRefs)
                         throws SiteToolException
Populate the modules menu part of the decoration model.

Specified by:
populateModulesMenu in interface SiteTool
Parameters:
project - a Maven project, not null.
reactorProjects - the Maven reactor projects, not null.
localRepository - the Maven local repository, not null.
decorationModel - the Doxia site descriptor model, not null.
locale - the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm.
keepInheritedRefs - used for inherited references.
Throws:
SiteToolException - if any

getAvailableLocales

public List<Locale> getAvailableLocales(String locales)
Init the localesList variable.

If the locales variable is available, the first valid token will be the defaultLocale for this instance of the Java Virtual Machine.

Specified by:
getAvailableLocales in interface SiteTool
Parameters:
locales - A comma separated list of locales supported by Maven. The first valid token will be the default Locale for this instance of the Java Virtual Machine.
Returns:
a list of Locale

codeToLocale

public Locale codeToLocale(String localeCode)
Converts a locale code like "en", "en_US" or "en_US_win" to a java.util.Locale object.

If localeCode = default, return the current value of the default locale for this instance of the Java Virtual Machine.

Specified by:
codeToLocale in interface SiteTool
Parameters:
localeCode - the locale code string.
Returns:
a java.util.Locale object instanced or null if errors occurred
See Also:
java.util.Locale#getDefault()

getNormalizedPath

protected static String getNormalizedPath(String path)
Parameters:
path - could be null.
Returns:
the path normalized, i.e. by eliminating "/../" and "/./" in the path.
See Also:
FilenameUtils.normalize(String)


Copyright © 2005-2012 The Apache Software Foundation. All Rights Reserved.