This is an automated email from the ASF dual-hosted git repository. juanpablo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/jspwiki.git
commit 380600727195f334fcfb7475c94ef5896a681526 Author: juanpablo <juanpa...@apache.org> AuthorDate: Sat Mar 21 17:08:10 2020 +0100 move rss initialization from WikiEngine into RSSGenerator --- .../src/main/java/org/apache/wiki/WikiEngine.java | 18 ++--------- .../java/org/apache/wiki/rss/RSSGenerator.java | 35 ++++++++++++++++++---- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java index 5c5e7e2..f907fd7 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiEngine.java @@ -45,7 +45,6 @@ import org.apache.wiki.plugin.PluginManager; import org.apache.wiki.references.ReferenceManager; import org.apache.wiki.render.RenderingManager; import org.apache.wiki.rss.RSSGenerator; -import org.apache.wiki.rss.RSSThread; import org.apache.wiki.search.SearchManager; import org.apache.wiki.tasks.TasksManager; import org.apache.wiki.ui.CommandResolver; @@ -518,26 +517,13 @@ public class WikiEngine implements Engine { try { if( TextUtil.getBooleanProperty( props, RSSGenerator.PROP_GENERATE_RSS,false ) ) { m_rssGenerator = ClassUtil.getMappedObject( RSSGenerator.class.getName(), this, props ); + m_rssGenerator.initialize( this, props ); managers.put( RSSGenerator.class, m_rssGenerator ); } } catch( final Exception e ) { log.error( "Unable to start RSS generator - JSPWiki will still work, but there will be no RSS feed.", e ); } - // Start the RSS generator & generator thread - if( m_rssGenerator != null ) { - m_rssFile = TextUtil.getStringProperty( props, RSSGenerator.PROP_RSSFILE, "rss.rdf" ); - final File rssFile; - if( m_rssFile.startsWith( File.separator ) ) { // honor absolute pathnames: - rssFile = new File(m_rssFile ); - } else { // relative path names are anchored from the webapp root path: - rssFile = new File( getRootPath(), m_rssFile ); - } - final int rssInterval = TextUtil.getIntegerProperty( props, RSSGenerator.PROP_INTERVAL, 3600 ); - final RSSThread rssThread = new RSSThread( this, rssFile, rssInterval ); - rssThread.start(); - } - fireEvent( WikiEngineEvent.INITIALIZED ); // initialization complete log.info("WikiEngine configured."); @@ -664,7 +650,7 @@ public class WikiEngine implements Engine { @Override public String getGlobalRSSURL() { if( m_rssGenerator != null && m_rssGenerator.isEnabled() ) { - return getBaseURL() + "/" + m_rssFile; + return getBaseURL() + "/" + m_rssGenerator.getRssFile(); } return null; diff --git a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java index 827c99e..9b0e621 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/rss/RSSGenerator.java @@ -37,6 +37,7 @@ import org.apache.wiki.render.RenderingManager; import org.apache.wiki.util.TextUtil; import org.apache.wiki.variables.VariableManager; +import java.io.File; import java.util.Iterator; import java.util.List; import java.util.Properties; @@ -63,6 +64,8 @@ public class RSSGenerator { private static final Logger log = Logger.getLogger( RSSGenerator.class ); private Engine m_engine; + /** The RSS file to generate. */ + private String m_rssFile; private String m_channelDescription = ""; private String m_channelLanguage = "en-us"; private boolean m_enabled = true; @@ -136,6 +139,25 @@ public class RSSGenerator { m_engine = engine; m_channelDescription = properties.getProperty( PROP_CHANNEL_DESCRIPTION, m_channelDescription ); m_channelLanguage = properties.getProperty( PROP_CHANNEL_LANGUAGE, m_channelLanguage ); + m_rssFile = TextUtil.getStringProperty( properties, RSSGenerator.PROP_RSSFILE, "rss.rdf" ); + } + + /** + * Start the RSS generator & generator thread + * + * @param engine the engine + * @param properties the properties + */ + public void initialize( final Engine engine, final Properties properties ) { + final File rssFile; + if( m_rssFile.startsWith( File.separator ) ) { // honor absolute pathnames + rssFile = new File( m_rssFile ); + } else { // relative path names are anchored from the webapp root path + rssFile = new File( engine.getRootPath(), m_rssFile ); + } + final int rssInterval = TextUtil.getIntegerProperty( properties, RSSGenerator.PROP_INTERVAL, 3600 ); + final RSSThread rssThread = new RSSThread( engine, rssFile, rssInterval ); + rssThread.start(); } /** @@ -214,8 +236,7 @@ public class RSSGenerator { } // FIXME: This should probably return something more intelligent - private String getEntryTitle( final Page page ) - { + private String getEntryTitle( final Page page ) { return page.getName() + ", version " + page.getVersion(); } @@ -290,8 +311,7 @@ public class RSSGenerator { * * @return whether RSS generation is currently enabled */ - public boolean isEnabled() - { + public boolean isEnabled() { return m_enabled; } @@ -301,11 +321,14 @@ public class RSSGenerator { * * @param enabled whether RSS generation is considered enabled. */ - public synchronized void setEnabled( final boolean enabled ) - { + public synchronized void setEnabled( final boolean enabled ) { m_enabled = enabled; } + public String getRssFile() { + return m_rssFile; + } + /** * Generates an RSS feed for the entire wiki. Each item should be an instance of the RSSItem class. *