velocity-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nbu...@apache.org
Subject svn commit: r627207 - in /velocity/tools/trunk: examples/showcase/ src/main/java/org/apache/velocity/tools/generic/ src/main/java/org/apache/velocity/tools/view/ src/main/java/org/apache/velocity/tools/view/tools/ src/test/java/org/apache/velocity/tool...
Date Wed, 13 Feb 2008 00:54:00 GMT
Author: nbubna
Date: Tue Feb 12 16:53:59 2008
New Revision: 627207

URL: http://svn.apache.org/viewvc?rev=627207&view=rev
Log:
move generic ContextTool functions to o.a.v.t.generic.ContextTool and put the view-specific
functions in o.a.v.t.view.ViewContextTool

Added:
    velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/ContextTool.java
  (with props)
    velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/ViewContextTool.java
  (with props)
Removed:
    velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/ContextTool.java
Modified:
    velocity/tools/trunk/examples/showcase/context.vm
    velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/tools.xml
    velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/tools.xml
    velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/tools/ContextTool.java
    velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ViewToolsTests.java
    velocity/tools/trunk/xdocs/generic.project.xml
    velocity/tools/trunk/xdocs/generic.xml
    velocity/tools/trunk/xdocs/view.project.xml
    velocity/tools/trunk/xdocs/view.xml

Modified: velocity/tools/trunk/examples/showcase/context.vm
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/examples/showcase/context.vm?rev=627207&r1=627206&r2=627207&view=diff
==============================================================================
--- velocity/tools/trunk/examples/showcase/context.vm (original)
+++ velocity/tools/trunk/examples/showcase/context.vm Tue Feb 12 16:53:59 2008
@@ -16,14 +16,17 @@
 ## under the License.
 #title( 'ContextTool' )
 <p>
-$text.demo.thisPage.insert("#doclink( 'ContextTool' false )").
+$text.demo.thisPage.insert("#doclink( 'ViewContextTool' false )").
 </p>
 <p>
 $text.get('context.intro')
 </p>
 
 #set( $toolname = 'context' )
-#set( $toolclass = $context.class )
+## all the interesting methods are actually in the superclass
+## since ViewContextTool only adds request/session/app attributes
+## and not any additional methods
+#set( $toolclass = $context.class.superclass )
 #set( $toollink = $doclink )
 #set( $toolDemo = 
 "${esc.h}foreach( ${esc.d}key in ${esc.d}context.keys )

Added: velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/ContextTool.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/ContextTool.java?rev=627207&view=auto
==============================================================================
--- velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/ContextTool.java
(added)
+++ velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/ContextTool.java
Tue Feb 12 16:53:59 2008
@@ -0,0 +1,212 @@
+package org.apache.velocity.tools.generic;
+
+/*
+ * 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.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import org.apache.velocity.context.AbstractContext;
+import org.apache.velocity.context.Context;
+import org.apache.velocity.tools.Scope;
+import org.apache.velocity.tools.ToolContext;
+import org.apache.velocity.tools.config.DefaultKey;
+import org.apache.velocity.tools.config.InvalidScope;
+import org.apache.velocity.tools.generic.ValueParser;
+
+/**
+ * <p>Tool for convenient access to {@link Context} data and
+ *  meta-data.</p>
+ * <p><pre>
+ * Template example(s):
+ *  #foreach( $key in $context.keys )
+ *    $key = $context.get($key)
+ *  #end
+ *
+ * Toolbox configuration:
+ * &lt;tools&gt;
+ *   &lt;toolbox scope="request"&gt;
+ *     &lt;tool class="org.apache.velocity.tools.generic.ContextTool"/&gt;
+ *   &lt;/toolbox&gt;
+ * &lt;/tools&gt;
+ * </pre></p>
+ *
+ * <p>This class is only designed for use as a request-scope tool.</p>
+ *
+ * @author Nathan Bubna
+ * @since VelocityTools 2.0
+ * @version $Id: ContextTool.java 385122 2006-03-11 18:37:42Z nbubna $
+ */
+@DefaultKey("context")
+@InvalidScope({Scope.APPLICATION,Scope.SESSION})
+public class ContextTool
+{
+    /**
+     * The key used for specifying whether to hide keys with '.' in them.
+     */
+    public static final String SAFE_MODE_KEY = "safeMode";
+
+    protected Context context;
+    protected Map<String,Object> toolbox;
+
+    private boolean safeMode = true;
+
+
+    /**
+     * Initializes this instance for the current request.
+     * Also looks for a safe-mode configuration setting. By default,
+     * safeMode is true and thus keys with '.' in them are hidden.
+     */
+    public void configure(Map params)
+    {
+        if (params != null)
+        {
+            configure(new ValueParser(params));
+        }
+    }
+
+    protected void configure(ValueParser parser)
+    {
+        this.safeMode = parser.getBoolean(SAFE_MODE_KEY, true);
+
+        this.context = (Context)parser.get(ToolContext.CONTEXT_KEY);
+    }
+
+
+    /**
+     * Returns the context being analyzed by this tool.
+     */
+    public Context getThis()
+    {
+        return this.context;
+    }
+
+    /**
+     * <p>Returns a read-only view of the toolbox {@link Map}
+     * for this context.</p>
+     * @return a map of all available tools for this request
+     *         or {@code null} if such a map is not available
+     */
+    public Map<String,Object> getToolbox()
+    {
+        if (this.toolbox == null && this.context instanceof ToolContext)
+        {
+            this.toolbox = ((ToolContext)context).getToolbox();
+        }
+        return this.toolbox;
+    }
+
+    /**
+     * <p>Return a {@link Set} of the available reference keys in the current
+     * context.</p>
+     */
+    public Set getKeys()
+    {
+        Set keys = new HashSet();
+
+        // fill the keyset in extendable method
+        fillKeyset(keys);
+
+        // if we're in safe mode, remove keys that contain '.'
+        if (this.safeMode)
+        {
+            for (Iterator i = keys.iterator(); i.hasNext(); )
+            {
+                String key = String.valueOf(i.next());
+                if (key.indexOf('.') >= 0)
+                {
+                    i.remove();
+                }
+            }
+        }
+        // return the key set
+        return keys;
+    }
+
+
+    /**
+     * Actually do the work of filling in the set of keys
+     * for {@link #getKeys} here so subclasses can add keys too.
+     */
+    protected void fillKeyset(Set keys)
+    {
+        //NOTE: we don't need to manually add the toolbox keys here
+        //      because retrieval of those depends on the context being
+        //      a ToolContext which would already give tool keys below
+
+        // recurse down the velocity context collecting keys
+        Context velctx = this.context;
+        while (velctx != null)
+        {
+            Object[] ctxKeys = velctx.getKeys();
+            keys.addAll(Arrays.asList(ctxKeys));
+            if (velctx instanceof AbstractContext)
+            {
+                velctx = ((AbstractContext)velctx).getChainedContext();
+            }
+            else
+            {
+                velctx = null;
+            }
+        }
+    }
+
+    /**
+     * <p>Return a {@link Set} of the available values in the current
+     * context.</p>
+     */
+    public Set getValues()
+    {
+        //TODO: this could be a lot more efficient
+        Set keys = getKeys();
+        Set values = new HashSet(keys.size());
+        for (Iterator i = keys.iterator(); i.hasNext(); )
+        {
+            String key = String.valueOf(i.next());
+            values.add(this.context.get(key));
+        }
+        return values;
+    }
+
+
+    /**
+     * <p>Returns {@code true} if the context contains a value for the specified
+     * reference name (aka context key).</p>
+     */
+    public boolean contains(Object refName)
+    {
+        return (get(refName) != null);
+    }
+
+    /**
+     * Retrieves the value for the specified reference name (aka context key).
+     */
+    public Object get(Object refName)
+    {
+        String key = String.valueOf(refName);
+        if (safeMode && key.indexOf('.') >= 0)
+        {
+            return null;
+        }
+        return this.context.get(key);
+    }
+
+}

Propchange: velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/ContextTool.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/tools.xml
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/tools.xml?rev=627207&r1=627206&r2=627207&view=diff
==============================================================================
--- velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/tools.xml (original)
+++ velocity/tools/trunk/src/main/java/org/apache/velocity/tools/generic/tools.xml Tue Feb
12 16:53:59 2008
@@ -36,12 +36,14 @@
         <tool class="org.apache.velocity.tools.generic.RenderTool"/>
         <tool class="org.apache.velocity.tools.generic.ResourceTool"/>
         <tool class="org.apache.velocity.tools.generic.SortTool"/>
+    </toolbox>
+    <toolbox scope="request">
+        <tool class="org.apache.velocity.tools.generic.ContextTool"/>
+        <tool class="org.apache.velocity.tools.generic.LoopTool"/>
         <!-- 
         This is not useful in its default form.
+        But, if it were, it'd be request-scoped.
         <tool class="org.apache.velocity.tools.generic.ValueParser"/>
         -->
-    </toolbox>
-    <toolbox scope="request">
-        <tool class="org.apache.velocity.tools.generic.LoopTool"/>
     </toolbox>
 </tools>

Added: velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/ViewContextTool.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/ViewContextTool.java?rev=627207&view=auto
==============================================================================
--- velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/ViewContextTool.java
(added)
+++ velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/ViewContextTool.java
Tue Feb 12 16:53:59 2008
@@ -0,0 +1,104 @@
+package org.apache.velocity.tools.view;
+
+/*
+ * 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.Enumeration;
+import java.util.Set;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.servlet.ServletContext;
+import org.apache.velocity.tools.generic.ContextTool;
+import org.apache.velocity.tools.generic.ValueParser;
+import org.apache.velocity.tools.view.ViewContext;
+
+/**
+ * <p>Extension of {@link ContextTool} that includes keys and values
+ * from the {@link HttpServletRequest}, {@link HttpSession} and
+ * {@link ServletContext}.</p>
+ * <p><pre>
+ * Template example(s):
+ *  #foreach( $key in $context.keys )
+ *    $key = $context.get($key)
+ *  #end
+ *
+ * Toolbox configuration:
+ * &lt;tools&gt;
+ *   &lt;toolbox scope="request"&gt;
+ *     &lt;tool class="org.apache.velocity.tools.view.ViewContextTool"/&gt;
+ *   &lt;/toolbox&gt;
+ * &lt;/tools&gt;
+ * </pre></p>
+ *
+ * <p>This class is only designed for use as a request-scope VelocityView tool.</p>
+ *
+ * @author Nathan Bubna
+ * @since VelocityTools 2.0
+ * @version $Id: ViewContextTool.java 385122 2006-03-11 18:37:42Z nbubna $
+ */
+public class ViewContextTool extends ContextTool
+{
+    protected HttpServletRequest request;
+    protected HttpSession session;
+    protected ServletContext application;
+
+
+    @Override
+    protected void configure(ValueParser parser)
+    {
+        // do ContextTool config first
+        super.configure(parser);
+
+        this.request = (HttpServletRequest)parser.get(ViewContext.REQUEST);
+        this.session = request.getSession(false);
+        this.application = (ServletContext)parser.get(ViewContext.SERVLET_CONTEXT_KEY);
+    }
+
+    @Override
+    protected void fillKeyset(Set keys)
+    {
+        // start with the standard ContextTool's keys
+        super.fillKeyset(keys);
+
+        // get request attribute keys
+        Enumeration e = request.getAttributeNames();
+        while (e.hasMoreElements())
+        {
+            keys.add(e.nextElement());
+        }
+
+        // get session attribute keys if we have a session
+        if (session != null)
+        {
+            e = session.getAttributeNames();
+            while (e.hasMoreElements())
+            {
+                keys.add(e.nextElement());
+            }
+        }
+
+        // get request attribute keys
+        e = application.getAttributeNames();
+        while (e.hasMoreElements())
+        {
+            keys.add(e.nextElement());
+        }
+    }
+
+}

Propchange: velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/ViewContextTool.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/tools.xml
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/tools.xml?rev=627207&r1=627206&r2=627207&view=diff
==============================================================================
--- velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/tools.xml (original)
+++ velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/tools.xml Tue Feb 12
16:53:59 2008
@@ -22,12 +22,12 @@
 <tools> 
     <data type="boolean" key="VIEW_TOOLS_AVAILABLE" value="true"/>
     <toolbox scope="request">
-        <tool class="org.apache.velocity.tools.view.ContextTool"/>
         <tool class="org.apache.velocity.tools.view.CookieTool"/>
         <tool class="org.apache.velocity.tools.view.ImportTool"/>
         <tool class="org.apache.velocity.tools.view.LinkTool"/>
         <tool class="org.apache.velocity.tools.view.PagerTool"/>
         <tool class="org.apache.velocity.tools.view.ParameterTool"/>
+        <tool class="org.apache.velocity.tools.view.ViewContextTool"/>
         <tool class="org.apache.velocity.tools.view.ViewRenderTool"/>
         <tool class="org.apache.velocity.tools.view.ViewResourceTool"/>
         <!-- 

Modified: velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/tools/ContextTool.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/tools/ContextTool.java?rev=627207&r1=627206&r2=627207&view=diff
==============================================================================
--- velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/tools/ContextTool.java
(original)
+++ velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/tools/ContextTool.java
Tue Feb 12 16:53:59 2008
@@ -21,13 +21,13 @@
 
 import java.util.Map;
 import org.apache.velocity.tools.view.ViewContext;
+import org.apache.velocity.tools.view.ViewContextTool;
 
 /**
- * Use {@link org.apache.velocity.tools.view.ContextTool}
+ * Use {@link org.apache.velocity.tools.view.ViewContextTool}
  */
 @Deprecated
-public class ContextTool extends
-    org.apache.velocity.tools.view.ContextTool
+public class ContextTool extends ViewContextTool
 {
     @Deprecated
     public static final String OLD_SAFE_MODE_KEY = "safe-mode";
@@ -37,10 +37,11 @@
     {
         if (obj instanceof ViewContext)
         {
-            this.context = (ViewContext)obj;
-            this.request = context.getRequest();
+            ViewContext ctx = (ViewContext)obj;
+            this.context = ctx.getVelocityContext();
+            this.request = ctx.getRequest();
             this.session = request.getSession(false);
-            this.application = context.getServletContext();
+            this.application = ctx.getServletContext();
         }
     }
 

Modified: velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ViewToolsTests.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ViewToolsTests.java?rev=627207&r1=627206&r2=627207&view=diff
==============================================================================
--- velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ViewToolsTests.java
(original)
+++ velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ViewToolsTests.java
Tue Feb 12 16:53:59 2008
@@ -183,7 +183,7 @@
 
         /* check get('context') */
         resp = submitWithParam(resp,"get_Object","get_Object1","'context'");
-        checkTextStart(resp,"get(java.lang.Object)","org.apache.velocity.tools.view.ContextTool");
+        checkTextStart(resp,"get(java.lang.Object)","org.apache.velocity.tools.view.ViewContextTool");
 
         /* check keys (the only expected uppercase is in 'velocityCount') */
         checkTextRegex(resp,"getKeys()","^\\[[a-z_A-Z]+(?:,\\s*[a-z_A-Z]+)*\\]$");

Modified: velocity/tools/trunk/xdocs/generic.project.xml
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/xdocs/generic.project.xml?rev=627207&r1=627206&r2=627207&view=diff
==============================================================================
--- velocity/tools/trunk/xdocs/generic.project.xml (original)
+++ velocity/tools/trunk/xdocs/generic.project.xml Tue Feb 12 16:53:59 2008
@@ -29,6 +29,7 @@
           <item name="AlternatorTool"       href="javadoc/org/apache/velocity/tools/generic/AlternatorTool.html"/>
/>
           <item name="ClassTool"            href="javadoc/org/apache/velocity/tools/generic/ClassTool.html"/>
           <item name="ComparisonDateTool"   href="javadoc/org/apache/velocity/tools/generic/ComparisonDateTool.html"/>
+          <item name="ContextTool"          href="javadoc/org/apache/velocity/tools/generic/ContextTool.html"/>
           <item name="ConversionTool"       href="javadoc/org/apache/velocity/tools/generic/ConversionTool.html"/>
           <item name="DateTool"             href="javadoc/org/apache/velocity/tools/generic/DateTool.html"/>
           <item name="DisplayTool"          href="javadoc/org/apache/velocity/tools/generic/DisplayTool.html"/>

Modified: velocity/tools/trunk/xdocs/generic.xml
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/xdocs/generic.xml?rev=627207&r1=627206&r2=627207&view=diff
==============================================================================
--- velocity/tools/trunk/xdocs/generic.xml (original)
+++ velocity/tools/trunk/xdocs/generic.xml Tue Feb 12 16:53:59 2008
@@ -73,6 +73,8 @@
         <li><a href="javadoc/org/apache/velocity/tools/generic/ClassTool.html">ClassTool</a>
             - For simplifying reflective lookup of information about
             Classes and their fields, methods and constructors.</li>
+        <li><a href="javadoc/org/apache/velocity/tools/view/ContextTool.html">ContextTool</a>
+             - For convenient access to Context data and meta-data.</li>
         <li><a href="javadoc/org/apache/velocity/tools/generic/ConversionTool.html">ConversionTool</a>
             - For converting String values to richer object types.</li>
         <li><a href="javadoc/org/apache/velocity/tools/generic/DateTool.html">DateTool</a>

Modified: velocity/tools/trunk/xdocs/view.project.xml
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/xdocs/view.project.xml?rev=627207&r1=627206&r2=627207&view=diff
==============================================================================
--- velocity/tools/trunk/xdocs/view.project.xml (original)
+++ velocity/tools/trunk/xdocs/view.project.xml Tue Feb 12 16:53:59 2008
@@ -31,12 +31,12 @@
       <subGroup name="Tools" href="javadoc/org/apache/velocity/tools/view/package-summary.html">
         <item name="AbstractSearchTool" href="javadoc/org/apache/velocity/tools/view/AbstractSearchTool.html"/>
         <item name="BrowserTool"        href="javadoc/org/apache/velocity/tools/view/BrowserTool.html"/>
-        <item name="ContextTool"        href="javadoc/org/apache/velocity/tools/view/ContextTool.html"/>
         <item name="CookieTool"         href="javadoc/org/apache/velocity/tools/view/CookieTool.html"/>
         <item name="ImportTool"         href="javadoc/org/apache/velocity/tools/view/ImportTool.html"/>
         <item name="LinkTool"           href="javadoc/org/apache/velocity/tools/view/LinkTool.html"/>
         <item name="PagerTool"          href="javadoc/org/apache/velocity/tools/view/PagerTool.html"/>
         <item name="ParameterTool"      href="javadoc/org/apache/velocity/tools/view/ParameterTool.html"/>
+        <item name="ViewContextTool"    href="javadoc/org/apache/velocity/tools/view/ViewContextTool.html"/>
         <item name="ViewRenderTool"     href="javadoc/org/apache/velocity/tools/view/ViewRenderTool.html"/>
         <item name="ViewResourceTool"   href="javadoc/org/apache/velocity/tools/view/ViewResourceTool.html"/>
       </subGroup>

Modified: velocity/tools/trunk/xdocs/view.xml
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/xdocs/view.xml?rev=627207&r1=627206&r2=627207&view=diff
==============================================================================
--- velocity/tools/trunk/xdocs/view.xml (original)
+++ velocity/tools/trunk/xdocs/view.xml Tue Feb 12 16:53:59 2008
@@ -149,10 +149,6 @@
           the template.
         </li>
         <li>
-          <a href="javadoc/org/apache/velocity/tools/view/ContextTool.html">ContextTool</a>
-          - For convenient access to ViewContext data and meta-data.
-        </li>
-        <li>
           <a href="javadoc/org/apache/velocity/tools/view/CookieTool.html">CookieTool</a>
           - For convenient cookie access and creation.
         </li>
@@ -172,6 +168,10 @@
         <li>
           <a href="javadoc/org/apache/velocity/tools/view/ParameterTool.html">ParameterTool</a>
           - For easy retrieval and parsing of ServletRequest parameters.
+        </li>
+        <li>
+          <a href="javadoc/org/apache/velocity/tools/view/ViewContextTool.html">ViewContextTool</a>
+          - For convenient access to ViewContext data and meta-data.
         </li>
         <li>
           <a href="javadoc/org/apache/velocity/tools/view/ViewRenderTool.html">ViewRenderTool</a>



Mime
View raw message