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();