Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Gliffy
sizeL
nameStAX Rendering Pipeline
alignleft
version5

Technologies

  • StAX (XML Streaming APIs)

Pipeline Ordering Overview

  1. User Layout Store
    • outputs XMLEventReader
  2. Attribute Incorporation Filter (Structure)
    • outputs XMLEventReader
  3. XSLT (Structure)
    • uses XSLT Parameter Provider to help setup the Transformer
    • outputs XMLEventReader
  4. Portlet Rendering Initiator
    • Uses Portlet Renderer API to initiate async portlet rendering
    • outputs XMLEventReader
  5. Attribute Incorporation Filter (Theme)
    • outputs XMLEventReader
  6. XSLT (Theme)
    • uses XSLT Parameter Provider to help setup the Transformer
    • outputs XMLEventReader
  7. Serializer
    • Uses XMLOutputFactory to convert from XMLEventReader to Character data
    • outputs CharacterEventReader
  8. Portlet Incorporation Filter
    • Portlet Renderer API to retrieve portlet rendering results
    • outputs CharacterEventReader
  9. Output Writer
    • Writes to response Writer

Pipeline Component API

...


interface PipelineComponent {
    CompositeCacheKey getCacheKey(HttpServletRequest, HttpServletResponse);
}

interface StAXPipelineComponent {
    XMLEventReader getEventReader(HttpServletRequest, HttpServletResponse);
}

interface CharacterPipelineComponent {
    CharacterEventReader getEventReader(HttpServletRequest, HttpServletResponse);
}

Pipeline Caching Flow

...

  1. key = parentComponent.getCacheKey(req, res)
  2. eventRender = cache.get(key)
  3. If eventReader is not null return it
  4. If eventReader is null call parentComponent.getEventReader(req, res)

...

Note

This pertains to uPortal 3.3 and later

Rendering Pipeline Overview

The rendering pipeline uses a combination of XML Streaming APIs (StAX) and a custom Character Streaming API which mimics the StAX APIs but handles character and portal specific data. The rendering pipeline is comprised of small components each with a specific function. These components use a common input and output API allowing the runtime pipeline to be easily modified. Also all components are cache aware and can return a CacheKey that represents their current state for a request. This allows caching components to short-circuit the rendering pipeline when the output from a lower-level component is already in cache.

Gliffy
sizeL
nameStAX Rendering Pipeline
alignleft
version5