org.springframework.web.servlet.view.feed
Class AbstractRssFeedView

java.lang.Object
  extended by org.springframework.context.support.ApplicationObjectSupport
      extended by org.springframework.web.context.support.WebApplicationObjectSupport
          extended by org.springframework.web.servlet.view.AbstractView
              extended by org.springframework.web.servlet.view.feed.AbstractFeedView<com.sun.syndication.feed.rss.Channel>
                  extended by org.springframework.web.servlet.view.feed.AbstractRssFeedView
All Implemented Interfaces:
Aware, BeanNameAware, ApplicationContextAware, ServletContextAware, View

public abstract class AbstractRssFeedView
extends AbstractFeedView<com.sun.syndication.feed.rss.Channel>

Abstract superclass for RSS Feed views, using java.net's ROME package.

Application-specific view classes will extend this class. The view will be held in the subclass itself, not in a template.

Main entry points are the AbstractFeedView.buildFeedMetadata(Map, WireFeed , HttpServletRequest) and buildFeedItems(Map, HttpServletRequest, HttpServletResponse).

Thanks to Jettro Coenradie and Sergio Bossa for the original feed view prototype!

Since:
3.0
Author:
Arjen Poutsma, Juergen Hoeller
See Also:
AbstractFeedView.buildFeedMetadata(Map, WireFeed , HttpServletRequest), buildFeedItems(Map, HttpServletRequest, HttpServletResponse)

Field Summary
 
Fields inherited from class org.springframework.web.servlet.view.AbstractView
DEFAULT_CONTENT_TYPE
 
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport
logger
 
Fields inherited from interface org.springframework.web.servlet.View
PATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE
 
Constructor Summary
AbstractRssFeedView()
           
 
Method Summary
protected  void buildFeedEntries(Map<String,Object> model, com.sun.syndication.feed.rss.Channel channel, HttpServletRequest request, HttpServletResponse response)
          Invokes buildFeedItems(Map, HttpServletRequest, HttpServletResponse) to get a list of feed items.
protected abstract  List<com.sun.syndication.feed.rss.Item> buildFeedItems(Map<String,Object> model, HttpServletRequest request, HttpServletResponse response)
          Subclasses must implement this method to build feed items, given the model.
protected  com.sun.syndication.feed.rss.Channel newFeed()
          Create a new Channel instance to hold the entries.
 
Methods inherited from class org.springframework.web.servlet.view.feed.AbstractFeedView
buildFeedMetadata, renderMergedOutputModel
 
Methods inherited from class org.springframework.web.servlet.view.AbstractView
addStaticAttribute, createMergedOutputModel, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, generatesDownloadContent, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getStaticAttributes, isExposePathVariables, prepareResponse, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setExposePathVariables, setRequestContextAttribute, toString, writeToResponse
 
Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
 
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport
getApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractRssFeedView

public AbstractRssFeedView()
Method Detail

newFeed

protected com.sun.syndication.feed.rss.Channel newFeed()
Create a new Channel instance to hold the entries.

By default returns an RSS 2.0 channel, but the subclass can specify any channel.

Specified by:
newFeed in class AbstractFeedView<com.sun.syndication.feed.rss.Channel>
Returns:
the newly created Feed instance

buildFeedEntries

protected final void buildFeedEntries(Map<String,Object> model,
                                      com.sun.syndication.feed.rss.Channel channel,
                                      HttpServletRequest request,
                                      HttpServletResponse response)
                               throws Exception
Invokes buildFeedItems(Map, HttpServletRequest, HttpServletResponse) to get a list of feed items.

Specified by:
buildFeedEntries in class AbstractFeedView<com.sun.syndication.feed.rss.Channel>
Parameters:
model - the model Map
channel - the feed to add entries to
request - in case we need locale etc. Shouldn't look at attributes.
response - in case we need to set cookies. Shouldn't write to it.
Throws:
Exception - any exception that occured during building

buildFeedItems

protected abstract List<com.sun.syndication.feed.rss.Item> buildFeedItems(Map<String,Object> model,
                                                                          HttpServletRequest request,
                                                                          HttpServletResponse response)
                                                                   throws Exception
Subclasses must implement this method to build feed items, given the model.

Note that the passed-in HTTP response is just supposed to be used for setting cookies or other HTTP headers. The built feed itself will automatically get written to the response after this method returns.

Parameters:
model - the model Map
request - in case we need locale etc. Shouldn't look at attributes.
response - in case we need to set cookies. Shouldn't write to it.
Returns:
the feed items to be added to the feed
Throws:
Exception - any exception that occured during document building
See Also:
Item