/** * Licensed to Apereo under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright ownership. Apereo * licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use * this file except in compliance with the License. You may obtain a copy of the License at the * following location: * * <p>http://www.apache.org/licenses/LICENSE-2.0 * * <p>Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing permissions and * limitations under the License. */ package org.apereo.portal.portlet.rendering; import java.io.IOException; import javax.portlet.CacheControl; import javax.portlet.Event; import javax.portlet.PortletMode; import javax.portlet.PortletRequest; import javax.portlet.WindowState; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apereo.portal.AuthorizationException; import org.apereo.portal.portlet.om.IPortletWindowId; /** * Provides easy API for executing methods on portlets. Takes care of all of the uPortal specific * setup and tear down around portlet calls. * */ public interface IPortletRenderer { public static final WindowState EXCLUSIVE = new WindowState("EXCLUSIVE"); public static final WindowState DETACHED = new WindowState("DETACHED"); public static final WindowState DASHBOARD = new WindowState("DASHBOARD"); public static final PortletMode ABOUT = new PortletMode("ABOUT"); public static final PortletMode CONFIG = new PortletMode("CONFIG"); /** * Name of the {@link PortletRequest} attribute that the adaptor will store a Map of user info * attributes that has support for multi-valued attributes. */ public static final String MULTIVALUED_USERINFO_MAP_ATTRIBUTE = "org.jasig.portlet.USER_INFO_MULTIVALUED"; /** * Name of the {@link PortletRequest} property that the portlet should use to set a * new-item-count value. */ public static final String NEW_ITEM_COUNT_PROPERTY = "org.jasig.portlet.NEW_ITEM_COUNT"; /** * Name of the {@link PortletRequest} property that the portlet should use to set an external * link */ public static final String EXTERNAL_PORTLET_LINK_PROPERTY = "org.jasig.portlet.EXTERNAL_PORTLET_LINK"; /** * Name of the {@link PortletRequest} property that the portlet should use to get the current * theme name */ public static final String THEME_NAME_PROPERTY = "org.jasig.portlet.THEME_NAME"; /** * {@link javax.servlet.http.HttpServletRequest} attributes specific to the {@link * IPortletRenderer} must be prefixed with this value to be sure they are protected from * manipulation by the portlet. */ public static final String RENDERER_ATTRIBUTE_PREFIX = IPortletRenderer.class.getName(); /** Attribute that the dynamic portlet title is stored using if set. */ public static final String ATTRIBUTE__PORTLET_TITLE = RENDERER_ATTRIBUTE_PREFIX + ".PORTLET_TITLE"; /** Attribute that the dynamic portlet new item count is stored using if set. */ public static final String ATTRIBUTE__PORTLET_NEW_ITEM_COUNT = RENDERER_ATTRIBUTE_PREFIX + ".PORTLET_NEW_ITEM_COUNT"; /** Attribute that the dynamic external portlet link is stored using if set. */ public static final String ATTRIBUTE__PORTLET_LINK = RENDERER_ATTRIBUTE_PREFIX + ".PORTLET_LINK"; /** * Attribute that the renderer stores a {@link PortletOutputHandler} or {@link * PortletResourceOutputHandler} that should be used when the portlet writes out content. */ public static final String ATTRIBUTE__PORTLET_OUTPUT_HANDLER = RENDERER_ATTRIBUTE_PREFIX + ".PORTLET_OUTPUT_HANDLER"; /** * Attribute that the renderer stores a {@link CacheControl} that should be used when the * portlet writes out content. */ public static final String ATTRIBUTE__PORTLET_CACHE_CONTROL = RENDERER_ATTRIBUTE_PREFIX + ".CACHE_CONTROL"; /** * Executes an action in a portlet, handles all the request and response setup and teardown * * @param portletWindowId Portlet to target with the action * @param httpServletRequest The portal's request * @param httpServletResponse The portal's response (nothing will be written to the response) * @throws AuthorizationException if the requesting user lacks permission to invoke the portlet * window (e.g. due to its having a forbidden portlet mode) */ public long doAction( IPortletWindowId portletWindowId, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse); /** * Executes an event in a portlet, handles all the request and response setup and teardown * * @param portletWindowId Portlet to target with the action * @param httpServletRequest The portal's request * @param httpServletResponse The portal's response (nothing will be written to the response) * @throws AuthorizationException if the requesting user lacks permission to invoke the portlet * window (e.g. due to its having a forbidden portlet mode) */ public long doEvent( IPortletWindowId portletWindowId, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Event event); /** * Executes a render for the body of a portlet, handles all the request and response setup and * teardown * * @param portletWindowId Portlet to target with the render * @param httpServletRequest The portal's request * @param httpServletResponse The portal's response (nothing will be written to the response) * @param portletOutputHandler The output handler to write to * @throws AuthorizationException if the requesting user lacks permission to invoke the portlet * window (e.g. due to its having a forbidden portlet mode) */ public PortletRenderResult doRenderMarkup( IPortletWindowId portletWindowId, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, PortletOutputHandler portletOutputHandler) throws IOException; /** * Executes a render for the head of a portlet, handles all the request and response setup and * teardown * * @param portletWindowId Portlet to target with the render * @param httpServletRequest The portal's request * @param httpServletResponse The portal's response (nothing will be written to the response) * @param portletOutputHandler The output handler to write to * @throws AuthorizationException if the requesting user lacks permission to invoke the portlet * window (e.g. due to its having a forbidden portlet mode) */ public PortletRenderResult doRenderHeader( IPortletWindowId portletWindowId, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, PortletOutputHandler portletOutputHandler) throws IOException; /** * Executes a portlet resource request. * * @param portletWindowId Portlet to target with the render * @param httpServletRequest The portal's request * @param httpServletResponse The portal's response (nothing will be written to the response) * @param portletOutputHandler The output handler to write to * @return The execution time for serving the resource * @throws AuthorizationException if the requesting user lacks permission to invoke the portlet * window (e.g. due to its having a forbidden portlet mode) */ public long doServeResource( IPortletWindowId portletWindowId, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, PortletResourceOutputHandler portletOutputHandler) throws IOException; /** * Resets a portlet's window data to the defaults and clears all portlet scoped session data * * @param portletWindowId Portlet to target with the render * @param httpServletRequest The portal's request * @param httpServletResponse The portal's response (nothing will be written to the response) */ public void doReset( IPortletWindowId portletWindowId, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse); }