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