/** * Licensed under the Artistic License; you may not use this file * except in compliance with the License. * You may obtain a copy of the License at * * http://displaytag.sourceforge.net/license.html * * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ package org.displaytag.portlet; import java.util.Map; import javax.portlet.PortletRequest; import javax.portlet.RenderResponse; import javax.servlet.jsp.PageContext; import org.displaytag.util.Href; import org.displaytag.util.RequestHelper; /** * Reads parameters and generates URLs using javax.portlet APIs. The {@link javax.servlet.jsp.PageContext} passed into * the constructor must provide the {@link javax.portlet.PortletRequest} via an attribute named * {@link #JAVAX_PORTLET_REQUEST} and {@link javax.portlet.RenderResponse} via an attribute named * {@link #JAVAX_PORTLET_RESPONSE}. <br> * <br> * If the pluto portlet container is being used these objects should be setup appropriatly already. * @author Eric Dalquist <a href="mailto:dalquist@gmail.com">dalquist@gmail.com</a> * @version $Id$ */ public class PortletRequestHelper implements RequestHelper { public static final String JAVAX_PORTLET_RESPONSE = "javax.portlet.response"; public static final String JAVAX_PORTLET_REQUEST = "javax.portlet.request"; private final PortletRequest portletRequest; private final RenderResponse renderResponse; /** * Creates a new request helper for the specified PageContext. Retrieves the PortletRequest and RenderResponse from * the PageContext. * @param pageContext Current JSP context. * @throws IllegalStateException If the PortletRequest or RenderResponse are not found in the PageContext. */ public PortletRequestHelper(PageContext pageContext) { if (pageContext == null) { throw new IllegalArgumentException("pageContext may not be null"); } this.portletRequest = (PortletRequest) pageContext.findAttribute(JAVAX_PORTLET_REQUEST); if (this.portletRequest == null) { throw new IllegalStateException("A PortletRequest could not be found in the PageContext for the key='" + JAVAX_PORTLET_REQUEST + "'"); } this.renderResponse = (RenderResponse) pageContext.findAttribute(JAVAX_PORTLET_RESPONSE); if (this.portletRequest == null) { throw new IllegalStateException("A RenderResponse could not be found in the PageContext for the key='" + JAVAX_PORTLET_RESPONSE + "'"); } } /** * @see org.displaytag.util.RequestHelper#getHref() */ public Href getHref() { final PortletHref href = new PortletHref(this.portletRequest, this.renderResponse); href.setParameterMap(this.portletRequest.getParameterMap()); if (this.portletRequest.isSecure()) { href.setRequestedSecure(true); } return href; } /** * @see org.displaytag.util.RequestHelper#getParameter(java.lang.String) */ public String getParameter(String key) { return this.portletRequest.getParameter(key); } /** * @see org.displaytag.util.RequestHelper#getIntParameter(java.lang.String) */ public Integer getIntParameter(String key) { try { return new Integer(this.getParameter(key)); } catch (NumberFormatException nfe) { return null; } } /** * @see org.displaytag.util.RequestHelper#getParameterMap() */ public Map getParameterMap() { return this.portletRequest.getParameterMap(); } }