in jspwiki-main/src/main/java/org/apache/wiki/rss/DefaultRSSGenerator.java [309:386]
public String generateBlogRSS( final Context wikiContext, final List< Page > changed, final Feed feed ) {
LOG.debug( "Generating RSS for blog, size={}", changed.size() );
final String ctitle = m_engine.getManager( VariableManager.class ).getVariable( wikiContext, PROP_CHANNEL_TITLE );
feed.setChannelTitle(Objects.requireNonNullElseGet(ctitle, () -> m_engine.getApplicationName() + ":" + wikiContext.getPage().getName()));
feed.setFeedURL( wikiContext.getViewURL( wikiContext.getPage().getName() ) );
final String language = m_engine.getManager( VariableManager.class ).getVariable( wikiContext, PROP_CHANNEL_LANGUAGE );
if( language != null ) {
feed.setChannelLanguage( language );
} else {
feed.setChannelLanguage( m_channelLanguage );
}
final String channelDescription = m_engine.getManager( VariableManager.class ).getVariable( wikiContext, PROP_CHANNEL_DESCRIPTION );
if( channelDescription != null ) {
feed.setChannelDescription( channelDescription );
}
changed.sort( new PageTimeComparator() );
int items = 0;
for( final Iterator< Page > i = changed.iterator(); i.hasNext() && items < 15; items++ ) {
final Page page = i.next();
final Entry e = new Entry();
e.setPage( page );
final String url;
if( page instanceof Attachment ) {
url = m_engine.getURL( ContextEnum.PAGE_ATTACH.getRequestContext(), page.getName(),null );
} else {
url = m_engine.getURL( ContextEnum.PAGE_VIEW.getRequestContext(), page.getName(),null );
}
e.setURL( url );
// Title
String pageText = m_engine.getManager( PageManager.class ).getPureText( page.getName(), WikiProvider.LATEST_VERSION );
String title = "";
final int firstLine = pageText.indexOf('\n');
if( firstLine > 0 ) {
title = pageText.substring( 0, firstLine ).trim();
}
if( title.isEmpty() ) {
title = page.getName();
}
// Remove wiki formatting
while( title.startsWith("!") ) {
title = title.substring(1);
}
e.setTitle( title );
// Description
if( firstLine > 0 ) {
int maxlen = pageText.length();
if( maxlen > MAX_CHARACTERS ) {
maxlen = MAX_CHARACTERS;
}
pageText = m_engine.getManager( RenderingManager.class ).textToHTML( wikiContext, pageText.substring( firstLine + 1, maxlen ).trim() );
if( maxlen == MAX_CHARACTERS ) {
pageText += "...";
}
e.setContent( pageText );
} else {
e.setContent( title );
}
e.setAuthor( getAuthor(page) );
feed.addEntry( e );
}
return feed.getString();
}