Author: nbubna
Date: Thu Jul 24 13:42:19 2008
New Revision: 679535

URL: http://svn.apache.org/viewvc?rev=679535&view=rev
Log:
make it easier to get a VV's ToolboxFactory, keep default Toolbox key in 
Toolbox class, and fix Toolbox.combine()

Modified:
    velocity/tools/trunk/src/main/java/org/apache/velocity/tools/Toolbox.java
    
velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/VelocityView.java

Modified: 
velocity/tools/trunk/src/main/java/org/apache/velocity/tools/Toolbox.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/Toolbox.java?rev=679535&r1=679534&r2=679535&view=diff
==============================================================================
--- velocity/tools/trunk/src/main/java/org/apache/velocity/tools/Toolbox.java 
(original)
+++ velocity/tools/trunk/src/main/java/org/apache/velocity/tools/Toolbox.java 
Thu Jul 24 13:42:19 2008
@@ -42,6 +42,11 @@
  */
 public class Toolbox implements java.io.Serializable
 {
+    /**
+     * The key used to place instances in various scopes.
+     */
+    public static final String KEY = Toolbox.class.getName();
+
     private static final long serialVersionUID = 888081253188664649L;
 
     private Map<String,ToolInfo> infoMap;
@@ -205,20 +210,24 @@
     }
 
     /**
-     * Returns a new [EMAIL PROTECTED] Toolbox} that is a combination of this
-     * toolbox with one or more specified [EMAIL PROTECTED] Toolbox}es.
+     * Returns a new [EMAIL PROTECTED] Toolbox} that is a combination of
+     * this Toolbox with one or more specified [EMAIL PROTECTED] Toolbox}es.
+     * Neither this instance nor those specified are modified.
      */
     public Toolbox combine(Toolbox... toolboxes)
     {
         Map<String,ToolInfo> info = new HashMap<String,ToolInfo>(this.infoMap);
-        Map<String,Object> props = new HashMap<String,Object>(properties);
+        Map<String,Object> props = new HashMap<String,Object>(this.properties);
+        Map<String,Object> data = new HashMap<String,Object>(this.cache);
         for (Toolbox toolbox : toolboxes)
         {
-            cache.putAll(toolbox.cache);
             info.putAll(toolbox.infoMap);
             props.putAll(toolbox.properties);
+            data.putAll(toolbox.cache);
         }
-        return new Toolbox(info, props);
+        Toolbox combination = new Toolbox(info, props);
+        combination.cacheData(data);
+        return combination;
     }
 
 }

Modified: 
velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/VelocityView.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/VelocityView.java?rev=679535&r1=679534&r2=679535&view=diff
==============================================================================
--- 
velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/VelocityView.java
 (original)
+++ 
velocity/tools/trunk/src/main/java/org/apache/velocity/tools/view/VelocityView.java
 Thu Jul 24 13:42:19 2008
@@ -105,8 +105,7 @@
     public static final String SERVLET_CONTEXT_KEY =
         ServletContext.class.getName();
 
-    public static final String DEFAULT_TOOLBOX_KEY =
-        Toolbox.class.getName();
+    public static final String DEFAULT_TOOLBOX_KEY = Toolbox.KEY;
 
     public static final String CREATE_SESSION_PROPERTY = "createSession";
 
@@ -262,7 +261,10 @@
         return getVelocityEngine().getLog();
     }
 
-    protected ToolboxFactory getToolboxFactory()
+    /**
+     * Returns the underlying [EMAIL PROTECTED] ToolboxFactory} being used.
+     */
+    public ToolboxFactory getToolboxFactory()
     {
         return this.toolboxFactory;
     }
@@ -896,12 +898,8 @@
         if (toolboxFactory.hasTools(Scope.REQUEST)
             && request.getAttribute(this.toolboxKey) == null)
         {
-            // add request toolbox, if any
             Toolbox reqTools = toolboxFactory.createToolbox(Scope.REQUEST);
-            if (reqTools != null)
-            {
-                request.setAttribute(this.toolboxKey, reqTools);
-            }
+            request.setAttribute(this.toolboxKey, reqTools);
         }
     }
 


Reply via email to