You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/12/01 15:20:49 UTC

svn commit: r350256 - in /incubator/roller/trunk/src/org/roller: presentation/TurnoverReferersTask.java presentation/filters/RefererFilter.java presentation/planet/RefreshEntriesTask.java presentation/planet/SyncWebsitesTask.java util/Technorati.java

Author: snoopdave
Date: Thu Dec  1 06:20:44 2005
New Revision: 350256

URL: http://svn.apache.org/viewcvs?rev=350256&view=rev
Log:
More error handling tweaks

Modified:
    incubator/roller/trunk/src/org/roller/presentation/TurnoverReferersTask.java
    incubator/roller/trunk/src/org/roller/presentation/filters/RefererFilter.java
    incubator/roller/trunk/src/org/roller/presentation/planet/RefreshEntriesTask.java
    incubator/roller/trunk/src/org/roller/presentation/planet/SyncWebsitesTask.java
    incubator/roller/trunk/src/org/roller/util/Technorati.java

Modified: incubator/roller/trunk/src/org/roller/presentation/TurnoverReferersTask.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/TurnoverReferersTask.java?rev=350256&r1=350255&r2=350256&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/TurnoverReferersTask.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/TurnoverReferersTask.java Thu Dec  1 06:20:44 2005
@@ -40,19 +40,21 @@
         
         try {
             Roller roller = RollerFactory.getRoller();
-            
             roller.begin();
             roller.getRefererManager().checkForTurnover(true, null);
             roller.commit();
             roller.release();
+            mLogger.info("task completed");   
+            System.exit(-1);
             
         } catch (RollerException e) {
             mLogger.error("Error while checking for referer turnover", e);
+            System.exit(-1);
         } catch (Exception ee) {
             mLogger.error("unexpected exception", ee);
         }
-        
-        mLogger.info("task completed");
+
+
     }
     
     

Modified: incubator/roller/trunk/src/org/roller/presentation/filters/RefererFilter.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/filters/RefererFilter.java?rev=350256&r1=350255&r2=350256&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/filters/RefererFilter.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/filters/RefererFilter.java Thu Dec  1 06:20:44 2005
@@ -18,114 +18,94 @@
 import org.roller.presentation.RollerContext;
 import org.roller.presentation.RollerRequest;
 
-
-
 /**
  * Keep track of referers.
- * 
+ *
  * @web.filter name="RefererFilter"
- * *web.filter-mapping url-pattern="/page/*"
- * 
+ *
  * @author David M. Johnson
  */
-public class RefererFilter implements Filter
-{
+public class RefererFilter implements Filter {
     private FilterConfig   mFilterConfig = null;
-    private static Log mLogger = 
-        LogFactory.getFactory().getInstance(RefererFilter.class);
-   
+    private static Log mLogger =
+            LogFactory.getFactory().getInstance(RefererFilter.class);
+    
     /**
      * destroy
      */
-    public void destroy()
-    {
+    public void destroy() {
     }
-
+    
     /**
      * doFilter
      */
     public void doFilter(
-        ServletRequest req, ServletResponse res, FilterChain chain)
-        throws IOException, ServletException
-    {
+            ServletRequest req, ServletResponse res, FilterChain chain)
+            throws IOException, ServletException {
         HttpServletRequest request = (HttpServletRequest)req;
-        boolean isRefSpammer = false;       
-        try
-        {
+        boolean isRefSpammer = false;
+        try {
             RollerRequest rreq = RollerRequest.getRollerRequest(request);
             RollerContext rctx = RollerContext.getRollerContext(
-                mFilterConfig.getServletContext());
+                    mFilterConfig.getServletContext());
             
-            if ( rreq.getWebsite() != null )
-            {
-                String handle = rreq.getWebsite().getHandle();                
+            if (rreq!=null && rreq.getWebsite() != null) {
+                String handle = rreq.getWebsite().getHandle();
                 
                 // Base page URLs, with and without www.
-                String basePageUrlWWW = 
-                    rctx.getAbsoluteContextUrl(request)+"/page/"+handle;                        
-                String basePageUrl = basePageUrlWWW;          
-                if ( basePageUrlWWW.startsWith("http://www.") )
-                {
+                String basePageUrlWWW =
+                        rctx.getAbsoluteContextUrl(request)+"/page/"+handle;
+                String basePageUrl = basePageUrlWWW;
+                if ( basePageUrlWWW.startsWith("http://www.") ) {
                     // chop off the http://www.
                     basePageUrl = "http://"+basePageUrlWWW.substring(11);
                 }
-                                 
-                // Base comment URLs, with and without www.  
-                String baseCommentsUrlWWW = 
-                    rctx.getAbsoluteContextUrl(request)+"/comments/"+handle;   
-                String baseCommentsUrl = baseCommentsUrlWWW;          
-                if ( baseCommentsUrlWWW.startsWith("http://www.") )
-                {
+                
+                // Base comment URLs, with and without www.
+                String baseCommentsUrlWWW =
+                        rctx.getAbsoluteContextUrl(request)+"/comments/"+handle;
+                String baseCommentsUrl = baseCommentsUrlWWW;
+                if ( baseCommentsUrlWWW.startsWith("http://www.") ) {
                     // chop off the http://www.
                     baseCommentsUrl= "http://"+baseCommentsUrlWWW.substring(11);
                 }
                 
                 // Don't process hits from same user's blogs as referers by
-                // ignoring Don't process referer from pages that start with base URLs. 
-                String referer = request.getHeader("Referer");               
+                // ignoring Don't process referer from pages that start with base URLs.
+                String referer = request.getHeader("Referer");
                 if (  referer==null ||
-                      ( 
-                         !referer.startsWith( basePageUrl ) 
-                      && !referer.startsWith( basePageUrlWWW )
-                      && !referer.startsWith( baseCommentsUrl )
-                      && !referer.startsWith( baseCommentsUrlWWW )
-                      )
-                   )
-                {
-                    RefererManager refMgr = 
-                        RollerFactory.getRoller().getRefererManager();
+                        (
+                        !referer.startsWith( basePageUrl )
+                        && !referer.startsWith( basePageUrlWWW )
+                        && !referer.startsWith( baseCommentsUrl )
+                        && !referer.startsWith( baseCommentsUrlWWW )
+                        )
+                        ) {
+                    RefererManager refMgr =
+                            RollerFactory.getRoller().getRefererManager();
                     isRefSpammer = refMgr.processRequest(rreq);
-                }
-                else
-                {
-                    if (mLogger.isDebugEnabled())
-                    {
+                } else {
+                    if (mLogger.isDebugEnabled()) {
                         mLogger.debug("Ignoring referer="+referer);
                     }
                 }
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             mLogger.error("Processing referer",e);
         }
         
-        if (isRefSpammer)
-        {
+        if (isRefSpammer) {
             HttpServletResponse response = (HttpServletResponse)res;
-            response.sendError(HttpServletResponse.SC_FORBIDDEN);            
-        }
-        else
-        {
+            response.sendError(HttpServletResponse.SC_FORBIDDEN);
+        } else {
             chain.doFilter(req, res);
         }
     }
-
+    
     /**
      * init
      */
-    public void init(FilterConfig filterConfig) throws ServletException
-    {
+    public void init(FilterConfig filterConfig) throws ServletException {
         mFilterConfig = filterConfig;
     }
 }

Modified: incubator/roller/trunk/src/org/roller/presentation/planet/RefreshEntriesTask.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/planet/RefreshEntriesTask.java?rev=350256&r1=350255&r2=350256&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/planet/RefreshEntriesTask.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/planet/RefreshEntriesTask.java Thu Dec  1 06:20:44 2005
@@ -14,36 +14,35 @@
  * Run the Planet Roller refresh-entries method to fetch and parse newsfeeds.
  * @author Dave Johnson
  */
-public class RefreshEntriesTask extends TimerTask implements ScheduledTask
-{
-    private static Log logger = 
-        LogFactory.getFactory().getInstance(RefreshEntriesTask.class);
+public class RefreshEntriesTask extends TimerTask implements ScheduledTask {
+    private static Log logger =
+            LogFactory.getFactory().getInstance(RefreshEntriesTask.class);
     private Roller roller = null;
     
     /** Task may be run from the command line */
-    public static void main(String[] args) throws Exception
-    {
-        RollerFactory.setRoller(
-            "org.roller.business.hibernate.HibernateRollerImpl");
-        RefreshEntriesTask task = new RefreshEntriesTask();
-        task.init(RollerFactory.getRoller(), "dummy");
-        task.run();
+    public static void main(String[] args) {
+        try {
+            RollerFactory.setRoller(
+                    "org.roller.business.hibernate.HibernateRollerImpl");
+            RefreshEntriesTask task = new RefreshEntriesTask();
+            task.init(RollerFactory.getRoller(), "dummy");
+            task.run();
+            System.exit(0);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            System.exit(-1);
+        }
     }
-    public void init(Roller roller, String realPath) throws RollerException
-    {
+    public void init(Roller roller, String realPath) throws RollerException {
         this.roller = (Roller)roller;
     }
-    public void run()
-    {
-        try
-        {
+    public void run() {
+        try {
             roller.begin(UserData.SYSTEM_USER);
             roller.getPlanetManager().refreshEntries();
             roller.commit();
             roller.release();
-        }
-        catch (RollerException e)
-        {
+        } catch (RollerException e) {
             logger.error("ERROR refreshing entries", e);
         }
     }

Modified: incubator/roller/trunk/src/org/roller/presentation/planet/SyncWebsitesTask.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/presentation/planet/SyncWebsitesTask.java?rev=350256&r1=350255&r2=350256&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/presentation/planet/SyncWebsitesTask.java (original)
+++ incubator/roller/trunk/src/org/roller/presentation/planet/SyncWebsitesTask.java Thu Dec  1 06:20:44 2005
@@ -1,5 +1,6 @@
 package org.roller.presentation.planet;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -24,71 +25,65 @@
 import org.roller.util.Technorati;
 
 /**
- * Ensure that every user is represented by a subscription in Planet Roller 
- * database. Also "ranks" each subscription by populating Technorati inbound 
+ * Ensure that every user is represented by a subscription in Planet Roller
+ * database. Also "ranks" each subscription by populating Technorati inbound
  * blogs and links counts.
  * @author Dave Johnson
  */
-public class SyncWebsitesTask extends TimerTask implements ScheduledTask
-{
-    private static Log logger = 
-        LogFactory.getFactory().getInstance(SyncWebsitesTask.class);
+public class SyncWebsitesTask extends TimerTask implements ScheduledTask {
+    private static Log logger =
+            LogFactory.getFactory().getInstance(SyncWebsitesTask.class);
     private Roller roller = null;
- 
+    
     /** Task may be run from the command line */
-    public static void main(String[] args) throws Exception 
-    {
-        RollerFactory.setRoller(
-            "org.roller.business.hibernate.HibernateRollerImpl");
-        SyncWebsitesTask task = new SyncWebsitesTask();
-        task.init(RollerFactory.getRoller(), "dummy");
-        task.run();
+    public static void main(String[] args) {
+        try {
+            RollerFactory.setRoller(
+                    "org.roller.business.hibernate.HibernateRollerImpl");
+            SyncWebsitesTask task = new SyncWebsitesTask();
+            task.init(RollerFactory.getRoller(), "dummy");
+            task.run();
+            System.exit(0);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            System.exit(-1);
+        }
     }
-    public void init(Roller roller, String realPath) throws RollerException
-    {
+    public void init(Roller roller, String realPath) throws RollerException {
         this.roller = roller;
     }
-    public void run()
-    {
+    public void run() {
         syncWebsites();
         rankSubscriptions();
     }
-    /** 
+    /**
      * Ensure there's a subscription in the "all" group for every Roller user.
      */
-    private void syncWebsites()
-    {       
-        try
-        {
+    private void syncWebsites() {
+        try {
             roller.begin(UserData.SYSTEM_USER);
-            List liveUserFeeds = new ArrayList();            
+            List liveUserFeeds = new ArrayList();
             String baseURL = RollerRuntimeConfig.getProperty("site.absoluteurl");
-            if (baseURL == null || baseURL.trim().length()==0)
-            {
+            if (baseURL == null || baseURL.trim().length()==0) {
                 logger.error("ERROR: cannot sync websites with Planet Roller - "
-                            +"absolute URL not specified in Roller Config");
-            }
-            else
-            {
+                        +"absolute URL not specified in Roller Config");
+            } else {
                 PlanetManager planet = roller.getPlanetManager();
                 UserManager userManager = roller.getUserManager();
                 PlanetGroupData group = planet.getGroup("all");
-                if (group == null)
-                {
+                if (group == null) {
                     group = new PlanetGroupData();
                     group.setHandle("all");
                     group.setTitle("all");
                     planet.saveGroup(group);
                     roller.commit();
                 }
-                try 
-                {
+                try {
                     String baseFeedURL = baseURL + "/rss/";
                     String baseSiteURL = baseURL + "/page/";
-                    Iterator websites = 
-                        roller.getUserManager().getWebsites(null, null).iterator();
-                    while (websites.hasNext())
-                    {
+                    Iterator websites =
+                            roller.getUserManager().getWebsites(null, null).iterator();
+                    while (websites.hasNext()) {
                         WebsiteData website = (WebsiteData)websites.next();
                         
                         StringBuffer sitesb = new StringBuffer();
@@ -103,10 +98,9 @@
                         
                         liveUserFeeds.add(feedUrl);
                         
-                        PlanetSubscriptionData sub = 
+                        PlanetSubscriptionData sub =
                                 planet.getSubscription(feedUrl);
-                        if (sub == null)
-                        {
+                        if (sub == null) {
                             logger.info("ADDING feed: "+feedUrl);
                             sub = new PlanetSubscriptionData();
                             sub.setTitle(website.getName());
@@ -115,9 +109,7 @@
                             sub.setAuthor(website.getHandle());
                             planet.saveSubscription(sub);
                             group.addSubscription(sub);
-                        }
-                        else
-                        {
+                        } else {
                             sub.setTitle(website.getName());
                             sub.setAuthor(website.getHandle());
                             planet.saveSubscription(sub);
@@ -130,56 +122,55 @@
                     roller.begin();
                     group = group = planet.getGroup("all");
                     Iterator subs = group.getSubscriptions().iterator();
-                    while (subs.hasNext())
-                    {
-                        PlanetSubscriptionData sub = 
+                    while (subs.hasNext()) {
+                        PlanetSubscriptionData sub =
                                 (PlanetSubscriptionData)subs.next();
-                        if (!liveUserFeeds.contains(sub.getFeedUrl()))
-                        {
+                        if (!liveUserFeeds.contains(sub.getFeedUrl())) {
                             logger.info("DELETING feed: "+sub.getFeedUrl());
                             planet.deleteSubscription(sub);
                         }
                     }
-                    roller.commit();                   
-                }
-                finally
-                {
+                    roller.commit();
+                } finally {
                     roller.release();
                 }
             }
-        }
-        catch (RollerException e)
-        {
+        } catch (RollerException e) {
             logger.error("ERROR refreshing entries", e);
         }
     }
     
-    /** 
-     * Loop through all subscriptions get get Technorati rankings for each 
+    /**
+     * Loop through all subscriptions get get Technorati rankings for each
      */
-    private void rankSubscriptions()
-    {       
+    private void rankSubscriptions() {
         int count = 0;
         int errorCount = 0;
-        try
-        {
+        try {
             roller.begin(UserData.SYSTEM_USER);
             PlanetManager planet = roller.getPlanetManager();
             PlanetConfigData config = planet.getConfiguration();
             Technorati technorati = null;
-            if (config.getProxyHost()!=null && config.getProxyPort() != -1)
-            {
-                technorati = new Technorati(
-                        config.getProxyHost(), config.getProxyPort());
+            try {
+                if (config.getProxyHost()!=null && config.getProxyPort() != -1) {
+                    technorati = new Technorati(
+                            config.getProxyHost(), config.getProxyPort());
+                } else {
+                    technorati = new Technorati();
+                }
+            } catch (IOException e) {
+                logger.error("Aborting collection of Technorati rankings.\n"
+                +"technorati.license not found at root of classpath.\n"
+                +"Get license at http://technorati.com/developers/apikey.html\n"
+                +"Put the license string in a file called technorati.license.\n"
+                +"And place that file at the root of Roller's classpath.\n"
+                +"For example, in the /WEB-INF/classes directory.");
+                return;
             }
-            else 
-            {
-                technorati = new Technorati();
-            }                
             UserManager userManager = roller.getUserManager();
-            try 
-            {
+            try {
                 // Technorati API allows only 500 queries per-day
+                // TODO: make this configurable
                 int limit = 500;
                 int userCount = planet.getSubscriptionCount();
                 int mod = (userCount / limit) + 1;
@@ -190,49 +181,40 @@
                 
                 int start = (day % mod) * limit;
                 int end = start + limit;
-                end = end > userCount ? userCount : end; 
+                end = end > userCount ? userCount : end;
                 logger.info("Updating subscriptions ["+start+":"+end+"]");
                 
                 Iterator subs = planet.getAllSubscriptions();
-                while (subs.hasNext())
-                {
-                    PlanetSubscriptionData sub = 
+                while (subs.hasNext()) {
+                    PlanetSubscriptionData sub =
                             (PlanetSubscriptionData)subs.next();
-                    if (count >= start && count < end)
-                    {
-                        try
-                        {
-                            Technorati.Result result = 
+                    if (count >= start && count < end) {
+                        try {
+                            Technorati.Result result =
                                     technorati.getBloginfo(sub.getSiteUrl());
-                            if (result != null && result.getWeblog() != null)
-                            {
-                              sub.setInboundblogs(
-                                      result.getWeblog().getInboundblogs());
-                              sub.setInboundlinks(
-                                      result.getWeblog().getInboundlinks());
-                              logger.debug("Adding rank for "
-                                      +sub.getFeedUrl()+" ["+count+"|"
-                                      +sub.getInboundblogs()+"|"
-                                      +sub.getInboundlinks()+"]");
-                            }
-                            else 
-                            {
-                              logger.debug(
-                                "No ranking available for "
-                                      +sub.getFeedUrl()+" ["+count+"]");
-                              sub.setInboundlinks(0);
-                              sub.setInboundblogs(0);
+                            if (result != null && result.getWeblog() != null) {
+                                sub.setInboundblogs(
+                                        result.getWeblog().getInboundblogs());
+                                sub.setInboundlinks(
+                                        result.getWeblog().getInboundlinks());
+                                logger.debug("Adding rank for "
+                                        +sub.getFeedUrl()+" ["+count+"|"
+                                        +sub.getInboundblogs()+"|"
+                                        +sub.getInboundlinks()+"]");
+                            } else {
+                                logger.debug(
+                                        "No ranking available for "
+                                        +sub.getFeedUrl()+" ["+count+"]");
+                                sub.setInboundlinks(0);
+                                sub.setInboundblogs(0);
                             }
                             planet.saveSubscription(sub);
-                        }
-                        catch (Exception e) 
-                        {
+                        } catch (Exception e) {
                             logger.warn("WARN ranking subscription ["
-                                        + count + "]: " + e.getMessage());
-                            if (errorCount++ > 5)
-                            {
+                                    + count + "]: " + e.getMessage());
+                            if (errorCount++ > 5) {
                                 logger.warn(
-                                    "   Stopping ranking, too many errors");
+                                        "   Stopping ranking, too many errors");
                                 break;
                             }
                         }
@@ -240,14 +222,10 @@
                     count++;
                 }
                 roller.commit();
-            }
-            finally
-            {
+            } finally {
                 roller.release();
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             logger.error("ERROR ranking subscriptions", e);
         }
     }

Modified: incubator/roller/trunk/src/org/roller/util/Technorati.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/roller/util/Technorati.java?rev=350256&r1=350255&r2=350256&view=diff
==============================================================================
--- incubator/roller/trunk/src/org/roller/util/Technorati.java (original)
+++ incubator/roller/trunk/src/org/roller/util/Technorati.java Thu Dec  1 06:20:44 2005
@@ -50,7 +50,7 @@
     }
 
     /** Looks for key in classpath using "/technorati.license" */
-    public Technorati() throws Exception {
+    public Technorati() throws IOException {
         InputStream is = getClass().getResourceAsStream("/technorati.license");
         BufferedReader br = new BufferedReader(new InputStreamReader(is));
         mKey = br.readLine();