You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by nb...@apache.org on 2006/11/21 18:31:29 UTC

svn commit: r477766 - /jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java

Author: nbubna
Date: Tue Nov 21 09:31:28 2006
New Revision: 477766

URL: http://svn.apache.org/viewvc?view=rev&rev=477766
Log:
add ability to add a map of parameters to a link (thanks to Mark Brunkhart)

Modified:
    jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java

Modified: jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java
URL: http://svn.apache.org/viewvc/jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java?view=diff&rev=477766&r1=477765&r2=477766
==============================================================================
--- jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java (original)
+++ jakarta/velocity/tools/trunk/src/java/org/apache/velocity/tools/view/tools/LinkTool.java Tue Nov 21 09:31:28 2006
@@ -20,7 +20,9 @@
 import java.lang.reflect.Method;
 import java.net.URLEncoder;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
@@ -169,6 +171,37 @@
     /**
      * For internal use.
      *
+     * Copies 'that' LinkTool into this one and adds the new query data.
+     *
+     * @param queryData the query parameters to add
+     * @since VelocityTools 1.3
+     */
+    protected LinkTool copyWith(Map queryData)
+    {
+        LinkTool copy = duplicate();
+        if (copy.queryData != null)
+        {
+            // set the copy's query data to a shallow clone of 
+            // the current query data array
+            copy.queryData = (ArrayList)this.queryData.clone();
+        }
+        else
+        {
+            copy.queryData = new ArrayList();
+        }
+        for (Iterator i = queryData.keySet().iterator(); i.hasNext(); )
+        {
+            Object key = i.next();
+            Object value = queryData.get(key);
+            copy.queryData.add(new QueryPair(String.valueOf(key), value));
+        }
+        return copy;
+    }
+
+
+    /**
+     * For internal use.
+     *
      * Copies 'that' LinkTool into this one and sets the new URI.
      *
      * @param uri uri string
@@ -448,12 +481,37 @@
     }
 
     /**
+     * <p>Adds multiple key=value pairs to the query data. 
+     * This returns a new LinkTool containing both a copy of
+     * this LinkTool's query data and the new data.
+     * Query data is URL encoded before it is appended.</p>
+     *
+     * @param parameters map of new query data keys to values
+     * @return a new instance of LinkTool
+     * @since VelocityTools 1.3
+     */
+    public LinkTool addQueryData(Map parameters)
+    {
+        return copyWith(parameters);
+    }
+
+    /**
      * Convenience method equivalent to {@link #addQueryData}.
      * @since VelocityTools 1.3
      */
     public LinkTool param(Object key, Object value)
     {
         return addQueryData(String.valueOf(key), value);
+    }
+
+    /**
+     * Convenience method equivalent to
+     * {@link #addQueryData(Map parameters)}.
+     * @since VelocityTools 1.3
+     */
+    public LinkTool params(Map parameters)
+    {
+        return copyWith(parameters);
     }
     
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@velocity.apache.org
For additional commands, e-mail: dev-help@velocity.apache.org