JSR.168 Portlet-aware CookieModule
----------------------------------

                 Key: COCOON-2072
                 URL: https://issues.apache.org/jira/browse/COCOON-2072
             Project: Cocoon
          Issue Type: Improvement
          Components: Blocks: Portal
            Reporter: Francesco Chicchiricco


A FAQ here: 
http://wiki.java.net/bin/view/Portlet/JSR168FAQ#Is_there_a_hack_to_get_set_cooki
 says that some JSR-168 containers provide their javax.portlet.PortletRequest 
implementation with cookies, even thought embedded in a string.

Looking at sources of Jakarta Pluto 
(org.apache.pluto.internal.impl.PortletRequestImpl) and Sun's Open Portal - 
free version of Sun JES Portal Server - 
(com.sun.portal.portlet.impl.PortletRequestImpl), I found that this is true for 
both.

So, I wrote a simple org.apache.cocoon.components.modules.input.CookieModule 
extension that can handle all that above, providing cookie access to portlets:

Here's the code:

public class PortletAwareCookieModule extends CookieModule {

        final protected String COOKIE = "cookie";

        @Override
        protected Map getCookieMap(Map objectModel) {
                if 
(!objectModel.containsKey(PortletObjectModelHelper.PORTLET_REQUEST_OBJECT))
                        return super.getCookieMap(objectModel);

                PortletRequest portletRequest =
                                
PortletObjectModelHelper.getPortletRequest(objectModel);
                String cookieList = portletRequest.getProperty(COOKIE);
                StringTokenizer cookieTok = new StringTokenizer(cookieList,
                                ";");
                String[] cookieParts = null;
                Map<String, HttpCookie> cookieMap = new HashMap<String, 
HttpCookie>();
                while (cookieTok.hasMoreTokens()) {
                        cookieParts = cookieTok.nextToken()
                                        .trim()
                                        .split("=");
                        cookieMap.put(cookieParts[0],
                                        new HttpCookie(cookieParts[0],
                                                        cookieParts[1]));
                }

                return cookieMap;
        }

}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to