You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2017/12/12 06:46:32 UTC

[maven-doxia-sitetools] 02/02: [DOXIASITETOOLS-182] created DocumentContent interface

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 <hb...@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 += " &#x2013; "; // Symbol Name: En Dash, Html Entity: &ndash;
         }
-        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:evenisse@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" <co...@maven.apache.org>.