You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2016/02/06 23:32:42 UTC

svn commit: r1728892 - in /maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src: main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java site/apt/index.apt.vm

Author: michaelo
Date: Sat Feb  6 22:32:41 2016
New Revision: 1728892

URL: http://svn.apache.org/viewvc?rev=1728892&view=rev
Log:
[DOXIASITETOOLS-93] request-scoped default Velocity Tools are not accessible

Modified:
    maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
    maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/site/apt/index.apt.vm

Modified: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java?rev=1728892&r1=1728891&r2=1728892&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java Sat Feb  6 22:32:41 2016
@@ -69,7 +69,25 @@ import org.apache.maven.doxia.siterender
 import org.apache.maven.doxia.util.XmlValidator;
 import org.apache.velocity.Template;
 import org.apache.velocity.context.Context;
+import org.apache.velocity.tools.Scope;
 import org.apache.velocity.tools.ToolManager;
+import org.apache.velocity.tools.config.EasyFactoryConfiguration;
+import org.apache.velocity.tools.generic.AlternatorTool;
+import org.apache.velocity.tools.generic.ClassTool;
+import org.apache.velocity.tools.generic.ComparisonDateTool;
+import org.apache.velocity.tools.generic.ContextTool;
+import org.apache.velocity.tools.generic.ConversionTool;
+import org.apache.velocity.tools.generic.DisplayTool;
+import org.apache.velocity.tools.generic.EscapeTool;
+import org.apache.velocity.tools.generic.FieldTool;
+import org.apache.velocity.tools.generic.LinkTool;
+import org.apache.velocity.tools.generic.LoopTool;
+import org.apache.velocity.tools.generic.MathTool;
+import org.apache.velocity.tools.generic.NumberTool;
+import org.apache.velocity.tools.generic.RenderTool;
+import org.apache.velocity.tools.generic.ResourceTool;
+import org.apache.velocity.tools.generic.SortTool;
+import org.apache.velocity.tools.generic.XmlTool;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
@@ -444,8 +462,46 @@ public class DefaultSiteRenderer
     }
 
     /**
+     * Creates a Velocity Context with all generic tools configured wit the site rendering context.
+     *
+     * @param siteRenderingContext the site rendering context
+     * @return a Velocity tools managed context
+     */
+    protected Context createToolManagedVelocityContext( SiteRenderingContext siteRenderingContext )
+    {
+        Locale locale = siteRenderingContext.getLocale();
+        String dateFormat = siteRenderingContext.getDecoration().getPublishDate().getFormat();
+
+        EasyFactoryConfiguration config = new EasyFactoryConfiguration( false );
+        config.property( "safeMode", Boolean.FALSE );
+        config.toolbox( Scope.REQUEST )
+            .tool( ContextTool.class )
+            .tool( LinkTool.class )
+            .tool( LoopTool.class )
+            .tool( RenderTool.class );
+        config.toolbox( Scope.APPLICATION ).property( "locale", locale )
+            .tool( AlternatorTool.class )
+            .tool( ClassTool.class )
+            .tool( ComparisonDateTool.class ).property( "format", dateFormat )
+            .tool( ConversionTool.class ).property( "dateFormat", dateFormat )
+            .tool( DisplayTool.class )
+            .tool( EscapeTool.class )
+            .tool( FieldTool.class )
+            .tool( MathTool.class )
+            .tool( NumberTool.class )
+            .tool( ResourceTool.class ).property( "bundles", new String[] { "site-renderer" } )
+            .tool( SortTool.class )
+            .tool( XmlTool.class );
+
+        ToolManager manager = new ToolManager( false, false );
+        manager.configure( config );
+
+        return manager.createContext();
+    }
+
+    /**
      * Create a Velocity Context for a Doxia document, containing every information about rendered document.
-     * 
+     *
      * @param sink the site renderer sink for the document
      * @param siteRenderingContext the site rendering context
      * @return
@@ -453,9 +509,7 @@ public class DefaultSiteRenderer
     protected Context createDocumentVelocityContext( RenderingContext renderingContext,
                                                      SiteRenderingContext siteRenderingContext )
     {
-        ToolManager toolManager = new ToolManager( true );
-        Context context = toolManager.createContext();
-
+        Context context = createToolManagedVelocityContext( siteRenderingContext );
         // ----------------------------------------------------------------------
         // Data objects
         // ----------------------------------------------------------------------
@@ -535,7 +589,7 @@ 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 siteRenderingContext the site rendering context
      * @return

Modified: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/site/apt/index.apt.vm
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/site/apt/index.apt.vm?rev=1728892&r1=1728891&r2=1728892&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/site/apt/index.apt.vm (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/site/apt/index.apt.vm Sat Feb  6 22:32:41 2016
@@ -99,43 +99,48 @@ Doxia Site Tools - Site Renderer
 | <<<plexus>>>                    | {{{http://git.eclipse.org/c/sisu/org.eclipse.sisu.plexus.git/tree/org.eclipse.sisu.plexus/src/org/codehaus/plexus/PlexusContainer.java}<<<PlexusContainer>>>}} |  |
 *---------------------------------+------------------------------------------------------+-------------------------------+
 
-  And there are {{{http://velocity.apache.org/tools/releases/2.0/generic.html} Velocity Generic Tools}}:
+  Additionally, there are {{{http://velocity.apache.org/tools/releases/2.0/generic.html} Velocity Generic Tools}} populated
+  with the site locale, the decoration model's date format, and site renderer's resource bundle:
 
 #set( $generic = "http://velocity.apache.org/tools/releases/2.0/javadoc/org/apache/velocity/tools/generic" )
-*------------------+--------------------------------------------------+-------------------------------+
-|| variable        || type                                            || description                 ||
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<alternator>>> | {{{$generic/AlternatorTool.html}AlternatorTool}} | For creating Alternators to easily alternate over a set of values
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<convert>>>    | {{{$generic/ConversionTool.html}ConversionTool}} | For converting String values to richer object types
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<date>>>       | {{{$generic/DateTool.html}DateTool}}             | For manipulating, formatting, and comparing dates
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<display>>>    | {{{$generic/DisplayTool.html}DisplayTool}}       | For controlling display of references (e.g. truncating values, "pretty printing" lists, and displaying alternates when a reference is null)
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<esc>>>        | {{{$generic/EscapeTool.html}EscapeTool}}         | For common escaping needs in Velocity templates (e.g. escaping html, xml, javascript etc.)
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<field>>>      | {{{$generic/FieldTool.html}FieldTool}}           | For (easy) access to static fields in a class, such as string constants
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<loop>>>       | {{{$generic/LoopTool.html}LoopTool}}             | A convenience tool to use with \#foreach loops. It wraps a list with a custom iterator to provide greater control, allowing loops to end early, skip ahead and more
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<math>>>       | {{{$generic/MathTool.html}MathTool}}             | For performing math functions
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<number>>>     | {{{$generic/NumberTool.html}NumberTool}}         | For formatting and converting numbers
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<render>>>     | {{{$generic/RenderTool.html}RenderTool}}         | To evaluate and render arbitrary strings of VTL, including recursive rendering
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<text>>>       | {{{$generic/ResourceTool.html}ResourceTool}}     | For simplified access to ResourceBundles for internationalization or other dynamic content needs
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<sorter>>>     | {{{$generic/SortTool.html}SortTool}}             | Used to sort collections (or arrays, iterators, etc) on any arbitary set of properties exposed by the objects contained within the collection
-*------------------+--------------------------------------------------+-------------------------------+
-| <<<xml>>>        | {{{$generic/XmlTool.html}XmlTool}}               | For reading/navigating XML files. This uses dom4j under the covers and provides complete XPath support
-*------------------+--------------------------------------------------+-------------------------------+
-~~| <<<context>>>    | (causes RuntimeException)
-~~| <<<link>>>       | (causes NullPointerException)
+*------------------+----------------------------------------------------------+-------------------------------+
+|| variable        || type                                                    || description                 ||
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<alternator>>> | {{{$generic/AlternatorTool.html}AlternatorTool}}         | For creating alternators to easily alternate over a set of values.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<class>>>      | {{{$generic/ClassTool.html}ClassTool}}                   | For simplifying reflective lookup of information about classes and their fields, methods and constructors.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<context>>>    | {{{$generic/ContextTool.html}ContextTool}}               | For convenient access to context data and metadata.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<convert>>>    | {{{$generic/ConversionTool.html}ConversionTool}}         | For converting String values to richer object types.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<date>>>       | {{{$generic/ComparisonDateTool.html}ComparisonDateTool}} | For manipulating, formatting, and comparing dates.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<display>>>    | {{{$generic/DisplayTool.html}DisplayTool}}               | For controlling display of references (e.g., truncating values, "pretty printing" lists, and displaying alternates when a reference is null).
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<esc>>>        | {{{$generic/EscapeTool.html}EscapeTool}}                 | For common escaping needs in Velocity templates (e.g. escaping html, xml, javascript etc.).
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<field>>>      | {{{$generic/FieldTool.html}FieldTool}}                   | For (easy) access to static fields in a class, such as string constants.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<link>>>       | {{{$generic/LinkTool.html}LinkTool}}                     | For creating and manipulating URIs and URLs. The API for this tool is designed to closely resemble that of the VelocityView tool of the same name.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<loop>>>       | {{{$generic/LoopTool.html}LoopTool}}                     | A convenience tool to use with \#foreach loops. It wraps a list with a custom iterator to provide greater control, allowing loops to end early, skip ahead and more.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<math>>>       | {{{$generic/MathTool.html}MathTool}}                     | For performing math functions.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<number>>>     | {{{$generic/NumberTool.html}NumberTool}}                 | For formatting and converting numbers.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<render>>>     | {{{$generic/RenderTool.html}RenderTool}}                 | To evaluate and render arbitrary strings of VTL, including recursive rendering.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<text>>>       | {{{$generic/ResourceTool.html}ResourceTool}}             | For simplified access to resource bundles for internationalization or other dynamic content needs.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<sorter>>>     | {{{$generic/SortTool.html}SortTool}}                     | Used to sort collections (or arrays, iterators, etc) on any arbitary set of properties exposed by the objects contained within the collection.
+*------------------+----------------------------------------------------------+-------------------------------+
+| <<<xml>>>        | {{{$generic/XmlTool.html}XmlTool}}                       | For reading/navigating XML files. This uses dom4j under the covers and provides complete XPath support.
+*------------------+----------------------------------------------------------+-------------------------------+
 
-  See <<<{{{./xref/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.html\#L440}DefaultSiteRenderer.createDocumentVelocityContext(...)}}>>>
-  source for more details.
+  See <<<{{{./xref/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.html\#L470}DefaultSiteRenderer.createToolManagedVelocityContext(...)}}>>>
+  source for more details and the {{{http://velocity.apache.org/tools/devel/summary.html}tools usage summary}}.
 
 ** Maven Site Plugin