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 2007/07/01 21:04:54 UTC
svn commit: r552354 - in
/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger:
config/roller.properties webservices/atomprotocol/RollerAtomHandler.java
Author: snoopdave
Date: Sun Jul 1 12:04:54 2007
New Revision: 552354
URL: http://svn.apache.org/viewvc?view=rev&rev=552354
Log:
Ridiculously lame throttle crap won't work unless it's before post/put of entry. Also, made it optional in case there are databases with reasonable timestamp support. rollerweblogger.org now passes online Ape testing (http://tbray.org/ape).
Modified:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java
Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties?view=diff&rev=552354&r1=552353&r2=552354
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties Sun Jul 1 12:04:54 2007
@@ -614,6 +614,9 @@
# Intended only for interoperability testing. DO NOT ENABLE IN PRODUCTION!
webservices.atomprotocol.enabled=false
+# For databases with one sec timestamp resolution, we need a one sec throttle
+webservices.atomprotocol.oneSecondThrottle=true
+
# Atom-like Admin Publishing Protocol (AAPP) - this is an experimental admin
# protocol based on ideas from the Atom protocol.
# Intended only for interoperability testing. DO NOT ENABLE IN PRODUCTION!
Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java?view=diff&rev=552354&r1=552353&r2=552354
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java Sun Jul 1 12:04:54 2007
@@ -110,13 +110,19 @@
* @author David M Johnson
*/
public class RollerAtomHandler implements AtomHandler {
- private Weblogger roller;
- private User user;
- private int maxEntries = 20;
+ private Weblogger roller;
+ private User user;
+ private int maxEntries = 20;
+
+ private static boolean throttle = true;
private static Log log =
LogFactory.getFactory().getInstance(RollerAtomHandler.class);
+ static {
+ throttle = WebloggerConfig.getBooleanProperty("webservices.atomprotocol.oneSecondThrottle");
+ }
+
//---------------------------------------------------------------- construction
/**
@@ -482,6 +488,15 @@
}
//--------------------------------------------------------------------- entries
+ private void oneSecondThrottle() {
+ // Throttle one entry per second per weblog because time-
+ // stamp in MySQL and other DBs has only 1 sec resolution
+ try {
+ synchronized (getClass()) {
+ Thread.sleep(1000);
+ }
+ } catch (Exception ignored) {}
+ }
/**
* Create entry in the entry collection (a Weblogger blog has only one).
@@ -499,6 +514,9 @@
if (!canEdit(website)) {
throw new AtomNotAuthorizedException("Not authorized to access website: " + handle);
}
+
+ if (throttle) oneSecondThrottle();
+
// Save it and commit it
WeblogManager mgr = roller.getWeblogManager();
WeblogEntry rollerEntry = new WeblogEntry();
@@ -508,14 +526,6 @@
mgr.saveWeblogEntry(rollerEntry);
roller.flush();
- // Throttle one entry per second per weblog because time-
- // stamp in MySQL and other DBs has only 1 sec resolution
- try {
- synchronized (getClass()) {
- Thread.sleep(1000);
- }
- } catch (Exception ignored) {}
-
CacheManager.invalidate(website);
if (rollerEntry.isPublished()) {
roller.getIndexManager().addEntryReIndexOperation(rollerEntry);
@@ -582,18 +592,13 @@
"Cannot find specified entry/resource");
}
if (canEdit(rollerEntry)) {
+
+ if (throttle) oneSecondThrottle();
+
WeblogManager mgr = roller.getWeblogManager();
copyToRollerEntry(entry, rollerEntry);
mgr.saveWeblogEntry(rollerEntry);
roller.flush();
-
- // Throttle one entry per second per weblog because time-
- // stamp in MySQL and other DBs has only 1 sec resolution
- try {
- synchronized (getClass()) {
- Thread.sleep(1000);
- }
- } catch (Exception ignored) {}
CacheManager.invalidate(rollerEntry.getWebsite());
if (rollerEntry.isPublished()) {