Introduction

The rss widget adds the RSS (Really Simple Syndication) type of web feed to your site. Doing so, your users may access any updates to online content in a standardized, computer-readable format. Thanks to the RSS integration, they can keep track of many different websites, organizing them in catalogs, sorting and featuring them.

Business

Development

Core

Entity Definitions

asciidoctor diagram RSSWidgetEntityDefinition

There are 3 properties, defined here:

Property Description

url

stores the url of the RSS provider that is used to obtain the feed

Spring Data JPA Repositories

RSSWidgetRepository

The RSSWidgetRepository extends the AbstractRepository and the AbstractActivatableRepository. It is the corresponding Spring Data JPA repository for the RSSWidgetEntityDefinition:

asciidoctor diagram RSSWidgetRepository

Services

RSSWidgetServiceImpl

The RSSWidgetServiceImpl implements the RSSWidgetService which defines the getFeed() method that handles feed processing along with the cache managing.

asciidoctor diagram RSSWidgetServiceImpl

Facade

Configurers

RSSWidgetMapperFactoryConfigurer

The RSSWidgetMapperFactoryConfigurer implements the MapperFactoryConfigurer, converting the RSSWidgetEntityDefinition to RSSWidgetDtoDefinition.

asciidoctor diagram RSSWidgetMapperFactoryConfigurer

The conversion is done via the byDefault() method.

Dto definitions

RSSWidgetDtoDefinition

The RSSWidgetDtoDefinition extends the WidgetDtoDefinition, going further to the AbstractDtoDefinition. This is the corresponding Dto object for the RSSWidgetEntityDefinition:

asciidoctor diagram RSSWidgetDtoDefinition

Facades

RSSWidgetFacadeImpl

The RSSWidgetFacadeImpl implements the RSSWidgetFacade which defines the getFeed() method that returns SyndFeed object:

asciidoctor diagram RSSWidgetFacadeImpl

The defined HTTP Endpoint can be accessed at:

  • /feed

Storefront

RSSWidgetController

The RSSWidgetController extends the AbstractWidgetController:

asciidoctor diagram RSSWidgetController

Integration

The integration with the Nemesis platform is pretty straight-forward - just need to add the widget in your classpath:

<dependency>
    <groupId>io.nemesis.platform.module.widget</groupId>
    <artifactId>nemesis-widget-rss</artifactId>
</dependency>