diff --git a/pom.xml b/pom.xml
index 2d9b24e7..b9f49b47 100644
--- a/pom.xml
+++ b/pom.xml
@@ -198,8 +198,8 @@ under the License.
8
9.4.53.v20231009
- 2.0.0-M8
- 2.0.0-M16
+ 2.0.0-M10
+ 2.0.0-M18-SNAPSHOT
3.5.3
1.7.36
diff --git a/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java b/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java
index 8906cbc8..c74ab234 100644
--- a/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java
+++ b/src/main/java/org/apache/maven/plugins/site/render/AbstractSiteRenderingMojo.java
@@ -40,6 +40,7 @@
import org.apache.maven.doxia.siterenderer.RendererException;
import org.apache.maven.doxia.siterenderer.SiteRenderer;
import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
+import org.apache.maven.doxia.siterenderer.SiteRenderingContext.SiteDirectory;
import org.apache.maven.doxia.tools.SiteTool;
import org.apache.maven.doxia.tools.SiteToolException;
import org.apache.maven.execution.MavenSession;
@@ -312,9 +313,11 @@ protected SiteRenderingContext createSiteRenderingContext(Locale locale)
// Generate static site
context.setRootDirectory(project.getBasedir());
if (!locale.equals(SiteTool.DEFAULT_LOCALE)) {
- context.addSiteDirectory(new File(siteDirectory, locale.toString()));
+ context.addSiteDirectory(new SiteDirectory(new File(siteDirectory, locale.toString()), true));
+ context.addSiteDirectory(new SiteDirectory(new File(generatedSiteDirectory, locale.toString()), false));
} else {
- context.addSiteDirectory(siteDirectory);
+ context.addSiteDirectory(new SiteDirectory(siteDirectory, true));
+ context.addSiteDirectory(new SiteDirectory(generatedSiteDirectory, false));
}
if (moduleExcludes != null) {
@@ -425,7 +428,7 @@ protected Map> categoriseReports(Collection locateDocuments(
SiteRenderingContext context, List reports, Locale locale)
throws IOException, RendererException {
- Map documents = siteRenderer.locateDocumentFiles(context, true);
+ Map documents = siteRenderer.locateDocumentFiles(context);
Map reportsByOutputName = locateReports(reports, documents, locale);
diff --git a/src/main/java/org/apache/maven/plugins/site/render/SiteMojo.java b/src/main/java/org/apache/maven/plugins/site/render/SiteMojo.java
index bd264d45..7a1e3521 100644
--- a/src/main/java/org/apache/maven/plugins/site/render/SiteMojo.java
+++ b/src/main/java/org/apache/maven/plugins/site/render/SiteMojo.java
@@ -21,6 +21,7 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
@@ -132,32 +133,16 @@ private void renderLocale(
getLog().info("Validation is switched on, xml input documents will be validated!");
}
- // 1.1 locate editable Doxia documents first
+ // 1. locate all Doxia documents first
Map documents = locateDocuments(context, reports, locale);
- // 1.2 copy resources
+ // 2. and copy resources
siteRenderer.copyResources(context, outputDirectory);
- // 1.3 render editable Doxia documents first
- List nonDoxiaDocuments = renderDoxiaDocuments(documents, context, outputDirectory, false);
+ // 3. and finally render Doxia documents
+ List nonDoxiaDocuments = renderDoxiaDocuments(documents.values(), context, outputDirectory);
- context.getSiteDirectories().clear();
- if (!locale.equals(SiteTool.DEFAULT_LOCALE)) {
- context.addSiteDirectory(new File(generatedSiteDirectory, locale.toString()));
- } else {
- context.addSiteDirectory(generatedSiteDirectory);
- }
-
- // 2.1 locate generated (non-editable) Doxia documents
- Map generatedDocuments =
- siteRenderer.locateDocumentFiles(context, false /* not editable */);
-
- // 2.2 copy generated resources also
- siteRenderer.copyResources(context, outputDirectory);
- // 2.3 render generated (non-editable) Doxia documents
- renderDoxiaDocuments(generatedDocuments, context, outputDirectory, true);
-
- // 3 then non-Doxia documents (e.g. reports)
+ // 4. then non-Doxia documents (e.g. reports)
renderNonDoxiaDocuments(nonDoxiaDocuments, context, outputDirectory);
}
@@ -168,33 +153,43 @@ private void renderLocale(
* @return the sublist of documents that are not Doxia source files
*/
private List renderDoxiaDocuments(
- Map documents,
+ Collection documents,
SiteRenderingContext context,
- File outputDirectory,
- boolean generated)
+ File outputDirectory)
throws RendererException, IOException {
- Map doxiaDocuments = new TreeMap<>();
+ List doxiaDocuments = new ArrayList<>();
+ List generatedDoxiaDocuments = new ArrayList<>();
List nonDoxiaDocuments = new ArrayList<>();
Map counts = new TreeMap<>();
+ Map generatedCounts = new TreeMap<>();
- for (Map.Entry entry : documents.entrySet()) {
- DocumentRenderer doc = entry.getValue();
-
+ for (DocumentRenderer doc : documents) {
if (doc instanceof DoxiaDocumentRenderer) {
- doxiaDocuments.put(entry.getKey(), doc);
-
DoxiaDocumentRenderer doxia = (DoxiaDocumentRenderer) doc;
+ boolean editable = doxia.getRenderingContext().isEditable();
+
+ if (editable) {
+ doxiaDocuments.add(doc);
+ } else {
+ generatedDoxiaDocuments.add(doc);
+ }
// count documents per parserId
String parserId = doxia.getRenderingContext().getParserId();
- Integer count = counts.get(parserId);
+ Map actualCounts;
+ if (editable) {
+ actualCounts = counts;
+ } else {
+ actualCounts = generatedCounts;
+ }
+ Integer count = actualCounts.get(parserId);
if (count == null) {
count = 1;
} else {
count++;
}
- counts.put(parserId, count);
+ actualCounts.put(parserId, count);
} else {
nonDoxiaDocuments.add(doc);
}
@@ -203,7 +198,7 @@ private List renderDoxiaDocuments(
if (doxiaDocuments.size() > 0) {
MessageBuilder mb = buffer();
mb.a("Rendering ");
- mb.strong(doxiaDocuments.size() + (generated ? " generated" : "") + " Doxia document"
+ mb.strong(doxiaDocuments.size() + " Doxia document"
+ (doxiaDocuments.size() > 1 ? "s" : ""));
mb.a(": ");
@@ -219,7 +214,29 @@ private List renderDoxiaDocuments(
getLog().info(mb.toString());
- siteRenderer.render(doxiaDocuments.values(), context, outputDirectory);
+ siteRenderer.render(doxiaDocuments, context, outputDirectory);
+ }
+
+ if (generatedDoxiaDocuments.size() > 0) {
+ MessageBuilder mb = buffer();
+ mb.a("Rendering ");
+ mb.strong(generatedDoxiaDocuments.size() + " generated Doxia document"
+ + (generatedDoxiaDocuments.size() > 1 ? "s" : ""));
+ mb.a(": ");
+
+ boolean first = true;
+ for (Map.Entry entry : generatedCounts.entrySet()) {
+ if (first) {
+ first = false;
+ } else {
+ mb.a(", ");
+ }
+ mb.strong(entry.getValue() + " " + entry.getKey());
+ }
+
+ getLog().info(mb.toString());
+
+ siteRenderer.render(generatedDoxiaDocuments, context, outputDirectory);
}
return nonDoxiaDocuments;
@@ -231,7 +248,7 @@ private List renderDoxiaDocuments(
* @param documents a collection of documents containing non-Doxia source files
*/
private void renderNonDoxiaDocuments(
- List documents, SiteRenderingContext context, File outputDirectory)
+ Collection documents, SiteRenderingContext context, File outputDirectory)
throws RendererException, IOException {
Map counts = new TreeMap<>();
diff --git a/src/main/java/org/apache/maven/plugins/site/run/DoxiaBean.java b/src/main/java/org/apache/maven/plugins/site/run/DoxiaBean.java
index 34f97a9f..01eaef4a 100644
--- a/src/main/java/org/apache/maven/plugins/site/run/DoxiaBean.java
+++ b/src/main/java/org/apache/maven/plugins/site/run/DoxiaBean.java
@@ -34,20 +34,15 @@ public class DoxiaBean {
private Map documents;
- private SiteRenderingContext generatedSiteContext;
-
/**
* @param context context
* @param documents documents
- * @param generatedSiteContext context of generated content
*/
public DoxiaBean(
SiteRenderingContext context,
- Map documents,
- SiteRenderingContext generatedSiteContext) {
+ Map documents) {
this.context = context;
this.documents = documents;
- this.generatedSiteContext = generatedSiteContext;
}
public SiteRenderingContext getContext() {
@@ -65,12 +60,4 @@ public Map getDocuments() {
public void setDocuments(Map documents) {
this.documents = documents;
}
-
- public SiteRenderingContext getGeneratedSiteContext() {
- return generatedSiteContext;
- }
-
- public void setGeneratedSiteContext(SiteRenderingContext generatedSiteContext) {
- this.generatedSiteContext = generatedSiteContext;
- }
}
diff --git a/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java b/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java
index 508744b3..9fce1cc3 100644
--- a/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java
+++ b/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java
@@ -108,7 +108,6 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo
// Handle locale request
SiteRenderingContext context;
Map documents;
- SiteRenderingContext generatedSiteContext;
String localeWanted = "";
for (Locale locale : localesList) {
@@ -132,7 +131,6 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo
}
context = doxiaBean.getContext();
documents = doxiaBean.getDocuments();
- generatedSiteContext = doxiaBean.getGeneratedSiteContext();
// ----------------------------------------------------------------------
// Handle report and documents
@@ -164,26 +162,6 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo
} catch (RendererException e) {
throw new ServletException(e);
}
- } else if (generatedSiteContext != null) {
- try {
- Map locateDocuments =
- siteRenderer.locateDocumentFiles(generatedSiteContext, false);
-
- if (locateDocuments.containsKey(path)) {
- DocumentRenderer docRenderer = locateDocuments.get(path);
- logDocumentRenderer(path, localeWanted, docRenderer);
- String outputName = docRenderer.getOutputName();
- String contentType = MimeTypes.getDefaultMimeByExtension(outputName);
- if (contentType != null) {
- servletResponse.setContentType(contentType);
- }
- docRenderer.renderDocument(servletResponse.getWriter(), siteRenderer, generatedSiteContext);
-
- return;
- }
- } catch (RendererException e) {
- throw new ServletException(e);
- }
}
filterChain.doFilter(servletRequest, servletResponse);
diff --git a/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java b/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java
index f5430e00..266909c4 100644
--- a/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java
+++ b/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java
@@ -133,21 +133,11 @@ private WebAppContext createWebApplication() throws MojoExecutionException {
i18nContext.setInputEncoding(getInputEncoding());
i18nContext.setOutputEncoding(getOutputEncoding());
- SiteRenderingContext i18nGeneratedSiteContext = createSiteRenderingContext(locale);
- i18nGeneratedSiteContext.setInputEncoding(getInputEncoding());
- i18nGeneratedSiteContext.setOutputEncoding(getOutputEncoding());
- i18nGeneratedSiteContext.getSiteDirectories().clear();
-
File outputDirectory = getOutputDirectory(locale);
List reports = getReports(outputDirectory);
Map i18nDocuments = locateDocuments(i18nContext, reports, locale);
- if (!locale.equals(SiteTool.DEFAULT_LOCALE)) {
- i18nGeneratedSiteContext.addSiteDirectory(new File(generatedSiteDirectory, locale.toString()));
- } else {
- i18nGeneratedSiteContext.addSiteDirectory(generatedSiteDirectory);
- }
- DoxiaBean doxiaBean = new DoxiaBean(i18nContext, i18nDocuments, i18nGeneratedSiteContext);
+ DoxiaBean doxiaBean = new DoxiaBean(i18nContext, i18nDocuments);
if (!locale.equals(SiteTool.DEFAULT_LOCALE)) {
i18nDoxiaContexts.put(locale.toString(), doxiaBean);