This is an automated email from the ASF dual-hosted git repository. kwin pushed a commit to branch bugfix/fix-ise-in-documentrenderingcontext-constructor in repository https://gitbox.apache.org/repos/asf/maven-doxia-sitetools.git
commit 9f5b335bf58de246be7e7d0887b69af679f8dfa2 Author: Konrad Windszus <[email protected]> AuthorDate: Thu Apr 9 20:39:24 2026 +0200 Prevent IllegalStateException when using deprecated DocumentRenderingContext constructors with basedirRelativePath being null In case basedirRelativePath is null neither rootDirectory nor siteRootDirectory should be set, as in that case also basedir is a pseudo directory. --- .../maven/doxia/siterenderer/DocumentRenderingContext.java | 11 ++++++----- .../doxia/siterenderer/DocumentRenderingContextTest.java | 7 +++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DocumentRenderingContext.java b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DocumentRenderingContext.java index 8d2be1e..e92d7a1 100644 --- a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DocumentRenderingContext.java +++ b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DocumentRenderingContext.java @@ -59,7 +59,7 @@ public class DocumentRenderingContext { */ private final Collection<File> sourceDirectories; - /** The project's build directory, may be {@code null} rendered from a Doxia source) */ + /** The project's build directory, may be {@code null} if not rendered from a Doxia source */ private final File rootDirectory; /** The site's root directory, must be below {@link #rootDirectory}, may be {@code null} if not rendered from a Doxia source */ @@ -106,7 +106,7 @@ public class DocumentRenderingContext { /** * * @param basedir - * @param basedirRelativePath + * @param basedirRelativePath (may be null if not a Doxia source) * @param document * @param parserId * @param extension @@ -183,10 +183,11 @@ public class DocumentRenderingContext { document, parserId, extension, - stripSuffixFromPath(basedir, basedirRelativePath), + // only generate root directory when basedirRelativePath is provided (for a doxia source) + basedirRelativePath == null ? null : stripSuffixFromPath(basedir, basedirRelativePath), // assume that site root is the parent of basedir (i.e. module specific source directory is directly - // below site root) - basedir.getParentFile(), + // below site root), only when basedirRelativePath is provided (for a doxia source) + basedirRelativePath == null ? null : basedir.getParentFile(), editable ? Collections.singleton(basedir) : Collections.emptySet(), generator); } diff --git a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DocumentRenderingContextTest.java b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DocumentRenderingContextTest.java index e455b0d..aa757d0 100644 --- a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DocumentRenderingContextTest.java +++ b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DocumentRenderingContextTest.java @@ -113,4 +113,11 @@ class DocumentRenderingContextTest { assertEquals("path/file.html", docRenderingContext.getOutputPath()); assertEquals("..", docRenderingContext.getRelativePath()); } + + @Test + void testConstructorWithNullBasedirRelativePath() { + File basedir = new File("."); + new DocumentRenderingContext(basedir, null, "document", "markdown", "md", false); + new DocumentRenderingContext(basedir, null, "document", "markdown", "md", false, "generator"); + } }
