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
commit 280fff917d264b80f2828c101ba0d2d376a91d15 Author: HervĂ© Boutemy <hbout...@apache.org> AuthorDate: Tue Dec 12 07:46:29 2017 +0100 [DOXIASITETOOLS-182] created DocumentContent interface to model SiteRendererSink output --- .../doxia/siterenderer/DefaultSiteRenderer.java | 36 ++++--- .../maven/doxia/siterenderer/DocumentContent.java | 66 +++++++++++++ .../apache/maven/doxia/siterenderer/Renderer.java | 14 +++ .../doxia/siterenderer/sink/SiteRendererSink.java | 110 ++++++++------------- 4 files changed, 142 insertions(+), 84 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 25f73d1..43c7609 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 @@ -470,7 +470,7 @@ public class DefaultSiteRenderer IOUtil.close( reader ); } - generateDocument( writer, sink, siteContext ); + mergeDocumentIntoSite( writer, (DocumentContent) sink, siteContext ); } /** @@ -605,22 +605,22 @@ public class DefaultSiteRenderer * Create a Velocity Context for the site template decorating the document. In addition to all the informations * from the document, this context contains data gathered in {@link SiteRendererSink} during document rendering. * - * @param siteRendererSink the site renderer sink for the document + * @param content the document content to be merged into the template * @param siteRenderingContext the site rendering context * @return */ - protected Context createSiteTemplateVelocityContext( SiteRendererSink siteRendererSink, + protected Context createSiteTemplateVelocityContext( DocumentContent content, SiteRenderingContext siteRenderingContext ) { // first get the context from document - Context context = createDocumentVelocityContext( siteRendererSink.getRenderingContext(), siteRenderingContext ); + Context context = createDocumentVelocityContext( content.getRenderingContext(), siteRenderingContext ); // then add data objects from rendered document // Add infos from document - context.put( "authors", siteRendererSink.getAuthors() ); + context.put( "authors", content.getAuthors() ); - context.put( "shortTitle", siteRendererSink.getTitle() ); + context.put( "shortTitle", content.getTitle() ); // DOXIASITETOOLS-70: Prepend the project name to the title, if any String title = ""; @@ -638,16 +638,16 @@ public class DefaultSiteRenderer { title += " – "; // Symbol Name: En Dash, Html Entity: – } - title += siteRendererSink.getTitle(); + title += content.getTitle(); context.put( "title", title ); - context.put( "headContent", siteRendererSink.getHead() ); + context.put( "headContent", content.getHead() ); - context.put( "bodyContent", siteRendererSink.getBody() ); + context.put( "bodyContent", content.getBody() ); // document date (got from Doxia Sink date() API) - String documentDate = siteRendererSink.getDate(); + String documentDate = content.getDate(); if ( StringUtils.isNotEmpty( documentDate ) ) { context.put( "documentDate", documentDate ); @@ -667,13 +667,13 @@ public class DefaultSiteRenderer catch ( java.text.ParseException e ) { getLogger().warn( "Could not parse date '" + documentDate + "' from " - + siteRendererSink.getRenderingContext().getInputName() + + content.getRenderingContext().getInputName() + " (expected yyyy-MM-dd format), ignoring!" ); } } // document rendering context, to get eventual inputName - context.put( "docRenderingContext", siteRendererSink.getRenderingContext() ); + context.put( "docRenderingContext", content.getRenderingContext() ); return context; } @@ -682,12 +682,20 @@ public class DefaultSiteRenderer public void generateDocument( Writer writer, SiteRendererSink sink, SiteRenderingContext siteRenderingContext ) throws RendererException { + mergeDocumentIntoSite( writer, sink, siteRenderingContext ); + } + + /** {@inheritDoc} */ + public void mergeDocumentIntoSite( Writer writer, DocumentContent content, + SiteRenderingContext siteRenderingContext ) + throws RendererException + { String templateName = siteRenderingContext.getTemplateName(); getLogger().debug( "Processing Velocity for template " + templateName + " on " - + sink.getRenderingContext().getInputName() ); + + content.getRenderingContext().getInputName() ); - Context context = createSiteTemplateVelocityContext( sink, siteRenderingContext ); + Context context = createSiteTemplateVelocityContext( content, siteRenderingContext ); ClassLoader old = null; diff --git a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DocumentContent.java b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DocumentContent.java new file mode 100644 index 0000000..4bcbb9e --- /dev/null +++ b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DocumentContent.java @@ -0,0 +1,66 @@ +package org.apache.maven.doxia.siterenderer; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.util.List; + +/** + * Document content, that will be merged into a site template. + * + * @since 1.8 + */ +public interface DocumentContent +{ + /** + * Get the title of the document. + * @return the document title + */ + String getTitle(); + + /** + * Get the date of the document. + * @return the document date + */ + String getDate(); + + /** + * Get the authors of the document. + * @return the document authors + */ + List<String> getAuthors(); + + /** + * Get the html head of the document. + * @return the document html head + */ + String getHead(); + + /** + * Get the html body of the document. + * @return the document body head + */ + String getBody(); + + /** + * Get the document rendering context. + * @return the document rendering context + */ + RenderingContext getRenderingContext(); +} 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 9607209..82b3068 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 @@ -69,10 +69,24 @@ public interface Renderer * @param siteRenderingContext the SiteRenderingContext to use. * @throws RendererException if it bombs. */ + @Deprecated void generateDocument( Writer writer, SiteRendererSink sink, SiteRenderingContext siteRenderingContext ) throws RendererException; /** + * Generate a document output integrated in a site from a document content, + * i.e. merge the document content into the site template. + * + * @param writer the Writer to use. + * @param content the document content to be merged + * @param siteRenderingContext the SiteRenderingContext to use. + * @throws RendererException if it bombs. + * @since 1.8 + */ + void mergeDocumentIntoSite( Writer writer, DocumentContent content, SiteRenderingContext siteRenderingContext ) + throws RendererException; + + /** * Create a Site Rendering Context for a site using a skin. * * @param skin diff --git a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java index d47d3d8..9f59855 100644 --- a/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java +++ b/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java @@ -31,6 +31,7 @@ import javax.swing.text.html.HTML.Attribute; import org.apache.maven.doxia.module.xhtml.XhtmlSink; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.SinkEventAttributes; +import org.apache.maven.doxia.siterenderer.DocumentContent; import org.apache.maven.doxia.siterenderer.RenderingContext; import org.apache.maven.doxia.util.HtmlTools; import org.codehaus.plexus.util.StringUtils; @@ -41,17 +42,11 @@ import org.codehaus.plexus.util.StringUtils; * into skin or template: title, date, authors, head, body * * @author <a href="mailto:eveni...@codehaus.org">Emmanuel Venisse</a> - * @version $Id$ - * @see #getTitle() - * @see #getDate() - * @see #getAuthors() - * @see #getHead() - * @see #getBody() */ @SuppressWarnings( "checkstyle:methodname" ) public class SiteRendererSink extends XhtmlSink - implements Sink, org.codehaus.doxia.sink.Sink + implements Sink, org.codehaus.doxia.sink.Sink, DocumentContent { private String date = ""; @@ -124,16 +119,6 @@ public class SiteRendererSink resetTextBuffer(); } - /** - * <p>Getter for the field <code>title</code>.</p> - * - * @return a {@link java.lang.String} object. - */ - public String getTitle() - { - return title; - } - /** {@inheritDoc} */ @Override public void author() @@ -155,16 +140,6 @@ public class SiteRendererSink resetTextBuffer(); } - /** - * <p>Getter for the field <code>authors</code>.</p> - * - * @return a {@link java.util.List} object. - */ - public List<String> getAuthors() - { - return authors; - } - /** {@inheritDoc} */ @Override public void date() @@ -185,16 +160,6 @@ public class SiteRendererSink } /** - * <p>Getter for the field <code>date</code>.</p> - * - * @return a {@link java.lang.String} object. - */ - public String getDate() - { - return date; - } - - /** * {@inheritDoc} * * Do nothing. @@ -218,28 +183,6 @@ public class SiteRendererSink // nop } - /** - * <p>getBody.</p> - * - * @return a {@link java.lang.String} object. - */ - public String getBody() - { - return writer.toString(); - } - - /** - * <p>getHead.</p> - * - * @return a {@link java.lang.String} object. - * - * @since 1.1.1 - */ - public String getHead() - { - return headWriter.toString(); - } - /** {@inheritDoc} */ @Override public void head_() @@ -315,17 +258,6 @@ public class SiteRendererSink super.onSectionTitle_( depth ); } - /** - * <p>Getter for the field <code>renderingContext</code> containing the document rendering context.</p> - * - * @return the current document rendering context - * @since 1.1 - */ - public RenderingContext getRenderingContext() - { - return renderingContext; - } - /** {@inheritDoc} */ @Override public void text( String text ) @@ -376,4 +308,42 @@ public class SiteRendererSink super.write( txt ); } } + + // DocumentContent interface + + /** {@inheritDoc} */ + public String getTitle() + { + return title; + } + + /** {@inheritDoc} */ + public List<String> getAuthors() + { + return authors; + } + + /** {@inheritDoc} */ + public String getDate() + { + return date; + } + + /** {@inheritDoc} */ + public String getBody() + { + return writer.toString(); + } + + /** {@inheritDoc} */ + public String getHead() + { + return headWriter.toString(); + } + + /** {@inheritDoc} */ + public RenderingContext getRenderingContext() + { + return renderingContext; + } } -- To stop receiving notification emails like this one, please contact "commits@maven.apache.org" <commits@maven.apache.org>.