in doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java [378:424]
public SiteModel getSiteModel(
File siteDirectory,
Locale locale,
MavenProject project,
List<MavenProject> reactorProjects,
RepositorySystemSession repoSession,
List<RemoteRepository> remoteProjectRepositories)
throws SiteToolException {
Objects.requireNonNull(locale, "locale cannot be null");
Objects.requireNonNull(project, "project cannot be null");
Objects.requireNonNull(reactorProjects, "reactorProjects cannot be null");
Objects.requireNonNull(repoSession, "repoSession cannot be null");
Objects.requireNonNull(remoteProjectRepositories, "remoteProjectRepositories cannot be null");
LOGGER.debug("Computing site model of '" + project.getId() + "' for "
+ (locale.equals(SiteTool.DEFAULT_LOCALE) ? "default locale" : "locale '" + locale + "'"));
Map.Entry<SiteModel, MavenProject> result =
getSiteModel(0, siteDirectory, locale, project, repoSession, remoteProjectRepositories);
SiteModel siteModel = result.getKey();
MavenProject parentProject = result.getValue();
if (siteModel == null) {
LOGGER.debug("Using default site descriptor");
siteModel = getDefaultSiteModel();
}
// SiteModel back to String to interpolate, then go back to SiteModel
String siteDescriptorContent = siteModelToString(siteModel);
// "classical" late interpolation, after full inheritance
siteDescriptorContent = getInterpolatedSiteDescriptorContent(project, siteDescriptorContent, false);
siteModel = readSiteModel(siteDescriptorContent, project, locale);
if (parentProject != null) {
populateParentMenu(siteModel, locale, project, parentProject, true);
}
try {
populateModulesMenu(siteModel, locale, project, reactorProjects, true);
} catch (IOException e) {
throw new SiteToolException("Error while populating modules menu", e);
}
return siteModel;
}