| org.springframework.web.portlet.GenericPortletBean org.springframework.web.portlet.FrameworkPortlet
All known Subclasses: org.springframework.web.portlet.DispatcherPortlet,
FrameworkPortlet | abstract public class FrameworkPortlet extends GenericPortletBean implements ApplicationListener(Code) | | Base portlet for Spring's portlet framework. Provides integration with
a Spring application context, in a JavaBean-based overall solution.
This class offers the following functionality:
- Manages a Portlet
org.springframework.context.ApplicationContext instance per portlet. The portlet's configuration is determined by beans
in the portlet's namespace.
- Publishes events on request processing, whether or not a request is
successfully handled.
Subclasses must implement
FrameworkPortlet.doActionService and
FrameworkPortlet.doRenderService to handle action and render requests. Because this extends
GenericPortletBean rather than Portlet directly, bean properties are mapped onto it. Subclasses can
override
FrameworkPortlet.initFrameworkPortlet() for custom initialization.
Regards a "contextClass" parameter at the portlet init-param level,
falling back to the default context class
(
org.springframework.web.portlet.context.XmlPortletApplicationContext )
if not found. Note that, with the default FrameworkPortlet,
a context class needs to implement the
org.springframework.web.portlet.context.ConfigurablePortletApplicationContext SPI.
Passes a "contextConfigLocation" portlet init-param to the context instance,
parsing it into potentially multiple file paths which can be separated by any
number of commas and spaces, like "test-portlet.xml, myPortlet.xml".
If not explicitly specified, the context implementation is supposed to build a
default location from the namespace of the portlet.
Note: In case of multiple config locations, later bean definitions will
override ones defined in earlier loaded files, at least when using one of
Spring's default ApplicationContext implementations. This can be leveraged
to deliberately override certain bean definitions via an extra XML file.
The default namespace is "'portlet-name'-portlet", e.g. "test-portlet" for a
portlet-name "test" (leading to a "/WEB-INF/test-portlet.xml" default location
with XmlPortletApplicationContext). The namespace can also be set explicitly via
the "namespace" portlet init-param.
author: William G. Thompson, Jr. author: John A. Lewis author: Juergen Hoeller since: 2.0 See Also: FrameworkPortlet.doActionService See Also: FrameworkPortlet.doRenderService See Also: FrameworkPortlet.setContextClass See Also: FrameworkPortlet.setContextConfigLocation See Also: FrameworkPortlet.setNamespace |
Method Summary | |
protected ApplicationContext | createPortletApplicationContext(ApplicationContext parent) Instantiate the Portlet ApplicationContext for this portlet, either a default
XmlPortletApplicationContext or a custom context class if set.
This implementation expects custom contexts to implement
ConfigurablePortletApplicationContext. | public void | destroy() Close the ApplicationContext of this portlet. | abstract protected void | doActionService(ActionRequest request, ActionResponse response) Subclasses must implement this method to do the work of action request handling. | final protected void | doDispatch(RenderRequest request, RenderResponse response) Delegate render requests to processRequest/doRenderService. | abstract protected void | doRenderService(RenderRequest request, RenderResponse response) Subclasses must implement this method to do the work of render request handling. | public Class | getContextClass() Return the custom context class. | public String | getContextConfigLocation() Return the explicit context config location, if any. | public String | getNamespace() Return the namespace for this portlet, falling back to default scheme if
no custom namespace was set. | final public ApplicationContext | getPortletApplicationContext() Return this portlet's ApplicationContext. | public String | getPortletContextAttributeName() Return the PortletContext attribute name for this portlets's ApplicationContext. | public String[] | getUserinfoUsernameAttributes() | protected String | getUsernameForRequest(PortletRequest request) Determine the username for the given request. | protected void | initFrameworkPortlet() This method will be invoked after any bean properties have been set and
the ApplicationContext has been loaded. | protected ApplicationContext | initPortletApplicationContext() Initialize and publish the Portlet ApplicationContext for this portlet. | final protected void | initPortletBean() Overridden method of GenericPortletBean, invoked after any bean properties
have been set. | public boolean | isPublishContext() Return whether to publish this portlet's context as a PortletContext attribute. | public boolean | isPublishEvents() Return whether this portlet should publish a PortletRequestHandledEvent at the end
of each request. | public void | onApplicationEvent(ApplicationEvent event) ApplicationListener endpoint that receives events from this servlet's
WebApplicationContext. | protected void | onRefresh(ApplicationContext context) Template method which can be overridden to add portlet-specific refresh work. | protected void | postProcessPortletApplicationContext(ConfigurableApplicationContext pac) Post-process the given Portlet ApplicationContext before it is refreshed
and activated as context for this portlet.
The default implementation is empty. | final public void | processAction(ActionRequest request, ActionResponse response) Delegate action requests to processRequest/doActionService. | final protected void | processRequest(PortletRequest request, PortletResponse response) Process this request, publishing an event regardless of the outcome. | public void | refresh() Refresh this portlet's application context, as well as the
dependent state of the portlet. | public void | setContextClass(Class contextClass) Set a custom context class. | public void | setContextConfigLocation(String contextConfigLocation) Set the context config location explicitly, instead of relying on the default
location built from the namespace. | public void | setNamespace(String namespace) Set a custom namespace for this portlet,
to be used for building a default context config location. | public void | setPublishContext(boolean publishContext) Set whether to publish this portlet's context as a PortletContext attribute,
available to all objects in the web container. | public void | setPublishEvents(boolean publishEvents) Set whether this portlet should publish a PortletRequestHandledEvent at the end
of each request. | public void | setUserinfoUsernameAttributes(String[] userinfoUsernameAttributes) Set the list of attributes to search in the USER_INFO map when trying
to find the username of the current user. |
DEFAULT_NAMESPACE_SUFFIX | final public static String DEFAULT_NAMESPACE_SUFFIX(Code) | | Suffix for Portlet ApplicationContext namespaces. If a portlet of this class is
given the name "test" in a context, the namespace used by the portlet will
resolve to "test-portlet".
|
DEFAULT_USERINFO_ATTRIBUTE_NAMES | final public static String[] DEFAULT_USERINFO_ATTRIBUTE_NAMES(Code) | | Default USER_INFO attribute names to search for the current username:
"user.login.id", "user.name".
|
PORTLET_CONTEXT_PREFIX | final public static String PORTLET_CONTEXT_PREFIX(Code) | | Prefix for the PortletContext attribute for the Portlet ApplicationContext.
The completion is the portlet name.
|
doActionService | abstract protected void doActionService(ActionRequest request, ActionResponse response) throws Exception(Code) | | Subclasses must implement this method to do the work of action request handling.
The contract is essentially the same as that for the processAction
method of GenericPortlet.
This class intercepts calls to ensure that exception handling and
event publication takes place.
Parameters: request - current action request Parameters: response - current action response throws: Exception - in case of any kind of processing failure See Also: javax.portlet.GenericPortlet.processAction |
doDispatch | final protected void doDispatch(RenderRequest request, RenderResponse response) throws PortletException, IOException(Code) | | Delegate render requests to processRequest/doRenderService.
|
doRenderService | abstract protected void doRenderService(RenderRequest request, RenderResponse response) throws Exception(Code) | | Subclasses must implement this method to do the work of render request handling.
The contract is essentially the same as that for the doDispatch
method of GenericPortlet.
This class intercepts calls to ensure that exception handling and
event publication takes place.
Parameters: request - current render request Parameters: response - current render response throws: Exception - in case of any kind of processing failure See Also: javax.portlet.GenericPortlet.doDispatch |
getContextClass | public Class getContextClass()(Code) | | Return the custom context class.
|
getContextConfigLocation | public String getContextConfigLocation()(Code) | | Return the explicit context config location, if any.
|
getNamespace | public String getNamespace()(Code) | | Return the namespace for this portlet, falling back to default scheme if
no custom namespace was set. (e.g. "test-portlet" for a portlet named "test")
|
getPortletApplicationContext | final public ApplicationContext getPortletApplicationContext()(Code) | | Return this portlet's ApplicationContext.
|
getUserinfoUsernameAttributes | public String[] getUserinfoUsernameAttributes()(Code) | | Returns the list of attributes that will be searched in the USER_INFO map
when trying to find the username of the current user
See Also: FrameworkPortlet.getUsernameForRequest |
getUsernameForRequest | protected String getUsernameForRequest(PortletRequest request)(Code) | | Determine the username for the given request.
The default implementation first tries the UserPrincipal.
If that does not exist, then it checks the USER_INFO map.
Can be overridden in subclasses.
Parameters: request - current portlet request the username, or null if none found See Also: javax.portlet.PortletRequest.getUserPrincipal See Also: javax.portlet.PortletRequest.getRemoteUser See Also: javax.portlet.PortletRequest.USER_INFO See Also: FrameworkPortlet.setUserinfoUsernameAttributes |
initFrameworkPortlet | protected void initFrameworkPortlet() throws PortletException, BeansException(Code) | | This method will be invoked after any bean properties have been set and
the ApplicationContext has been loaded.
The default implementation is empty; subclasses may override this method
to perform any initialization they require.
throws: PortletException - in case of an initialization exception throws: BeansException - if thrown by ApplicationContext methods |
initPortletBean | final protected void initPortletBean() throws PortletException, BeansException(Code) | | Overridden method of GenericPortletBean, invoked after any bean properties
have been set. Creates this portlet's ApplicationContext.
|
isPublishContext | public boolean isPublishContext()(Code) | | Return whether to publish this portlet's context as a PortletContext attribute.
|
isPublishEvents | public boolean isPublishEvents()(Code) | | Return whether this portlet should publish a PortletRequestHandledEvent at the end
of each request.
|
processAction | final public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException(Code) | | Delegate action requests to processRequest/doActionService.
|
processRequest | final protected void processRequest(PortletRequest request, PortletResponse response) throws PortletException, IOException(Code) | | Process this request, publishing an event regardless of the outcome.
The actual event handling is performed by the abstract
doActionService() and doRenderService() template methods.
See Also: FrameworkPortlet.doActionService See Also: FrameworkPortlet.doRenderService |
setContextClass | public void setContextClass(Class contextClass)(Code) | | Set a custom context class. This class must be of type ApplicationContext;
when using the default FrameworkPortlet implementation, the context class
must also implement ConfigurablePortletApplicationContext.
See Also: FrameworkPortlet.createPortletApplicationContext |
setContextConfigLocation | public void setContextConfigLocation(String contextConfigLocation)(Code) | | Set the context config location explicitly, instead of relying on the default
location built from the namespace. This location string can consist of
multiple locations separated by any number of commas and spaces.
|
setNamespace | public void setNamespace(String namespace)(Code) | | Set a custom namespace for this portlet,
to be used for building a default context config location.
|
setPublishContext | public void setPublishContext(boolean publishContext)(Code) | | Set whether to publish this portlet's context as a PortletContext attribute,
available to all objects in the web container. Default is true.
This is especially handy during testing, although it is debatable whether
it's good practice to let other application objects access the context this way.
|
setPublishEvents | public void setPublishEvents(boolean publishEvents)(Code) | | Set whether this portlet should publish a PortletRequestHandledEvent at the end
of each request. Default is true; can be turned off for a slight performance
improvement, provided that no ApplicationListeners rely on such events.
See Also: org.springframework.web.portlet.context.PortletRequestHandledEvent |
setUserinfoUsernameAttributes | public void setUserinfoUsernameAttributes(String[] userinfoUsernameAttributes)(Code) | | Set the list of attributes to search in the USER_INFO map when trying
to find the username of the current user.
See Also: FrameworkPortlet.getUsernameForRequest |
Fields inherited from org.springframework.web.portlet.GenericPortletBean | final protected Log logger(Code)(Java Doc)
|
|
|