View Javadoc

1   /***
2    * Copyright (c) 2003 held jointly by the individual authors. 
3    * 
4    * This library is free software; you can redistribute it and/or modify it 
5    * under the terms of the GNU Lesser General Public License as published 
6    * by the Free Software Foundation; either version 2.1 of the License, or 
7    * (at your option) any later version. 
8    * 
9    * This library is distributed in the hope that it will be useful, but 
10   * WITHOUT ANY WARRANTY; with out even the implied warranty of 
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
12   * GNU Lesser General Public License for more details. 
13   * 
14   * You should have received a copy of the GNU Lesser General Public License 
15   * along with this library; if not, write to the Free Software Foundation, 
16   * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 
17   * 
18   * > http://www.gnu.org/copyleft/lesser.html 
19   * > http://www.opensource.org/licenses/lgpl-license.php
20   */
21  package net.mlw.vlh.web.tag.support;
22  
23  import java.util.Iterator;
24  import java.util.Map;
25  
26  import javax.portlet.PortletURL;
27  import javax.portlet.RenderResponse;
28  import javax.servlet.ServletRequest;
29  import javax.servlet.jsp.PageContext;
30  
31  /*** This LinkEncoder encodes a URL to the standards defined
32   *  in the JSR168 Portlet API.
33   * 
34   *  To use this class an entry needs to be made in the spring.xml file:
35      <pre>
36        ... 
37        <bean id="classicLook" singleton="true" class="net.mlw.vlh.web.ValueListConfigBean">
38          ...
39          <property name="linkEncoder">
40            <bean class="net.mlw.vlh.web.tag.support.PortletLinkEncoder"/
41          </property>
42          ...
43        </bean>
44        ...
45      </pre> 
46   * @author Keith R. Davis
47   * @version $Revision: 1.2 $ $Date: 2004/08/17 15:30:51 $
48   */
49  public class PortletLinkEncoder implements LinkEncoder
50  {
51  	public PortletURL getRenderURL(PageContext pageContext)
52  	{
53  		ServletRequest request = pageContext.getRequest();
54  		RenderResponse renderResponse = (RenderResponse) request.getAttribute("javax.portlet.response");
55  		PortletURL url = renderResponse.createRenderURL();
56  		return url;
57  	}
58  
59  	/**** Returns an encoded String from the given parameters.
60  	 * 
61  	 * @param pageContext The PageContext.
62  	 * @param parameters A Map containing all the parameters to encode.
63  	 * @param includedKeys The parameters to include. Includes all if null or empty.
64  	 * @param ignoredKeys The parameters to exclude. Excludes none if null or empty.
65  	 * @return An encoded String
66  	 */
67  	public String encode(PageContext pageContext, Map parameters)
68  	{
69  		PortletURL url = getRenderURL(pageContext);
70  
71  		for (Iterator iter = parameters.keySet().iterator(); iter.hasNext();)
72  		{
73  			String key = (String) iter.next();
74  
75  			Object value = parameters.get(key);
76  			if (value instanceof String[])
77  			{
78  				String[] values = (String[]) value;
79  				url.setParameter(key, values);
80  			}
81  			else if (value instanceof String)
82  			{
83  				url.setParameter(key, (String) value);
84  			}
85  			else if (value != null)
86  			{
87  				url.setParameter(key, value.toString());
88  			}
89  		}
90  
91  		return url.toString();
92  	}
93  
94  }