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