[DOXIASITETOOLS-183] add RenderingContext.isEditable()
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 704e421..9a17e3c 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
@@ -165,6 +165,14 @@
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<String, DocumentRenderer>();
Map<String, String> moduleExcludes = siteRenderingContext.getModuleExcludes();
@@ -181,7 +189,7 @@
String excludes = ( moduleExcludes == null ) ? null : moduleExcludes.get( module.getParserId() );
- addModuleFiles( moduleBasedir, module, excludes, files );
+ addModuleFiles( moduleBasedir, module, excludes, files, editable );
}
}
}
@@ -195,7 +203,7 @@
String excludes = ( moduleExcludes == null ) ? null : moduleExcludes.get( module.getParserId() );
- addModuleFiles( module.getBasedir(), parserModule, excludes, files );
+ addModuleFiles( module.getBasedir(), parserModule, excludes, files, editable );
}
catch ( ParserModuleNotFoundException e )
{
@@ -222,7 +230,7 @@
}
private void addModuleFiles( File moduleBasedir, ParserModule module, String excludes,
- Map<String, DocumentRenderer> files )
+ Map<String, DocumentRenderer> files, boolean editable )
throws IOException, RendererException
{
if ( !moduleBasedir.exists() || ArrayUtils.isEmpty( module.getExtensions() ) )
@@ -246,7 +254,7 @@
for ( String doc : docs )
{
RenderingContext context =
- new RenderingContext( moduleBasedir, doc, module.getParserId(), extension );
+ new RenderingContext( moduleBasedir, 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/Renderer.java b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/Renderer.java
index 701b66f..148cef9 100644
--- a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/Renderer.java
+++ b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/Renderer.java
@@ -67,8 +67,8 @@
* @param sink the Site Renderer Sink that received the Doxia events during document content rendering.
* @param siteRenderingContext the SiteRenderingContext to use.
* @throws RendererException if it bombs.
+ * @deprecated since 1.8, use mergeDocumentIntoSite
*/
- @Deprecated
void generateDocument( Writer writer, SiteRendererSink sink, SiteRenderingContext siteRenderingContext )
throws RendererException;
@@ -151,11 +151,25 @@
* @return the Doxia document renderers in a Map keyed by output file name.
* @throws IOException if it bombs.
* @throws RendererException if it bombs.
+ * @deprecated since 1.8, use locateDocumentFiles with editable parameter
*/
Map<String, DocumentRenderer> locateDocumentFiles( SiteRenderingContext siteRenderingContext )
throws IOException, RendererException;
/**
+ * Locate Doxia document source files in the site source context.
+ *
+ * @param siteRenderingContext
+ * @param mark Doxia document renderer as editable? (should not mark 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
+ */
+ Map<String, DocumentRenderer> locateDocumentFiles( SiteRenderingContext siteRenderingContext, boolean editable )
+ throws IOException, RendererException;
+
+ /**
* 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/RenderingContext.java b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/RenderingContext.java
index 6540066..86ce0ba 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
@@ -48,6 +48,8 @@
private Map<String, String> attributes;
+ private final boolean editable;
+
/**
* <p>
* Constructor for RenderingContext when document is not rendered from a Doxia markup source.
@@ -59,7 +61,13 @@
*/
public RenderingContext( File basedir, String document )
{
- this( basedir, document, null, null );
+ this( basedir, document, null, null, false );
+ }
+
+ @Deprecated
+ public RenderingContext( File basedir, String document, String parserId, String extension )
+ {
+ this( basedir, document, parserId, extension, false);
}
/**
@@ -74,7 +82,7 @@
* @param extension the source document filename extension, may be null if document not rendered from
* a Doxia source.
*/
- public RenderingContext( File basedir, String document, String parserId, String extension )
+ public RenderingContext( File basedir, String document, String parserId, String extension, boolean editable )
{
this.basedir = basedir;
this.extension = extension;
@@ -85,6 +93,8 @@
if ( StringUtils.isNotEmpty( extension ) )
{
// document comes from a Doxia source: see DoxiaDocumentRenderer
+ this.editable = editable;
+
// here we know the parserId and extension, we can play with this to get output name from document:
// - index.xml -> index.html
// - index.xml.vm -> index.html
@@ -99,7 +109,8 @@
else
{
// document does not come from a Doxia source but direct Sink API
- // just make sure output name ends in .html
+ this.editable = false;
+ // make sure output name ends in .html
this.outputName = document.substring( 0, document.lastIndexOf( '.' ) ).replace( '\\', '/' ) + ".html";
}
@@ -188,4 +199,13 @@
{
return extension;
}
+
+ /**
+ * Is the source document editable?
+ * @return <code>true</code> if comes from an editable Doxia source (not generated one).
+ */
+ public boolean isEditable()
+ {
+ return editable;
+ }
}