You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2020/03/21 17:04:34 UTC

[jspwiki] 32/36: move rss initialization from WikiEngine into RSSGenerator

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 <ju...@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.
      *