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/18 20:52:47 UTC

(maven-doxia-sitetools) branch MSITE-1006 created (now cdfe1b7)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch MSITE-1006
in repository https://gitbox.apache.org/repos/asf/maven-doxia-sitetools.git


      at cdfe1b7  Magic

This branch includes the following new commits:

     new cdfe1b7  Magic

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(maven-doxia-sitetools) 01/01: Magic

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MSITE-1006
in repository https://gitbox.apache.org/repos/asf/maven-doxia-sitetools.git

commit cdfe1b70bb2bb689068ffde9533681de948fc31a
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Thu Apr 18 22:52:35 2024 +0200

    Magic
---
 .../doxia/siterenderer/DefaultSiteRenderer.java    | 26 +++++++++++----------
 .../maven/doxia/siterenderer/SiteRenderer.java     | 16 ++++++++++---
 .../doxia/siterenderer/SiteRenderingContext.java   | 27 ++++++++++++++++++----
 .../siterenderer/DefaultSiteRendererTest.java      |  3 ++-
 4 files changed, 52 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..c9b7ade 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,25 @@ 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;