The rendering package contains interfaces and implementation of portal framework rendering. This part of the framework provides a set of abstractions that can be configured to generate diverse context presentations.
A top-level object responsible for generating context presentation is defined by the simple {@link org.jasig.portal.rendering.IPortalRenderer} interface. Although the interface is general enough to allow for a wide variety of implementations, the uPortal3 takes an approach where the presentation is compiled by a set of connected rendering components. Components pass presentation from one to another, adding/transforming or filtering presentation content, until the final component sends presentation to the response object. The logic of the presentation is modified by adding, removing, connecting and configuring individual components.
{@link org.jasig.portal.rendering.TreeRenderer} is the main renderer
implementation. It assumes that rendering components are organized
as a tree, with a single top-level entry component (root) at which
the rendering is initiated. The root component itself must also
implement {@link org.jasig.portal.rendering.IPortalRenderer}
interface. TreeRenderer
is responsible for
establishing the rendering cycle and firing {@link
org.jasig.portal.rendering.RenderingPipelineEvent}s.
TreeRenderer
does not deal with components themselves,
instead it delegates component management responsibilities to the
{@link org.jasig.portal.rendering.IRenderingComponentManager}. The
component manager implementation defines the topology in which the
rendering components are connected. Knowing the topology one can
enumerate components of the rendering path, and decide on an
optimal cache entry point.
{@link
org.jasig.portal.rendering.PipelineComponentManager} is an
implementation that assumes a linear rendering pipeline (such as
the one present in uPortal2).
The package also includes some abstractions for caching
implementation. Given a network of rendering components, there are
might be multiple points at which the content is cached. Each such
point is described by a {@link
org.jasig.portal.rendering.ICacheEntryPoint} interface. The
rendering component manager is tasked with determining an optimal
(and valid) cache entry point for each rendering cycle.
PipelineComponentManager
delegates this responsibility
to a {@link org.jasig.portal.rendering.IPipelineCacheManager}
instance.
Specific subpackages contain implementations of rendering components, component and cache managers for different types of components: sax, string and hybrid (which can be configured to use multiple types of rendering components).