You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2024/04/19 16:54:57 UTC
(maven-doxia-sitetools) 01/01: [DOXIASITETOOLS-336] Make SiteRenderingContext#siteDirectories editable aware
This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch DOXIASITETOOLS-336
in repository https://gitbox.apache.org/repos/asf/maven-doxia-sitetools.git
commit 0b3684af60437163fefeb58d32fbd538793bbfaf
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Thu Apr 18 22:52:35 2024 +0200
[DOXIASITETOOLS-336] Make SiteRenderingContext#siteDirectories editable aware
---
.../doxia/siterenderer/DefaultSiteRenderer.java | 26 +++++++++++----------
.../maven/doxia/siterenderer/SiteRenderer.java | 17 +++++++++++---
.../doxia/siterenderer/SiteRenderingContext.java | 27 ++++++++++++++++++----
.../siterenderer/DefaultSiteRendererTest.java | 3 ++-
4 files changed, 53 insertions(+), 20 deletions(-)
diff --git a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
index 8880371..fdb11d9 100644
--- a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
+++ b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
@@ -66,6 +66,7 @@ import org.apache.maven.doxia.parser.module.ParserModuleManager;
import org.apache.maven.doxia.site.SiteModel;
import org.apache.maven.doxia.site.skin.SkinModel;
import org.apache.maven.doxia.site.skin.io.xpp3.SkinXpp3Reader;
+import org.apache.maven.doxia.siterenderer.SiteRenderingContext.SiteDirectory;
import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink;
import org.apache.maven.doxia.util.XmlValidator;
import org.apache.velocity.Template;
@@ -146,29 +147,30 @@ public class DefaultSiteRenderer implements Renderer {
// SiteRenderer implementation
// ----------------------------------------------------------------------
+ /** {@inheritDoc} */
public Map<String, DocumentRenderer> locateDocumentFiles(SiteRenderingContext siteRenderingContext)
throws IOException, RendererException {
- return locateDocumentFiles(siteRenderingContext, false);
- }
-
- /** {@inheritDoc} */
- public Map<String, DocumentRenderer> locateDocumentFiles(
- SiteRenderingContext siteRenderingContext, boolean editable) throws IOException, RendererException {
Map<String, DocumentRenderer> files = new LinkedHashMap<>();
Map<String, String> moduleExcludes = siteRenderingContext.getModuleExcludes();
// look in every site directory (in general src/site or target/generated-site)
- for (File siteDirectory : siteRenderingContext.getSiteDirectories()) {
- if (siteDirectory.exists()) {
+ for (SiteDirectory siteDirectory : siteRenderingContext.getSiteDirectories()) {
+ File siteDirectoryPath = siteDirectory.getPath();
+ if (siteDirectoryPath.exists()) {
Collection<ParserModule> modules = parserModuleManager.getParserModules();
// use every Doxia parser module
for (ParserModule module : modules) {
- File moduleBasedir = new File(siteDirectory, module.getSourceDirectory());
+ File moduleBasedir = new File(siteDirectoryPath, module.getSourceDirectory());
String excludes = (moduleExcludes == null) ? null : moduleExcludes.get(module.getParserId());
addModuleFiles(
- siteRenderingContext.getRootDirectory(), moduleBasedir, module, excludes, files, editable);
+ siteRenderingContext.getRootDirectory(),
+ moduleBasedir,
+ module,
+ excludes,
+ files,
+ siteDirectory.isEditable());
}
}
}
@@ -764,8 +766,8 @@ public class DefaultSiteRenderer implements Renderer {
}
// Copy extra site resources
- for (File siteDirectory : siteRenderingContext.getSiteDirectories()) {
- File resourcesDirectory = new File(siteDirectory, "resources");
+ for (SiteDirectory siteDirectory : siteRenderingContext.getSiteDirectories()) {
+ File resourcesDirectory = new File(siteDirectory.getPath(), "resources");
if (resourcesDirectory != null && resourcesDirectory.exists()) {
copyDirectory(resourcesDirectory, outputDirectory);
diff --git a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderer.java b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderer.java
index 7945b7f..df05f50 100644
--- a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderer.java
+++ b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderer.java
@@ -91,15 +91,26 @@ public interface SiteRenderer {
* Locate Doxia document source files in the site source context.
*
* @param siteRenderingContext the SiteRenderingContext to use
- * @param editable Doxia document renderer as editable? (should not set editable if generated Doxia source)
* @return the Doxia document renderers in a Map keyed by output file name.
* @throws IOException if it bombs.
* @throws RendererException if it bombs.
- * @since 1.8
+ * @since 2.0.0
*/
- Map<String, DocumentRenderer> locateDocumentFiles(SiteRenderingContext siteRenderingContext, boolean editable)
+ Map<String, DocumentRenderer> locateDocumentFiles(SiteRenderingContext siteRenderingContext)
throws IOException, RendererException;
+ /**
+ * @see #locateDocumentFiles(SiteRenderingContext)
+ * @deprecated {@code editable} parameter is ignored since {@link SiteRenderingContext#getSiteDirectories()}
+ * contain this information on a per-directory basis now.
+ * @since 1.8
+ */
+ @Deprecated
+ default Map<String, DocumentRenderer> locateDocumentFiles(
+ SiteRenderingContext siteRenderingContext, boolean editable) throws IOException, RendererException {
+ return locateDocumentFiles(siteRenderingContext);
+ }
+
/**
* Render a document written in a Doxia markup language. This method is an internal method, used by
* {@link DoxiaDocumentRenderer}.
diff --git a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java
index 12733d0..f340fdc 100644
--- a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java
+++ b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/SiteRenderingContext.java
@@ -38,6 +38,25 @@ import org.codehaus.plexus.util.WriterFactory;
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
*/
public class SiteRenderingContext {
+
+ public static class SiteDirectory {
+ private File path;
+ private boolean editable;
+
+ public SiteDirectory(File path, boolean editable) {
+ this.path = path;
+ this.editable = editable;
+ }
+
+ public File getPath() {
+ return path;
+ }
+
+ public boolean isEditable() {
+ return editable;
+ }
+ }
+
private String inputEncoding = ReaderFactory.FILE_ENCODING;
private String outputEncoding = WriterFactory.UTF_8;
@@ -62,7 +81,7 @@ public class SiteRenderingContext {
private File rootDirectory;
- private List<File> siteDirectories = new ArrayList<>();
+ private List<SiteDirectory> siteDirectories = new ArrayList<>();
private Map<String, String> moduleExcludes;
@@ -260,9 +279,9 @@ public class SiteRenderingContext {
* Add a site directory, expected to have a Doxia Site layout, ie one directory per Doxia parser module containing
* files with parser extension. Typical values are <code>src/site</code> or <code>target/generated-site</code>.
*
- * @param siteDirectory a {@link java.io.File} object.
+ * @param siteDirectory a {@link SiteDirectory} object.
*/
- public void addSiteDirectory(File siteDirectory) {
+ public void addSiteDirectory(SiteDirectory siteDirectory) {
this.siteDirectories.add(siteDirectory);
}
@@ -271,7 +290,7 @@ public class SiteRenderingContext {
*
* @return List of site directories files.
*/
- public List<File> getSiteDirectories() {
+ public List<SiteDirectory> getSiteDirectories() {
return siteDirectories;
}
diff --git a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java
index 6762d50..8a2c04e 100644
--- a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java
+++ b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java
@@ -46,6 +46,7 @@ import org.apache.maven.doxia.parser.ParseException;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.site.SiteModel;
import org.apache.maven.doxia.site.io.xpp3.SiteXpp3Reader;
+import org.apache.maven.doxia.siterenderer.SiteRenderingContext.SiteDirectory;
import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink;
import org.apache.maven.doxia.xsd.AbstractXmlValidator;
import org.codehaus.plexus.PlexusContainer;
@@ -330,7 +331,7 @@ public class DefaultSiteRendererTest {
skin.setFile(skinFile);
SiteRenderingContext siteRenderingContext =
siteRenderer.createContextForSkin(skin, attributes, siteModel, "defaultTitle", Locale.ROOT);
- siteRenderingContext.addSiteDirectory(getTestFile(siteDir));
+ siteRenderingContext.addSiteDirectory(new SiteDirectory(getTestFile(siteDir), true));
siteRenderingContext.setValidate(validate);
return siteRenderingContext;