This is an automated email from the ASF dual-hosted git repository. hboutemy pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-doxia-sitetools.git
The following commit(s) were added to refs/heads/master by this push: new 284e8f7 [DOXIASITETOOLS-183] add relative path to build root 284e8f7 is described below commit 284e8f77b6f4f9055698467b9125e7f19f9ff5fd Author: Hervé Boutemy <hbout...@apache.org> AuthorDate: Sat Dec 16 16:30:39 2017 +0100 [DOXIASITETOOLS-183] add relative path to build root --- .../doxia/siterenderer/DefaultSiteRenderer.java | 15 ++++-- .../maven/doxia/siterenderer/RenderingContext.java | 56 +++++++++++++++++++--- .../doxia/siterenderer/SiteRenderingContext.java | 27 +++++++++++ .../doxia/siterenderer/resources/default-site.vm | 4 +- .../siterenderer/DefaultSiteRendererTest.java | 21 ++++---- .../doxia/siterenderer/RenderingContextTest.java | 12 ++--- 6 files changed, 106 insertions(+), 29 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 9a17e3c..f7abb91 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 @@ -189,7 +189,8 @@ public class DefaultSiteRenderer String excludes = ( moduleExcludes == null ) ? null : moduleExcludes.get( module.getParserId() ); - addModuleFiles( moduleBasedir, module, excludes, files, editable ); + addModuleFiles( siteRenderingContext.getRootDirectory(), moduleBasedir, module, excludes, files, + editable ); } } } @@ -203,7 +204,8 @@ public class DefaultSiteRenderer String excludes = ( moduleExcludes == null ) ? null : moduleExcludes.get( module.getParserId() ); - addModuleFiles( module.getBasedir(), parserModule, excludes, files, editable ); + addModuleFiles( siteRenderingContext.getRootDirectory(), module.getBasedir(), parserModule, excludes, + files, editable ); } catch ( ParserModuleNotFoundException e ) { @@ -229,7 +231,7 @@ public class DefaultSiteRenderer return filtered; } - private void addModuleFiles( File moduleBasedir, ParserModule module, String excludes, + private void addModuleFiles( File rootDir, File moduleBasedir, ParserModule module, String excludes, Map<String, DocumentRenderer> files, boolean editable ) throws IOException, RendererException { @@ -238,6 +240,9 @@ public class DefaultSiteRenderer return; } + String moduleRelativePath = + PathTool.getRelativeFilePath( rootDir.getAbsolutePath(), moduleBasedir.getAbsolutePath() ); + List<String> allFiles = FileUtils.getFileNames( moduleBasedir, "**/*.*", excludes, false ); for ( String extension : module.getExtensions() ) @@ -253,8 +258,8 @@ public class DefaultSiteRenderer for ( String doc : docs ) { - RenderingContext context = - new RenderingContext( moduleBasedir, doc, module.getParserId(), extension, editable ); + RenderingContext context = new RenderingContext( moduleBasedir, moduleRelativePath, doc, + module.getParserId(), extension, editable ); // TODO: DOXIA-111: we need a general filter here that knows how to alter the context if ( endsWithIgnoreCase( doc, ".vm" ) ) diff --git a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/RenderingContext.java b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/RenderingContext.java index 44831e9..b05c0c6 100644 --- a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/RenderingContext.java +++ b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/RenderingContext.java @@ -37,6 +37,8 @@ public class RenderingContext // TODO rename to DocumentRenderingContext { private final File basedir; + private final String basedirRelativePath; + private final String inputName; private final String outputName; @@ -56,7 +58,7 @@ public class RenderingContext // TODO rename to DocumentRenderingContext @Deprecated public RenderingContext( File basedir, String document ) { - this( basedir, document, null, null, false, null ); + this( basedir, null, document, null, null, false, null ); } /** @@ -72,18 +74,19 @@ public class RenderingContext // TODO rename to DocumentRenderingContext */ public RenderingContext( File basedir, String document, String generator ) { - this( basedir, document, null, null, false, generator ); + this( basedir, null, document, null, null, false, generator ); } @Deprecated public RenderingContext( File basedir, String document, String parserId, String extension ) { - this( basedir, document, parserId, extension, false, null ); + this( basedir, null, document, parserId, extension, false, null ); } - public RenderingContext( File basedir, String document, String parserId, String extension, boolean editable ) + public RenderingContext( File basedir, String basedirRelativePath, String document, String parserId, + String extension, boolean editable ) { - this( basedir, document, parserId, extension, editable, null ); + this( basedir, basedirRelativePath, document, parserId, extension, editable, null ); } /** @@ -92,6 +95,7 @@ public class RenderingContext // TODO rename to DocumentRenderingContext * </p> * * @param basedir the source base directory (not null, pseudo value when not a Doxia source). + * @param basedirRelativePath the relative path from root (null if not Doxia source) * @param document the source document name. * @param parserId the Doxia module parser id associated to this document, may be null if document not rendered from * a Doxia source. @@ -101,10 +105,11 @@ public class RenderingContext // TODO rename to DocumentRenderingContext * @param generator the generator (in general a reporting goal: <code>groupId:artifactId:version:goal</code>) * @since 1.8 */ - public RenderingContext( File basedir, String document, String parserId, String extension, boolean editable, - String generator ) + public RenderingContext( File basedir, String basedirRelativePath, String document, String parserId, + String extension, boolean editable, String generator ) { this.basedir = basedir; + this.basedirRelativePath = basedirRelativePath; this.inputName = document; this.parserId = parserId; this.extension = extension; @@ -223,7 +228,9 @@ public class RenderingContext // TODO rename to DocumentRenderingContext /** * Is the source document editable? + * * @return <code>true</code> if comes from an editable Doxia source (not generated one). + * @since 1.8 */ public boolean isEditable() { @@ -231,11 +238,46 @@ public class RenderingContext // TODO rename to DocumentRenderingContext } /** + * Is the document rendered from a Doxia source? + * + * @return <code>true</code> if comes from a Doxia source. + * @since 1.8 + */ + public boolean isDoxiaSource() + { + return StringUtils.isNotEmpty( extension ); + } + + /** * What is the generator (if any)? + * * @return <code>null</code> if no known generator + * @since 1.8 */ public String getGenerator() { return generator; } + + /** + * Get the relative path of basedir (when a Doxia source) + * + * @return the relative path of basedir when a Doxia source, or <code>null</code> if not a Doxia source + * @since 1.8 + */ + public String getBasedirRelativePath() + { + return basedirRelativePath; + } + + /** + * Get the relative path to Doxia source from build root. + * + * @return the relative path to Doxia source from build root, or <code>null</code> if not a Doxia source + * @since 1.8 + */ + public String getDoxiaSourcePath() + { + return isDoxiaSource() ? ( basedirRelativePath + '/' + inputName ) : null; + } } 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 552eb12..994e2a1 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 @@ -64,6 +64,8 @@ public class SiteRenderingContext private boolean usingDefaultTemplate; + private File rootDirectory; + private List<File> siteDirectories = new ArrayList<File>(); private Map<String, String> moduleExcludes; @@ -427,6 +429,7 @@ public class SiteRenderingContext * Directory where to save content after Velocity processing (<code>*.vm</code>), but before parsing it with Doxia. * * @return not null if the documents are to be saved + * @since 1.7 */ public File getProcessedContentOutput() { @@ -438,9 +441,33 @@ public class SiteRenderingContext * Doxia? * * @param processedContentOutput not null if the documents are to be saved + * @since 1.7 */ public void setProcessedContentOutput( File processedContentOutput ) { this.processedContentOutput = processedContentOutput; } + + /** + * Root directory, to calculate relative path to every site directories. + * Corresponds to the <code>pom.xml</code> directory for Maven build. + * + * @return the root directory + * @since 1.8 + */ + public File getRootDirectory() + { + return rootDirectory; + } + + /** + * Set the root directory. + * + * @param rootDirectory + * @since 1.8 + */ + public void setRootDirectory( File rootDirectory ) + { + this.rootDirectory = rootDirectory; + } } diff --git a/doxia-site-renderer/src/main/resources/org/apache/maven/doxia/siterenderer/resources/default-site.vm b/doxia-site-renderer/src/main/resources/org/apache/maven/doxia/siterenderer/resources/default-site.vm index eb2814e..77fd795 100644 --- a/doxia-site-renderer/src/main/resources/org/apache/maven/doxia/siterenderer/resources/default-site.vm +++ b/doxia-site-renderer/src/main/resources/org/apache/maven/doxia/siterenderer/resources/default-site.vm @@ -18,9 +18,9 @@ ## #parse( "default-site-macros.vm" ) <!-- Generated by Apache Maven Doxia Site Renderer#if( $doxiaSiteRendererVersion ) $doxiaSiteRendererVersion#end## -#if( $docRenderingContext.generator || $docRenderingContext.extension ) from## +#if( $docRenderingContext.generator || $docRenderingContext.doxiaSource ) from## #if( $docRenderingContext.generator ) $docRenderingContext.generator#end## -#if( $docRenderingContext.extension ) $docRenderingContext.basedir.name/$docRenderingContext.inputName#end## +#if( $docRenderingContext.doxiaSource ) $docRenderingContext.doxiaSourcePath#end## #end at $dateFormat.format( $currentDate ) --> <html xmlns="http://www.w3.org/1999/xhtml"#if ( $locale ) xml:lang="$locale.language" lang="$locale.language"#end> 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 ffcb3fb..4032b5d 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 @@ -162,10 +162,12 @@ public class DefaultSiteRendererTest .read( new FileReader( getTestFile( "src/test/resources/site/site.xml" ) ) ); SiteRenderingContext ctxt = getSiteRenderingContext( decoration, "src/test/resources/site", false ); - renderer.render( renderer.locateDocumentFiles( ctxt ).values(), ctxt, getTestFile( OUTPUT ) ); + ctxt.setRootDirectory( getTestFile( "" ) ); + renderer.render( renderer.locateDocumentFiles( ctxt, true ).values(), ctxt, getTestFile( OUTPUT ) ); ctxt = getSiteRenderingContext( decoration, "src/test/resources/site-validate", true ); - renderer.render( renderer.locateDocumentFiles( ctxt ).values(), ctxt, getTestFile( OUTPUT ) ); + ctxt.setRootDirectory( getTestFile( "" ) ); + renderer.render( renderer.locateDocumentFiles( ctxt, true ).values(), ctxt, getTestFile( OUTPUT ) ); // ---------------------------------------------------------------------- // Verify specific pages @@ -197,7 +199,8 @@ public class DefaultSiteRendererTest DocumentRenderer docRenderer = mock( DocumentRenderer.class ); when( docRenderer.isExternalReport() ).thenReturn( true ); when( docRenderer.getOutputName() ).thenReturn( "external/index" ); - when( docRenderer.getRenderingContext() ).thenReturn( new RenderingContext( new File( "" ), "index.html" ) ); + when( docRenderer.getRenderingContext() ).thenReturn( new RenderingContext( new File( "" ), "index.html", + "generator:external" ) ); SiteRenderingContext context = new SiteRenderingContext(); @@ -225,9 +228,9 @@ public class DefaultSiteRendererTest siteRenderingContext.setTemplateProperties( attributes ); siteRenderingContext.setTemplateName( "org/apache/maven/doxia/siterenderer/velocity-toolmanager.vm" ); - RenderingContext context = new RenderingContext( new File( "" ), "document.html" ); + RenderingContext context = new RenderingContext( new File( "" ), "document.html", "generator" ); SiteRendererSink sink = new SiteRendererSink( context ); - renderer.generateDocument( writer, sink, siteRenderingContext ); + renderer.mergeDocumentIntoSite( writer, sink, siteRenderingContext ); String renderResult = writer.toString(); String expectedResult = IOUtils.toString( getClass().getResourceAsStream( "velocity-toolmanager.expected.txt" ) ); @@ -253,9 +256,9 @@ public class DefaultSiteRendererTest SiteRenderingContext siteRenderingContext = renderer.createContextForTemplate( templateFile, attributes, new DecorationModel(), "defaultWindowTitle", Locale.ENGLISH ); - RenderingContext context = new RenderingContext( new File( "" ), "document.html" ); + RenderingContext context = new RenderingContext( new File( "" ), "document.html", "generator" ); SiteRendererSink sink = new SiteRendererSink( context ); - renderer.generateDocument( writer, sink, siteRenderingContext ); + renderer.mergeDocumentIntoSite( writer, sink, siteRenderingContext ); String renderResult = writer.toString(); String expectedResult = IOUtils.toString( getClass().getResourceAsStream( "velocity-toolmanager.expected.txt" ) ); @@ -283,9 +286,9 @@ public class DefaultSiteRendererTest SiteRenderingContext siteRenderingContext = renderer.createContextForSkin( skin, attributes, new DecorationModel(), "defaultWindowTitle", Locale.ENGLISH ); - RenderingContext context = new RenderingContext( new File( "" ), "document.html" ); + RenderingContext context = new RenderingContext( new File( "" ), "document.html", "generator" ); SiteRendererSink sink = new SiteRendererSink( context ); - renderer.generateDocument( writer, sink, siteRenderingContext ); + renderer.mergeDocumentIntoSite( writer, sink, siteRenderingContext ); String renderResult = writer.toString(); String expectedResult = IOUtils.toString( getClass().getResourceAsStream( "velocity-toolmanager.expected.txt" ) ); expectedResult = StringUtils.unifyLineSeparators( expectedResult ); diff --git a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/RenderingContextTest.java b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/RenderingContextTest.java index 6b1faad..2435847 100644 --- a/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/RenderingContextTest.java +++ b/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/RenderingContextTest.java @@ -43,32 +43,32 @@ public class RenderingContextTest File baseDir = new File( getBasedir() + File.separatorChar + "test" + File.separatorChar + "resources" ); String docName = "file.with.dot.in.name.xml"; - RenderingContext renderingContext = new RenderingContext( baseDir, docName, "", "xml" ); + RenderingContext renderingContext = new RenderingContext( baseDir, "test", docName, "", "xml", false ); assertEquals( "file.with.dot.in.name.html", renderingContext.getOutputName() ); assertEquals( ".", renderingContext.getRelativePath() ); - renderingContext = new RenderingContext( baseDir, docName ); // not Doxia source + renderingContext = new RenderingContext( baseDir, docName, "generator" ); // not Doxia source assertEquals( "file.with.dot.in.name.html", renderingContext.getOutputName() ); assertEquals( ".", renderingContext.getRelativePath() ); docName = "index.xml.vm"; - renderingContext = new RenderingContext( baseDir, docName, "", "xml" ); + renderingContext = new RenderingContext( baseDir, "test", docName, "", "xml", false ); assertEquals( "index.html", renderingContext.getOutputName() ); assertEquals( ".", renderingContext.getRelativePath() ); docName = "download.apt.vm"; - renderingContext = new RenderingContext( baseDir, docName, "", "apt" ); + renderingContext = new RenderingContext( baseDir, "test", docName, "", "apt", false ); assertEquals( "download.html", renderingContext.getOutputName() ); assertEquals( ".", renderingContext.getRelativePath() ); docName = "path/file.apt"; - renderingContext = new RenderingContext( baseDir, docName, "", "apt" ); + renderingContext = new RenderingContext( baseDir, "test", docName, "", "apt", false ); assertEquals( "path/file.html", renderingContext.getOutputName() ); assertEquals( "..", renderingContext.getRelativePath() ); - renderingContext = new RenderingContext( baseDir, docName ); + renderingContext = new RenderingContext( baseDir, docName, "generator" ); assertEquals( "path/file.html", renderingContext.getOutputName() ); assertEquals( "..", renderingContext.getRelativePath() ); } -- To stop receiving notification emails like this one, please contact ['"commits@maven.apache.org" <commits@maven.apache.org>'].