KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > mlw > vlh > web > tag > support > PortletLinkEncoder


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 JavaDoc;
24 import java.util.Map JavaDoc;
25
26 import javax.portlet.PortletURL;
27 import javax.portlet.RenderResponse;
28 import javax.servlet.ServletRequest JavaDoc;
29 import javax.servlet.jsp.PageContext JavaDoc;
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 JavaDoc pageContext)
52     {
53         ServletRequest JavaDoc 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 JavaDoc encode(PageContext JavaDoc pageContext, Map JavaDoc parameters)
68     {
69         PortletURL url = getRenderURL(pageContext);
70
71         for (Iterator JavaDoc iter = parameters.keySet().iterator(); iter.hasNext();)
72         {
73             String JavaDoc key = (String JavaDoc) iter.next();
74
75             Object JavaDoc value = parameters.get(key);
76             if (value instanceof String JavaDoc[])
77             {
78                 String JavaDoc[] values = (String JavaDoc[]) value;
79                 url.setParameter(key, values);
80             }
81             else if (value instanceof String JavaDoc)
82             {
83                 url.setParameter(key, (String JavaDoc) value);
84             }
85             else if (value != null)
86             {
87                 url.setParameter(key, value.toString());
88             }
89         }
90
91         return url.toString();
92     }
93
94 }
Popular Tags