Author: nbubna
Date: Fri Apr 27 20:38:44 2007
New Revision: 533286

URL: http://svn.apache.org/viewvc?view=rev&rev=533286
Log:
- move support for common, non-servlet tool properties into ToolContext
- make better use of constants for keys
- add getToolbox() to ViewToolContext

Modified:
    
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ToolContext.java
    
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/ViewContext.java
    
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/ViewToolContext.java

Modified: 
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ToolContext.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ToolContext.java?view=diff&rev=533286&r1=533285&r2=533286
==============================================================================
--- 
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ToolContext.java
 (original)
+++ 
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ToolContext.java
 Fri Apr 27 20:38:44 2007
@@ -25,6 +25,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.apache.velocity.app.VelocityEngine;
 import org.apache.velocity.context.Context;
 
 /**
@@ -39,6 +40,9 @@
 public class ToolContext implements Context
 {
     public static final String PATH_KEY = "requestPath";
+    public static final String CONTEXT_KEY = "velocityContext";
+    public static final String ENGINE_KEY = "velocityEngine";
+    public static final String LOG_KEY = "log";
 
     private List<Toolbox> toolboxes;
     // this is meant solely for tool setup,
@@ -47,6 +51,15 @@
     // this is only for values added during use of this context
     private Map<String,Object> localContext;
 
+    public ToolContext(VelocityEngine engine)
+    {
+        this(null, null);
+
+        // add the engine and log as common tool properties
+        putToolProperty(ENGINE_KEY, engine);
+        putToolProperty(LOG_KEY, engine.getLog());
+    }
+
     public ToolContext(Map<String,Object> toolProps)
     {
         this(toolProps, null);
@@ -67,6 +80,8 @@
         {
             this.toolProps = new HashMap<String,Object>(8);
         }
+        // add this as a common tool property
+        putToolProperty(CONTEXT_KEY, this);
 
         toolboxes = new ArrayList<Toolbox>();
         if (toolbox != null)
@@ -85,6 +100,11 @@
     protected List<Toolbox> getToolboxes()
     {
         return this.toolboxes;
+    }
+
+    protected Map<String,Object> getToolProperties()
+    {
+        return this.toolProps;
     }
 
     public Object putToolProperty(String key, Object value)

Modified: 
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/ViewContext.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/ViewContext.java?view=diff&rev=533286&r1=533285&r2=533286
==============================================================================
--- 
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/ViewContext.java
 (original)
+++ 
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/ViewContext.java
 Fri Apr 27 20:38:44 2007
@@ -52,8 +52,11 @@
     /** Key used for the HTTP session object. */
     public static final String SESSION = "session";
 
-    /** Key used for the servlet context object. */
+    /** Key used for the servlet context object in templates. */
     public static final String APPLICATION = "application";
+
+    /** Key used for the servlet context object in tool properties. */
+    public static final String SERVLET_CONTEXT_KEY = "servletContext";
 
     /** Default key used to store toolboxes in request/session/application 
attributes. */
     public static final String DEFAULT_TOOLBOX_KEY =

Modified: 
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/ViewToolContext.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/ViewToolContext.java?view=diff&rev=533286&r1=533285&r2=533286
==============================================================================
--- 
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/ViewToolContext.java
 (original)
+++ 
velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/ViewToolContext.java
 Fri Apr 27 20:38:44 2007
@@ -80,7 +80,7 @@
                            HttpServletResponse response,
                            ServletContext application)
     {
-        super(null, null);
+        super(velocity);
 
         this.velocity = velocity;
         this.request = request;
@@ -94,14 +94,28 @@
     protected void putToolProperties()
     {
         //TODO!! put these strings as constants somewhere!!
-        putToolProperty("servletRequest", getRequest());
-        putToolProperty("servletResponse", getResponse());
-        putToolProperty("httpSession", getSession());
-        putToolProperty("servletContext", getServletContext());
+        putToolProperty(REQUEST, getRequest());
+        putToolProperty(RESPONSE, getResponse());
+        putToolProperty(SESSION, getSession());
+        putToolProperty(SERVLET_CONTEXT_KEY, getServletContext());
         putToolProperty(PATH_KEY, ServletUtils.getPath(getRequest()));
         putToolProperty("velocityContext", getVelocityContext());
-        putToolProperty("velocityEngine", getVelocityEngine());
-        putToolProperty("log", getVelocityEngine().getLog());
+    }
+
+    /**
+     * Returns a [EMAIL PROTECTED] Map} of all tools available to this
+     * context. NOTE: this is not a cheap operation as it will
+     * request and initialize and instance of every available tool.
+     */
+    public Map<String,Object> getToolbox()
+    {
+        Map<String,Object> aggregate = new HashMap<String,Object>();
+        Map<String,Object> toolProps = getToolProperties();
+        for (Toolbox toolbox : getToolboxes())
+        {
+            aggregate.putAll(toolbox.getAll(toolProps));
+        }
+        return aggregate;
     }
 
     protected List<Toolbox> getToolboxes()


Reply via email to