Tanto la clase AbstractAtomFeedView como la clase AbstractRssFeedView heredan de la clase base AbstractFeedView y se utilizan para pasar vistas de fuentes Atom y RSS, respectivamente. Se basan en el proyecto ROME y están en el rg.springframework.web.servlet.view.feed.

AbstractAtomFeedView requiere que implementes el método buildFeedEntries() y, opcionalmente, anules el método buildFeedMetadata() (la implementación predeterminada está vacía). El siguiente ejemplo muestra cómo hacer esto:

Java
public class SampleContentAtomView extends AbstractAtomFeedView {
    @Override
    protected void buildFeedMetadata(Map<String, Object> model,
            Feed feed, HttpServletRequest request) {
        /// implementación omitida
    }
    @Override
    protected List<Entry> buildFeedEntries(Map<String, Object> model,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        /// implementación omitida
    }
}
Kotlin

class SampleContentAtomView : AbstractAtomFeedView() {
    override fun buildFeedMetadata(model: Map<String, Any>,
            feed: Feed, request: HttpServletRequest) {
        /// implementación omitida
    }
    override fun buildFeedEntries(model: Map<String, Any>,
            request: HttpServletRequest, response: HttpServletResponse): List<Entry> {
        /// implementación omitida
    }
}

Se aplican requisitos similares a la implementación de AbstractRssFeedView, como se muestra en el siguiente ejemplo:

Java
public class SampleContentRssView extends AbstractRssFeedView {
    @Override
    protected void buildFeedMetadata(Map<String, Object> model,
            Channel feed, HttpServletRequest request) {
        /// implementación omitida
    }
    @Override
    protected List<Item> buildFeedItems(Map<String, Object> model,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        /// implementación omitida
    }
}
Kotlin
class SampleContentRssView : AbstractRssFeedView() {
    override fun buildFeedMetadata(model: Map<String, Any>,
                                feed: Channel, request: HttpServletRequest) {
        /// implementación omitida
    }
    override fun buildFeedItems(model: Map<String, Any>,
            request: HttpServletRequest, response: HttpServletResponse): List<Item> {
        /// implementación omitida
    }
}

Los métodos buildFeedItems() y buildFeedEntries() envían una solicitud HTTP si necesita acceder a la configuración regional. La respuesta HTTP se envía solo para configurar cookies u otros encabezados HTTP. El canal se escribe automáticamente en el objeto de respuesta después de que regresa el método.

Para ver un ejemplo de creación de una vista de canal Atom, consulte publicación Aleph Arendsen en el equipo de primavera.