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/09/17 23:05:29 UTC

svn commit: r576585 [2/3] - in /roller/branches/roller_4.1_dev: apps/planet/ apps/planet/nbproject/ apps/planet/src/java/org/apache/roller/planet/business/jpa/ apps/planet/src/java/org/apache/roller/planet/pojos/ apps/weblogger/ apps/weblogger/docs/use...

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.java Mon Sep 17 14:05:21 2007
@@ -1,4 +1,3 @@
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  *  contributor license agreements.  The ASF licenses this file to You
@@ -28,7 +27,6 @@
 import org.apache.roller.weblogger.pojos.PingTarget;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
 import org.apache.roller.weblogger.pojos.Weblog;
-
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -48,14 +46,10 @@
 
     private final Weblogger roller;
     private final JPAPersistenceStrategy strategy;
-    
-    
     /**
      * The logger instance for this class.
      */
-    private static Log logger = 
-        LogFactory.getFactory().getInstance(JPAAutoPingManagerImpl.class);
-    
+    private static Log logger = LogFactory.getFactory().getInstance(JPAAutoPingManagerImpl.class);
 
     /**
      * Creates a new instance of JPAAutoPingManagerImpl
@@ -65,10 +59,9 @@
         this.roller = roller;
         this.strategy = strategy;
     }
-    
 
     public AutoPing getAutoPing(String id) throws WebloggerException {
-        return (AutoPing)strategy.load(AutoPing.class, id);
+        return (AutoPing) strategy.load(AutoPing.class, id);
     }
 
     public void saveAutoPing(AutoPing autoPing) throws WebloggerException {
@@ -79,74 +72,64 @@
         strategy.remove(autoPing);
     }
 
-    public void removeAutoPing(PingTarget pingTarget, Weblog website)
-            throws WebloggerException {
+    public void removeAutoPing(PingTarget pingTarget, Weblog website) throws WebloggerException {
         Query q = strategy.getNamedUpdate("AutoPing.removeByPingTarget&Website");
         q.setParameter(1, pingTarget);
         q.setParameter(2, website);
         q.executeUpdate();
     }
 
-    public void removeAutoPings(Collection autopings) 
-            throws WebloggerException {
+    public void removeAutoPings(Collection autopings) throws WebloggerException {
         strategy.removeAll(autopings);
     }
 
-    public void removeAllAutoPings() 
-            throws WebloggerException {
+    public void removeAllAutoPings() throws WebloggerException {
         Query q = strategy.getNamedUpdate("AutoPing.getAll");
         removeAutoPings(q.getResultList());
     }
 
-    public void queueApplicableAutoPings(WeblogEntry changedWeblogEntry)
-            throws WebloggerException {
+    public void queueApplicableAutoPings(WeblogEntry changedWeblogEntry) throws WebloggerException {
         if (PingConfig.getSuspendPingProcessing()) {
-            if (logger.isDebugEnabled())
-                logger.debug("Ping processing is suspended." +
-                    " No auto pings will be queued.");
+            if (logger.isDebugEnabled()) {
+                logger.debug("Ping processing is suspended." + " No auto pings will be queued.");
+            }
             return;
         }
 
-        PingQueueManager pingQueueMgr = roller.
-            getPingQueueManager();
+        PingQueueManager pingQueueMgr = roller.getPingQueueManager();
         List applicableAutopings = getApplicableAutoPings(changedWeblogEntry);
-        for (Iterator i = applicableAutopings.iterator(); i.hasNext(); ) {
+        for (Iterator i = applicableAutopings.iterator(); i.hasNext();) {
             AutoPing autoPing = (AutoPing) i.next();
             pingQueueMgr.addQueueEntry(autoPing);
         }
     }
 
-    public List getAutoPingsByWebsite(Weblog website)
-            throws WebloggerException {
+    public List getAutoPingsByWebsite(Weblog website) throws WebloggerException {
         Query q = strategy.getNamedQuery("AutoPing.getByWebsite");
         q.setParameter(1, website);
         return q.getResultList();
     }
 
-    public List getAutoPingsByTarget(PingTarget pingTarget) 
-            throws WebloggerException {
+    public List getAutoPingsByTarget(PingTarget pingTarget) throws WebloggerException {
         Query q = strategy.getNamedQuery("AutoPing.getByPingTarget");
         q.setParameter(1, pingTarget);
         return q.getResultList();
     }
 
-    public List getApplicableAutoPings(WeblogEntry changedWeblogEntry) 
-            throws WebloggerException {
+    public List getApplicableAutoPings(WeblogEntry changedWeblogEntry) throws WebloggerException {
         return getAutoPingsByWebsite(changedWeblogEntry.getWebsite());
         //        return (List)strategy.newQuery(AutoPing.class, "AutoPing.getByWebsite")
         //            .execute(changedWeblogEntry.getWebsite());
     }
 
-    public List getCategoryRestrictions(AutoPing autoPing)
-            throws WebloggerException {
+    public List getCategoryRestrictions(AutoPing autoPing) throws WebloggerException {
         return Collections.EMPTY_LIST;
     }
 
-    public void setCategoryRestrictions
-            (AutoPing autoPing, Collection newCategories) {
+    public void setCategoryRestrictions(AutoPing autoPing, Collection newCategories) {
         // NOT YET IMPLEMENTED
     }
 
-    public void release() {}
-    
-}
+    public void release() {
+    }
+}
\ No newline at end of file

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java Mon Sep 17 14:05:21 2007
@@ -211,21 +211,29 @@
         StringBuffer whereClause = new StringBuffer();
                             
         if (weblog != null) {
-            queryString.append("SELECT u FROM User u JOIN u.permissions p WHERE ");
+            queryString.append("SELECT u FROM User u JOIN u.permissions p ");
             params.add(size++, weblog);
-            whereClause.append(" p.website = ?" + size);   
+            whereClause.append(" WHERE p.website = ?" + size);   
         } else {
-            queryString.append("SELECT u FROM User u WHERE ");
+            queryString.append("SELECT u FROM User u ");
         }         
 
         if (enabled != null) {
-            if (whereClause.length() > 0) whereClause.append(" AND ");
+            if (whereClause.length() == 0) {
+                whereClause.append(" WHERE ");
+            } else {
+                whereClause.append(" AND ");
+            }
             params.add(size++, enabled);
             whereClause.append("u.enabled = ?" + size);  
         }
 
         if (startDate != null) {
-            if (whereClause.length() > 0) whereClause.append(" AND ");
+            if (whereClause.length() == 0) {
+                whereClause.append(" WHERE ");
+            } else {
+                whereClause.append(" AND ");
+            }
 
             // if we are doing date range then we must have an end date
             if(endDate == null) {

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java Mon Sep 17 14:05:21 2007
@@ -188,9 +188,11 @@
         List referers = refQuery2.getResultList();
         for (Iterator iter = referers.iterator(); iter.hasNext();) {
             WeblogReferrer referer = (WeblogReferrer) iter.next();
-            this.strategy.remove(referer);
+            this.strategy.remove(referer.getClass(), referer.getId());
         }
-        
+        // TODO: can we eliminate this unnecessary flush with OpenJPA 1.0
+        this.strategy.flush(); 
+       
         // remove associated pages
         Query pageQuery = strategy.getNamedQuery("WeblogTemplate.getByWebsite");
         pageQuery.setParameter(1, website);

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/themes/SharedThemeFromDir.java Mon Sep 17 14:05:21 2007
@@ -213,7 +213,7 @@
         // load resource representing preview image
         File previewFile = new File(this.themeDir + File.separator + themeMetadata.getPreviewImage());
         if(!previewFile.exists() || !previewFile.canRead()) {
-            log.warn("Couldn't read preview image file ["+themeMetadata.getPreviewImage()+"]");
+            log.warn("Couldn't read theme [" + this.getName() + "] preview image file ["+themeMetadata.getPreviewImage()+"]");
         } else {
             this.previewImage = new SharedThemeResourceFromDir(themeMetadata.getPreviewImage(), previewFile);
         }
@@ -231,7 +231,7 @@
             String contents = loadTemplateFile(templateFile);
             if(contents == null) {
                 // if we don't have any contents then skip this one
-                log.error("Couldn't load stylesheet template file ["+templateFile+"]");
+                log.error("Couldn't load stylesheet theme [" + this.getName() + "] template file ["+templateFile+"]");
             } else {
                 
                 // construct ThemeTemplate representing this file
@@ -267,7 +267,7 @@
             
             // Continue reading theme even if problem encountered with one file
             if(!resourceFile.exists() || !resourceFile.canRead()) {
-                log.warn("Couldn't read theme resource file ["+resourcePath+"]");
+                log.warn("Couldn't read  theme [" + this.getName() + "] resource file ["+resourcePath+"]");
                 continue;
             }
             
@@ -289,7 +289,7 @@
             String contents = loadTemplateFile(templateFile);
             if(contents == null) {
                 // if we don't have any contents then skip this one
-                throw new ThemeInitializationException("Couldn't load theme template file ["+templateFile+"]");
+                throw new ThemeInitializationException("Couldn't load theme [" + this.getName() + "] template file ["+templateFile+"]");
             }
             
             // construct ThemeTemplate representing this file
@@ -329,7 +329,7 @@
             InputStreamReader reader = new InputStreamReader(stream, "UTF-8");
             length = reader.read(chars);
         } catch (Exception noprob) {
-            log.error("Exception reading template file ["+templateFile+"]");
+            log.error("Exception reading theme [" + this.getName() + "] template file ["+templateFile+"]");
             if (log.isDebugEnabled())
                 log.debug(noprob);
             return null;

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java Mon Sep 17 14:05:21 2007
@@ -278,8 +278,9 @@
                     if(resource.isDirectory()) {
                         fileMgr.createDirectory(website, resource.getPath());
                     } else {
+                        // save file without file-type, quota checks, etc.
                         fileMgr.saveFile(website, resource.getPath(), "text/plain", 
-                                resource.getLength(), resource.getInputStream());
+                                resource.getLength(), resource.getInputStream(), false);
                     }
                 } catch (Exception ex) {
                     log.info(ex);

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/config/roller.properties Mon Sep 17 14:05:21 2007
@@ -465,7 +465,9 @@
 
 # Set of page models specifically for site-wide rendering
 rendering.siteModels=\
-org.apache.roller.weblogger.ui.rendering.model.SiteModel
+org.apache.roller.weblogger.ui.rendering.model.SiteModel,\
+org.apache.roller.weblogger.ui.rendering.model.PlanetModel
+
 
 # Velocity settings
 velocity.properties=/WEB-INF/velocity.properties
@@ -602,32 +604,33 @@
 log4j.appender.roller.layout=org.apache.log4j.PatternLayout
 log4j.appender.roller.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %C{1}:%M - %m%n
 
-# Options are: DEBUG, INFO, WARN, ERROR, FATAL
-# Roller code
+# Roller code. Options are: DEBUG, INFO, WARN, ERROR, FATAL
 log4j.category.org.apache.roller=INFO
 log4j.category.net.java.roller=INFO
 
 # Roller dependent libraries
-log4j.category.org.hibernate=INFO
-log4j.category.org.apache.struts2=INFO
-# the struts2 file upload stuff has some overly verbose messaging
-log4j.category.org.apache.struts2.interceptor.FileUploadInterceptor=WARN
+log4j.category.org.apache.struts2=WARN
+log4j.category.org.apache.tiles=WARN
+log4j.category.com.opensymphony.xwork2=WARN
 log4j.category.org.springframework=WARN
 log4j.category.org.acegisecurity=ERROR
-# Velocity talks a lot, so by default it is set to STFU mode
+log4j.category.org.hibernate=WARN
+
+# the struts2 file upload stuff has some overly verbose messaging
+log4j.category.org.apache.struts2.interceptor.FileUploadInterceptor=ERROR
+
+# Velocity talks *way* too much, so set it to log only FATAL problems
 log4j.category.org.apache.velocity=FATAL
 
 # Roller extras
 log4j.category.com.ecyrd.jspwiki=ERROR
-log4j.category.org.tuckey.web.filters.urlrewrite=DEBUG
 log4j.category.com.opensymphony.oscache=ERROR
 log4j.category.com.danga.MemCached=WARN
 
 # Ask OpenJPA to log to Log4J via Apache Commons Logging
 openjpa.Log=commons
-
-log4j.category.openjpa.Tool=INFO
-log4j.category.openjpa.Runtime=INFO
+log4j.category.openjpa.Tool=WARN
+log4j.category.openjpa.Runtime=WARN
 log4j.category.openjpa.Remote=WARN
 log4j.category.openjpa.DataCache=WARN
 log4j.category.openjpa.MetaData=WARN

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.java Mon Sep 17 14:05:21 2007
@@ -96,16 +96,15 @@
                 List entries = wmgr.getComments(
                         weblog, null, null, startDate, null, WeblogEntryComment.APPROVED, true, offset, length + 1);
                 
-                // check if there are more results for paging
-                if(entries.size() > length) {
-                    more = true;
-                    entries.remove(entries.size() - 1);
-                }
-                
                 // wrap the results
+                int count = 0;
                 for (Iterator it = entries.iterator(); it.hasNext();) {
                     WeblogEntryComment comment = (WeblogEntryComment) it.next();
-                    results.add(WeblogEntryCommentWrapper.wrap(comment, urlStrategy));
+                    if (count++ < length) {
+                        results.add(WeblogEntryCommentWrapper.wrap(comment, urlStrategy));
+                    } else {
+                        more = true;
+                    }
                 }
                 
             } catch (Exception e) {

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/PlanetEntriesPager.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/PlanetEntriesPager.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/PlanetEntriesPager.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/PlanetEntriesPager.java Mon Sep 17 14:05:21 2007
@@ -94,31 +94,30 @@
             List results = new ArrayList();
             try {
                 PlanetManager planetManager = PlanetFactory.getPlanet().getPlanetManager();
-                Planet planet = planetManager.getPlanet("zzz_default_planet_zzz");
+                Planet planet = planetManager.getPlanet("default");
                 
-                List rawEntries = null;
+                List entries = null;
                 if (feedURL != null) {
                     Subscription sub = planetManager.getSubscription(feedURL);
-                    rawEntries = planetManager.getEntries(sub, offset, length+1);
+                    entries = planetManager.getEntries(sub, offset, length+1);
                 } else if (groupHandle != null) {
                     PlanetGroup group = planetManager.getGroup(planet, groupHandle);
-                    rawEntries = planetManager.getEntries(group, startDate, null, offset, length+1);
+                    entries = planetManager.getEntries(group, startDate, null, offset, length+1);
                 } else {
                     PlanetGroup group = planetManager.getGroup(planet, "all");
-                    rawEntries = planetManager.getEntries(group, startDate, null, offset, length+1);
-                }
-                
-                // check if there are more results for paging
-                if(rawEntries.size() > length) {
-                    more = true;
-                    rawEntries.remove(rawEntries.size() - 1);
+                    entries = planetManager.getEntries(group, startDate, null, offset, length+1);
                 }
                 
                 // wrap 'em
-                for (Iterator it = rawEntries.iterator(); it.hasNext();) {
+                int count = 0;
+                for (Iterator it = entries.iterator(); it.hasNext();) {
                     SubscriptionEntry entry = (SubscriptionEntry) it.next();
                     // TODO needs pojo wrapping from planet
-                    results.add(entry);
+                    if (count++ < length) { 
+                        results.add(entry);
+                    } else {
+                        more = true;
+                    }
                 }
                 
             } catch (Exception e) {
@@ -135,5 +134,6 @@
     public boolean hasMoreItems() {
         return more;
     }
-    
 }
+
+

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/UsersPager.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/UsersPager.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/UsersPager.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/UsersPager.java Mon Sep 17 14:05:21 2007
@@ -143,16 +143,15 @@
                     rawUsers = umgr.getUsersByLetter(letter.charAt(0), offset, length + 1);
                 }
                 
-                // check if there are more results for paging
-                if(rawUsers.size() > length) {
-                    more = true;
-                    rawUsers.remove(rawUsers.size() - 1);
-                }
-                
                 // wrap the results
+                int count = 0;
                 for (Iterator it = rawUsers.iterator(); it.hasNext();) {
                     User user = (User) it.next();
-                    results.add(UserWrapper.wrap(user));
+                    if (count++ < length) {
+                        results.add(UserWrapper.wrap(user));
+                    } else {
+                        more = true;
+                    }
                 }
                 
             } catch (Exception e) {

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/WeblogsPager.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/WeblogsPager.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/WeblogsPager.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/pagers/WeblogsPager.java Mon Sep 17 14:05:21 2007
@@ -152,20 +152,16 @@
                 } else {
                     rawWeblogs = wmgr.getWeblogsByLetter(letter.charAt(0), offset, length + 1);
                 }
-                // Collections returned by backend are not writeable, so create copy
-                List weblogs = new ArrayList();
-                weblogs.addAll(rawWeblogs);
-                
-                // check if there are more results for paging
-                if(weblogs.size() > length) {
-                    more = true;
-                    weblogs.remove(weblogs.size() - 1);
-                }
                 
                 // wrap the results
-                for (Iterator it = weblogs.iterator(); it.hasNext();) {
+                int count = 0;
+                for (Iterator it = rawWeblogs.iterator(); it.hasNext();) {
                     Weblog website = (Weblog) it.next();
-                    results.add(WeblogWrapper.wrap(website, urlStrategy));
+                    if (count++ < length) {
+                        results.add(WeblogWrapper.wrap(website, urlStrategy));                    
+                    } else {
+                        more = true;
+                    }
                 }
                 
             } catch (Exception e) {

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java Mon Sep 17 14:05:21 2007
@@ -63,43 +63,38 @@
  * Provides access to weblog pages.
  */
 public class PageServlet extends HttpServlet {
-    
+
     private static Log log = LogFactory.getLog(PageServlet.class);
-    
     // for referrer processing
     private boolean processReferrers = true;
     private static Pattern robotPattern = null;
-    
     // for caching
     private boolean excludeOwnerPages = false;
     private WeblogPageCache weblogPageCache = null;
     private SiteWideCache siteWideCache = null;
-    
-    
+
     /**
      * Init method for this servlet
      */
     public void init(ServletConfig servletConfig) throws ServletException {
-        
+
         super.init(servletConfig);
-        
+
         log.info("Initializing PageServlet");
-        
-        this.excludeOwnerPages = 
-                WebloggerConfig.getBooleanProperty("cache.excludeOwnerEditPages");
-        
+
+        this.excludeOwnerPages = WebloggerConfig.getBooleanProperty("cache.excludeOwnerEditPages");
+
         // get a reference to the weblog page cache
         this.weblogPageCache = WeblogPageCache.getInstance();
-        
+
         // get a reference to the site wide cache
         this.siteWideCache = SiteWideCache.getInstance();
-        
+
         // see if built-in referrer processing is enabled
-        this.processReferrers = 
-                WebloggerConfig.getBooleanProperty("referrers.processing.enabled");
-        
-        log.info("Referrer processing enabled = "+this.processReferrers);
-        
+        this.processReferrers = WebloggerConfig.getBooleanProperty("referrers.processing.enabled");
+
+        log.info("Referrer processing enabled = " + this.processReferrers);
+
         // check for possible robot pattern
         String robotPatternStr = WebloggerConfig.getProperty("referrer.robotCheck.userAgentPattern");
         if (robotPatternStr != null && robotPatternStr.length() > 0) {
@@ -108,62 +103,59 @@
                 robotPattern = Pattern.compile(robotPatternStr);
             } catch (Exception e) {
                 // Most likely a PatternSyntaxException; log and continue as if it is not set.
-                log.error("Error parsing referrer.robotCheck.userAgentPattern value '" +
-                        robotPatternStr + "'.  Robots will not be filtered. ", e);
+                log.error("Error parsing referrer.robotCheck.userAgentPattern value '" + robotPatternStr + "'.  Robots will not be filtered. ", e);
             }
         }
     }
-    
-    
+
     /**
      * Handle GET requests for weblog pages.
      */
-    public void doGet(HttpServletRequest request, HttpServletResponse response) 
-            throws ServletException, IOException {
-        
+    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
         log.debug("Entering");
-        
+
         // do referrer processing, if it's enabled
         // NOTE: this *must* be done first because it triggers a hibernate flush
         // which will close the active session and cause lazy init exceptions otherwise
-        if(this.processReferrers) {
+        if (this.processReferrers) {
             boolean spam = this.processReferrer(request);
-            if(spam) {
+            if (spam) {
                 log.debug("spammer, giving 'em a 403");
-                if(!response.isCommitted()) response.reset();
+                if (!response.isCommitted()) {
+                    response.reset();
+                }
                 response.sendError(HttpServletResponse.SC_FORBIDDEN);
                 return;
             }
         }
-        
-        
+
+
         Weblog weblog = null;
         boolean isSiteWide = false;
-        
+
         WeblogPageRequest pageRequest = null;
         try {
             pageRequest = new WeblogPageRequest(request);
-            
+
             weblog = pageRequest.getWeblog();
-            if(weblog == null) {
-                throw new WebloggerException("unable to lookup weblog: "+
-                        pageRequest.getWeblogHandle());
+            if (weblog == null) {
+                throw new WebloggerException("unable to lookup weblog: " + pageRequest.getWeblogHandle());
             }
-            
+
             // is this the site-wide weblog?
             isSiteWide = WebloggerRuntimeConfig.isSiteWideWeblog(pageRequest.getWeblogHandle());
-            
         } catch (Exception e) {
             // some kind of error parsing the request or looking up weblog
             log.debug("error creating page request", e);
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
             return;
         }
-        
-        
+
+
         // determine the lastModified date for this content
         long lastModified = System.currentTimeMillis();
-        if(isSiteWide) {
+        if (isSiteWide) {
             lastModified = siteWideCache.getLastModified().getTime();
         } else if (weblog.getLastModified() != null) {
             lastModified = weblog.getLastModified().getTime();
@@ -172,168 +164,166 @@
         // 304 Not Modified handling.
         // We skip this for logged in users to avoid the scenerio where a user
         // views their weblog, logs in, then gets a 304 without the 'edit' links
-        if(!pageRequest.isLoggedIn()) {
-            if (ModDateHeaderUtil.respondIfNotModified(request,response,lastModified)) {
+        if (!pageRequest.isLoggedIn()) {
+            if (ModDateHeaderUtil.respondIfNotModified(request, response, lastModified)) {
                 return;
             } else {
                 // set last-modified date
-                ModDateHeaderUtil.setLastModifiedHeader(response,lastModified);
+                ModDateHeaderUtil.setLastModifiedHeader(response, lastModified);
             }
         }
 
-                
+
         // generate cache key
         String cacheKey = null;
-        if(isSiteWide) {
+        if (isSiteWide) {
             cacheKey = siteWideCache.generateKey(pageRequest);
         } else {
             cacheKey = weblogPageCache.generateKey(pageRequest);
         }
-        
+
         // cached content checking
-        if((!this.excludeOwnerPages || !pageRequest.isLoggedIn()) &&
-                request.getAttribute("skipCache") == null) {
-            
+        if ((!this.excludeOwnerPages || !pageRequest.isLoggedIn()) && request.getAttribute("skipCache") == null) {
+
             CachedContent cachedContent = null;
-            if(isSiteWide) {
+            if (isSiteWide) {
                 cachedContent = (CachedContent) siteWideCache.get(cacheKey);
             } else {
                 cachedContent = (CachedContent) weblogPageCache.get(cacheKey, lastModified);
             }
-            
-            if(cachedContent != null) {
-                log.debug("HIT "+cacheKey);
-                
+
+            if (cachedContent != null) {
+                log.debug("HIT " + cacheKey);
+
                 // allow for hit counting
-                if(!isSiteWide) {
+                if (!isSiteWide) {
                     this.processHit(weblog, request.getRequestURL().toString(), request.getHeader("referer"));
                 }
-        
+
                 response.setContentLength(cachedContent.getContent().length);
                 response.setContentType(cachedContent.getContentType());
                 response.getOutputStream().write(cachedContent.getContent());
                 return;
-                
             } else {
-                log.debug("MISS "+cacheKey);
+                log.debug("MISS " + cacheKey);
             }
         }
-        
+
         log.debug("Looking for template to use for rendering");
-        
+
         // figure out what template to use
         ThemeTemplate page = null;
-        
+
         // If this is a popup request, then deal with it specially
         // TODO: do we really need to keep supporting this?
         if (request.getParameter("popup") != null) {
             try {
                 // Does user have a popupcomments page?
                 page = weblog.getTheme().getTemplateByName("_popupcomments");
-            } catch(Exception e ) {
+            } catch (Exception e) {
                 // ignored ... considered page not found
             }
-            
+
             // User doesn't have one so return the default
-            if(page == null) {
+            if (page == null) {
                 page = new StaticThemeTemplate("templates/weblog/popupcomments.vm", "velocity");
             }
-            
-        // If request specified the page, then go with that
-        } else if("page".equals(pageRequest.getContext())) {
+
+            // If request specified the page, then go with that
+        } else if ("page".equals(pageRequest.getContext())) {
             page = pageRequest.getWeblogPage();
-            
+
             // if we don't have this page then 404, we don't let
             // this one fall through to the default template
-            if(page == null) {
-                if(!response.isCommitted()) response.reset();
+            if (page == null) {
+                if (!response.isCommitted()) {
+                    response.reset();
+                }
                 response.sendError(HttpServletResponse.SC_NOT_FOUND);
                 return;
             }
-            
-        // If request specified tags section index, then look for custom template
-        } else if("tags".equals(pageRequest.getContext()) &&
-                pageRequest.getTags() == null) {
+
+            // If request specified tags section index, then look for custom template
+        } else if ("tags".equals(pageRequest.getContext()) && pageRequest.getTags() == null) {
             try {
                 page = weblog.getTheme().getTemplateByAction(ThemeTemplate.ACTION_TAGSINDEX);
-            } catch(Exception e) {
+            } catch (Exception e) {
                 log.error("Error getting weblog page for action 'tagsIndex'", e);
             }
-            
+
             // if we don't have a custom tags page then 404, we don't let
             // this one fall through to the default template
-            if(page == null) {
-                if(!response.isCommitted()) response.reset();
+            if (page == null) {
+                if (!response.isCommitted()) {
+                    response.reset();
+                }
                 response.sendError(HttpServletResponse.SC_NOT_FOUND);
                 return;
             }
-            
-        // If this is a permalink then look for a permalink template
-        } else if(pageRequest.getWeblogAnchor() != null) {
+
+            // If this is a permalink then look for a permalink template
+        } else if (pageRequest.getWeblogAnchor() != null) {
             try {
                 page = weblog.getTheme().getTemplateByAction(ThemeTemplate.ACTION_PERMALINK);
-            } catch(Exception e) {
+            } catch (Exception e) {
                 log.error("Error getting weblog page for action 'permalink'", e);
             }
         }
-        
+
         // if we haven't found a page yet then try our default page
-        if(page == null) {
+        if (page == null) {
             try {
                 page = weblog.getTheme().getDefaultTemplate();
-            } catch(Exception e) {
-                log.error("Error getting default page for weblog = "+
-                        weblog.getHandle(), e);
+            } catch (Exception e) {
+                log.error("Error getting default page for weblog = " + weblog.getHandle(), e);
             }
         }
-        
+
         // Still no page?  Then that is a 404
         if (page == null) {
-            if(!response.isCommitted()) response.reset();
+            if (!response.isCommitted()) {
+                response.reset();
+            }
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
             return;
         }
-        
+
         log.debug("page found, dealing with it");
-        
+
         // validation.  make sure that request input makes sense.
         boolean invalid = false;
-        if(pageRequest.getWeblogPageName() != null && page.isHidden()) {
+        if (pageRequest.getWeblogPageName() != null && page.isHidden()) {
             invalid = true;
         }
-        if(pageRequest.getLocale() != null) {
-            
+        if (pageRequest.getLocale() != null) {
+
             // locale view only allowed if weblog has enabled it
-            if(!pageRequest.getWeblog().isEnableMultiLang()) {
+            if (!pageRequest.getWeblog().isEnableMultiLang()) {
                 invalid = true;
             }
-            
         }
-        if(pageRequest.getWeblogAnchor() != null) {
-            
+        if (pageRequest.getWeblogAnchor() != null) {
+
             // permalink specified.
             // entry must exist, be published before current time, and locale must match
             WeblogEntry entry = pageRequest.getWeblogEntry();
-            if(entry == null) {
+            if (entry == null) {
                 invalid = true;
-            } else if (pageRequest.getLocale() != null && 
-                    !entry.getLocale().startsWith(pageRequest.getLocale())) {
+            } else if (pageRequest.getLocale() != null && !entry.getLocale().startsWith(pageRequest.getLocale())) {
                 invalid = true;
             } else if (!entry.isPublished()) {
                 invalid = true;
             } else if (new Date().before(entry.getPubTime())) {
                 invalid = true;
             }
-            
-        } else if(pageRequest.getWeblogCategoryName() != null) {
-            
+        } else if (pageRequest.getWeblogCategoryName() != null) {
+
             // category specified.  category must exist.
-            if(pageRequest.getWeblogCategory() == null) {
+            if (pageRequest.getWeblogCategory() == null) {
                 invalid = true;
             }
-            
-        } else if(pageRequest.getTags() != null && pageRequest.getTags().size() > 0) {
-            
+        } else if (pageRequest.getTags() != null && pageRequest.getTags().size() > 0) {
+
             try {
                 // tags specified.  make sure they exist.
                 WeblogEntryManager wmgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
@@ -343,35 +333,36 @@
             }
         }
 
-        
-        if(invalid) {
+
+        if (invalid) {
             log.debug("page failed validation, bailing out");
-            if(!response.isCommitted()) response.reset();
+            if (!response.isCommitted()) {
+                response.reset();
+            }
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
             return;
         }
-        
-        
+
+
         // do we need to force a specific locale for the request?
-        if(pageRequest.getLocale() == null && !weblog.isShowAllLangs()) {
+        if (pageRequest.getLocale() == null && !weblog.isShowAllLangs()) {
             pageRequest.setLocale(weblog.getLocale());
         }
-        
-        
+
+
         // allow for hit counting
-        if(!isSiteWide) {
+        if (!isSiteWide) {
             this.processHit(weblog, request.getRequestURL().toString(), request.getHeader("referer"));
         }
-        
+
 
         // looks like we need to render content
-        
         // set the content type
         String contentType = "text/html; charset=utf-8";
         if (StringUtils.isNotEmpty(page.getOutputContentType())) {
             contentType = page.getOutputContentType() + "; charset=utf-8";
         } else {
-            String mimeType = RollerContext.getServletContext().getMimeType(page.getLink()); 
+            String mimeType = RollerContext.getServletContext().getMimeType(page.getLink());
             if (mimeType != null) {
                 // we found a match ... set the content type
                 contentType = mimeType + "; charset=utf-8";
@@ -382,113 +373,113 @@
 
         HashMap model = new HashMap();
         try {
-            PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(
-                    this, request, response,"", false, 8192, true);
-            
+            PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, request, response, "", false, 8192, true);
+
             // special hack for menu tag
             request.setAttribute("pageRequest", pageRequest);
-            
+
             // populate the rendering model
             Map initData = new HashMap();
             initData.put("requestParameters", request.getParameterMap());
             initData.put("parsedRequest", pageRequest);
             initData.put("pageContext", pageContext);
-            
+
             // define url strategy
             initData.put("urlStrategy", WebloggerFactory.getWeblogger().getUrlStrategy());
-            
+
             // if this was a comment posting, check for comment form
-            WeblogEntryCommentForm commentForm = 
-                    (WeblogEntryCommentForm) request.getAttribute("commentForm");
-            if(commentForm != null) {
+            WeblogEntryCommentForm commentForm = (WeblogEntryCommentForm) request.getAttribute("commentForm");
+            if (commentForm != null) {
                 initData.put("commentForm", commentForm);
             }
-            
+
             // Load models for pages
             String pageModels = WebloggerConfig.getProperty("rendering.pageModels");
             ModelLoader.loadModels(pageModels, model, initData, true);
-            
+
             // Load special models for site-wide blog
-            if(WebloggerRuntimeConfig.isSiteWideWeblog(weblog.getHandle())) {
+            if (WebloggerRuntimeConfig.isSiteWideWeblog(weblog.getHandle())) {
                 String siteModels = WebloggerConfig.getProperty("rendering.siteModels");
                 ModelLoader.loadModels(siteModels, model, initData, true);
             }
 
             // Load weblog custom models
             ModelLoader.loadCustomModels(weblog, model, initData);
-            
+
             // ick, gotta load pre-3.0 model stuff as well :(
             ModelLoader.loadOldModels(model, request, response, pageContext, pageRequest, WebloggerFactory.getWeblogger().getUrlStrategy());
-            
         } catch (WebloggerException ex) {
             log.error("Error loading model objects for page", ex);
-            
-            if(!response.isCommitted()) response.reset();
+
+            if (!response.isCommitted()) {
+                response.reset();
+            }
             response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             return;
         }
-        
-        
+
+
         // lookup Renderer we are going to use
         Renderer renderer = null;
         try {
             log.debug("Looking up renderer");
             renderer = RendererManager.getRenderer(page);
-        } catch(Exception e) {
+        } catch (Exception e) {
             // nobody wants to render my content :(
-            log.error("Couldn't find renderer for page "+page.getId(), e);
-            
-            if(!response.isCommitted()) response.reset();
+            log.error("Couldn't find renderer for page " + page.getId(), e);
+
+            if (!response.isCommitted()) {
+                response.reset();
+            }
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
             return;
         }
-        
+
         // render content.  use size of about 24K for a standard page
         CachedContent rendererOutput = new CachedContent(24567, contentType);
         try {
             log.debug("Doing rendering");
             renderer.render(model, rendererOutput.getCachedWriter());
-            
+
             // flush rendered output and close
             rendererOutput.flush();
             rendererOutput.close();
-        } catch(Exception e) {
+        } catch (Exception e) {
             // bummer, error during rendering
-            log.error("Error during rendering for page "+page.getId(), e);
-            
-            if(!response.isCommitted()) response.reset();
+            log.error("Error during rendering for page " + page.getId(), e);
+
+            if (!response.isCommitted()) {
+                response.reset();
+            }
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
             return;
         }
-        
-        
+
+
         // post rendering process
-        
         // flush rendered content to response
         log.debug("Flushing response output");
         response.setContentType(contentType);
         response.setContentLength(rendererOutput.getContent().length);
         response.getOutputStream().write(rendererOutput.getContent());
-        
+
         // cache rendered content.  only cache if user is not logged in?
-        if((!this.excludeOwnerPages || !pageRequest.isLoggedIn()) &&
-                request.getAttribute("skipCache") == null) {
-            log.debug("PUT "+cacheKey);
-            
+        if ((!this.excludeOwnerPages || !pageRequest.isLoggedIn()) && request.getAttribute("skipCache") == null) {
+            log.debug("PUT " + cacheKey);
+
             // put it in the right cache
-            if(isSiteWide) {
+            if (isSiteWide) {
                 siteWideCache.put(cacheKey, rendererOutput);
             } else {
                 weblogPageCache.put(cacheKey, rendererOutput);
             }
         } else {
-            log.debug("SKIPPED "+cacheKey);
+            log.debug("SKIPPED " + cacheKey);
         }
-        
+
         log.debug("Exiting");
     }
-        
-    
+
     /**
      * Handle POST requests.
      *
@@ -497,27 +488,24 @@
      * may want to revisit this approach in the future and see if we can do
      * this in a different way, but for now this is the easy way.
      */
-    public void doPost(HttpServletRequest request, HttpServletResponse response) 
-            throws ServletException, IOException {
-        
+    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
         // make sure caching is disabled
         request.setAttribute("skipCache", "true");
-        
+
         // handle just like a GET request
         this.doGet(request, response);
     }
-    
-    
+
     /**
      * Notify the hit tracker that it has an incoming page hit.
      */
     private void processHit(Weblog weblog, String url, String referrer) {
-        
+
         HitCountQueue counter = HitCountQueue.getInstance();
         counter.processHit(weblog, url, referrer);
     }
-    
-    
+
     /**
      * Process the incoming request to extract referrer info and pass it on
      * to the referrer processing queue for tracking.
@@ -525,9 +513,9 @@
      * @returns true if referrer was spam, false otherwise
      */
     private boolean processReferrer(HttpServletRequest request) {
-        
-        log.debug("processing referrer for "+request.getRequestURI());
-        
+
+        log.debug("processing referrer for " + request.getRequestURI());
+
         // bleh!  because ref processing does a flush it will close
         // our hibernate session and cause lazy init exceptions on
         // objects we have fetched, so we need to use a separate
@@ -538,22 +526,21 @@
         } catch (InvalidRequestException ex) {
             return false;
         }
-        
+
         // if this came from site-wide frontpage then skip it
-        if(WebloggerRuntimeConfig.isSiteWideWeblog(pageRequest.getWeblogHandle())) {
+        if (WebloggerRuntimeConfig.isSiteWideWeblog(pageRequest.getWeblogHandle())) {
             return false;
         }
-        
+
         // if this came from a robot then don't process it
         if (robotPattern != null) {
             String userAgent = request.getHeader("User-Agent");
-            if (userAgent != null && userAgent.length() > 0 && 
-                    robotPattern.matcher(userAgent).matches()) {
+            if (userAgent != null && userAgent.length() > 0 && robotPattern.matcher(userAgent).matches()) {
                 log.debug("skipping referrer from robot");
                 return false;
             }
         }
-        
+
         String referrerUrl = request.getHeader("Referer");
         StringBuffer reqsb = request.getRequestURL();
         if (request.getQueryString() != null) {
@@ -561,53 +548,51 @@
             reqsb.append(request.getQueryString());
         }
         String requestUrl = reqsb.toString();
-        
-        log.debug("referrer = "+referrerUrl);
-        
+
+        log.debug("referrer = " + referrerUrl);
+
         // if this came from persons own blog then don't process it
-        String selfSiteFragment = "/"+pageRequest.getWeblogHandle();
+        String selfSiteFragment = "/" + pageRequest.getWeblogHandle();
         if (referrerUrl != null && referrerUrl.indexOf(selfSiteFragment) != -1) {
             log.debug("skipping referrer from own blog");
             return false;
         }
-        
+
         // validate the referrer
         if (pageRequest != null && pageRequest.getWeblogHandle() != null) {
-            
+
             // Base page URLs, with and without www.
-            String basePageUrlWWW =
-                    WebloggerRuntimeConfig.getAbsoluteContextURL() + "/" + pageRequest.getWeblogHandle();
+            String basePageUrlWWW = WebloggerRuntimeConfig.getAbsoluteContextURL() + "/" + pageRequest.getWeblogHandle();
             String basePageUrl = basePageUrlWWW;
-            if ( basePageUrlWWW.startsWith("http://www.") ) {
+            if (basePageUrlWWW.startsWith("http://www.")) {
                 // chop off the http://www.
-                basePageUrl = "http://"+basePageUrlWWW.substring(11);
+                basePageUrl = "http://" + basePageUrlWWW.substring(11);
             }
-            
+
             // ignore referrers coming from users own blog
-            if (referrerUrl == null ||
-                    (!referrerUrl.startsWith(basePageUrl) &&
-                    !referrerUrl.startsWith(basePageUrlWWW))) {
-                
+            if (referrerUrl == null || (!referrerUrl.startsWith(basePageUrl) && !referrerUrl.startsWith(basePageUrlWWW))) {
+
                 // validate the referrer
-                if ( referrerUrl != null ) {
+                if (referrerUrl != null) {
                     // treat editor referral as direct
                     int lastSlash = requestUrl.indexOf("/", 8);
-                    if (lastSlash == -1) lastSlash = requestUrl.length();
+                    if (lastSlash == -1) {
+                        lastSlash = requestUrl.length();
+                    }
                     String requestSite = requestUrl.substring(0, lastSlash);
-                    
+
                     if (referrerUrl.matches(requestSite + ".*\\.rol.*")) {
                         referrerUrl = null;
-                    } else if(BlacklistChecker.checkReferrer(pageRequest.getWeblog(), referrerUrl)) {
+                    } else if (BlacklistChecker.checkReferrer(pageRequest.getWeblog(), referrerUrl)) {
                         return true;
                     }
                 }
-
             } else {
-                log.debug("Ignoring referer = "+referrerUrl);
+                log.debug("Ignoring referer = " + referrerUrl);
                 return false;
             }
         }
-        
+
         // referrer is valid, lets record it
         try {
             IncomingReferrer referrer = new IncomingReferrer();
@@ -616,15 +601,13 @@
             referrer.setWeblogHandle(pageRequest.getWeblogHandle());
             referrer.setWeblogAnchor(pageRequest.getWeblogAnchor());
             referrer.setWeblogDateString(pageRequest.getWeblogDate());
-            
-            ReferrerQueueManager refQueue =
-                    WebloggerFactory.getWeblogger().getReferrerQueueManager();
+
+            ReferrerQueueManager refQueue = WebloggerFactory.getWeblogger().getReferrerQueueManager();
             refQueue.processReferrer(referrer);
-        } catch(Exception e) {
+        } catch (Exception e) {
             log.error("Error processing referrer", e);
         }
-        
+
         return false;
     }
-    
-}
+}
\ No newline at end of file

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PlanetFeedServlet.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PlanetFeedServlet.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PlanetFeedServlet.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/servlets/PlanetFeedServlet.java Mon Sep 17 14:05:21 2007
@@ -26,14 +26,14 @@
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
 import org.apache.roller.planet.business.PlanetFactory;
 import org.apache.roller.planet.business.PlanetManager;
+import org.apache.roller.planet.config.PlanetRuntimeConfig;
 import org.apache.roller.planet.pojos.Planet;
-import org.apache.roller.planet.pojos.PlanetGroup;
 import org.apache.roller.weblogger.pojos.StaticTemplate;
 import org.apache.roller.weblogger.pojos.Template;
 import org.apache.roller.weblogger.ui.rendering.Renderer;
@@ -52,35 +52,31 @@
  * @web.servlet-mapping url-pattern="/planetrss/*"
  */
 public class PlanetFeedServlet extends HttpServlet {
-    
+
     private static Log log = LogFactory.getLog(PlanetFeedServlet.class);
-    
     private PlanetCache planetCache = null;
-    
-    
+
     /**
      * Init method for this servlet
      */
     public void init(ServletConfig servletConfig) throws ServletException {
-        
+
         super.init(servletConfig);
-        
+
         log.info("Initializing PlanetRssServlet");
-        
+
         this.planetCache = PlanetCache.getInstance();
     }
-    
-    
+
     /**
      * Handle GET requests for weblog pages.
      */
-    public void doGet(HttpServletRequest request, HttpServletResponse response) 
-            throws ServletException, IOException {
-        
+    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
         log.debug("Entering");
-        
+
         PlanetManager planet = PlanetFactory.getPlanet().getPlanetManager();
-        
+
         PlanetRequest planetRequest = null;
         try {
             planetRequest = new PlanetRequest(request);
@@ -90,22 +86,21 @@
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
             return;
         }
-        
+
         // figure planet last modified date
         Date lastModified = planetCache.getLastModified();
-        
+
         // Respond with 304 Not Modified if it is not modified.
-        if (ModDateHeaderUtil.respondIfNotModified(request,response,lastModified.getTime())) {
+        if (ModDateHeaderUtil.respondIfNotModified(request, response, lastModified.getTime())) {
             return;
         }
 
         // set content type
         String accepts = request.getHeader("Accept");
         String userAgent = request.getHeader("User-Agent");
-        if (accepts != null && userAgent != null 
-            && accepts.indexOf("*/*") != -1 && userAgent.startsWith("Mozilla")) {
-            // client is a browser and now that we offer styled feeds we want 
-            // browsers to load the page rather than popping up the download 
+        if (accepts != null && userAgent != null && accepts.indexOf("*/*") != -1 && userAgent.startsWith("Mozilla")) {
+            // client is a browser and now that we offer styled feeds we want
+            // browsers to load the page rather than popping up the download
             // dialog, so we provide a content-type that browsers will display
             response.setContentType("text/xml");
         } else {
@@ -113,105 +108,118 @@
         }
 
         // set last-modified date
-        ModDateHeaderUtil.setLastModifiedHeader(response,lastModified.getTime());
+        ModDateHeaderUtil.setLastModifiedHeader(response, lastModified.getTime());
 
         // cached content checking
-        String cacheKey = PlanetCache.CACHE_ID+":"+this.generateKey(planetRequest);
+        String cacheKey = PlanetCache.CACHE_ID + ":" + this.generateKey(planetRequest);
         CachedContent entry = (CachedContent) planetCache.get(cacheKey);
-        if(entry != null) {
+        if (entry != null) {
             response.setContentLength(entry.getContent().length);
             response.getOutputStream().write(entry.getContent());
             return;
-            
         }
-        
-        
+
+
         // looks like we need to render content
-        HashMap model = new HashMap();
+        @SuppressWarnings("unchecked")
+        HashMap<String, Object> model = new HashMap();
         try {
             // populate the rendering model
             if (request.getParameter("group") != null) {
-                Planet planetObject = planet.getPlanet("zzz_default_planet_zzz");
+                Planet planetObject = planet.getPlanet("default");
                 model.put("group", planet.getGroup(planetObject, request.getParameter("group")));
             }
             model.put("planet", planet);
             model.put("date", new Date());
             model.put("utils", new UtilitiesModel());
-            model.put("absoluteSite", WebloggerRuntimeConfig.getAbsoluteContextURL());
+            model.put("siteName", PlanetRuntimeConfig.getProperty("site.name"));
+            model.put("siteDescription", PlanetRuntimeConfig.getProperty("site.description"));
+            model.put("lastModified", lastModified);
+            if (StringUtils.isNotEmpty(PlanetRuntimeConfig.getProperty("site.absoluteurl"))) {
+                model.put("absoluteSite", PlanetRuntimeConfig.getProperty("site.absoluteurl"));
+            } else {
+                model.put("absoluteSite", WebloggerRuntimeConfig.getAbsoluteContextURL());
+            }
             model.put("feedStyle", new Boolean(WebloggerRuntimeConfig.getBooleanProperty("site.newsfeeds.styledFeeds")));
 
-            int numEntries =
-                    WebloggerRuntimeConfig.getIntProperty("site.newsfeeds.defaultEntries");
+            int numEntries = WebloggerRuntimeConfig.getIntProperty("site.newsfeeds.defaultEntries");
             int entryCount = numEntries;
             String sCount = request.getParameter("count");
-            if (sCount!=null) {
+            if (sCount != null) {
                 try {
                     entryCount = Integer.parseInt(sCount);
                 } catch (NumberFormatException e) {
                     log.warn("Improperly formatted count parameter");
                 }
-                if ( entryCount > numEntries ) entryCount = numEntries;
-                if ( entryCount < 0 ) entryCount = 0;
+                if (entryCount > numEntries) {
+                    entryCount = numEntries;
+                }
+                if (entryCount < 0) {
+                    entryCount = 0;
+                }
             }
             model.put("entryCount", new Integer(entryCount));
-            
         } catch (Exception ex) {
             log.error("Error loading model objects for page", ex);
-            
-            if(!response.isCommitted()) response.reset();
+
+            if (!response.isCommitted()) {
+                response.reset();
+            }
             response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
             return;
         }
-        
-        
+
+
         // lookup Renderer we are going to use
         Renderer renderer = null;
         try {
             log.debug("Looking up renderer");
             Template template = new StaticTemplate("templates/planet/planetrss.vm", "velocity");
             renderer = RendererManager.getRenderer(template);
-        } catch(Exception e) {
+        } catch (Exception e) {
             // nobody wants to render my content :(
             log.error("Couldn't find renderer for planet rss", e);
-            
-            if(!response.isCommitted()) response.reset();
+
+            if (!response.isCommitted()) {
+                response.reset();
+            }
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
             return;
         }
-        
+
         // render content.  use default size of about 24K for a standard page
         CachedContent rendererOutput = new CachedContent(24567);
         try {
             log.debug("Doing rendering");
             renderer.render(model, rendererOutput.getCachedWriter());
-            
+
             // flush rendered output and close
             rendererOutput.flush();
             rendererOutput.close();
-        } catch(Exception e) {
+        } catch (Exception e) {
             // bummer, error during rendering
             log.error("Error during rendering for planet rss", e);
-            
-            if(!response.isCommitted()) response.reset();
+
+            if (!response.isCommitted()) {
+                response.reset();
+            }
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
             return;
         }
-        
-        
+
+
         // post rendering process
-        
         // flush rendered content to response
         log.debug("Flushing response output");
         response.setContentLength(rendererOutput.getContent().length);
         response.getOutputStream().write(rendererOutput.getContent());
-        
+
         // cache rendered content.
         this.planetCache.put(cacheKey, rendererOutput);
-        
+
         log.debug("Exiting");
     }
 
-    
     /**
      * Generate a cache key from a parsed planet request.
      * This generates a key of the form ...
@@ -228,32 +236,31 @@
      *
      */
     private String generateKey(PlanetRequest planetRequest) {
-        
+
         StringBuffer key = new StringBuffer();
         key.append(planetRequest.getContext());
         key.append("/");
         key.append(planetRequest.getType());
-        
-        if(planetRequest.getFlavor() != null) {
+
+        if (planetRequest.getFlavor() != null) {
             key.append("/").append(planetRequest.getFlavor());
         }
-        
+
         // add language
         key.append("/").append(planetRequest.getLanguage());
-        
-        if(planetRequest.getFlavor() != null) {
+
+        if (planetRequest.getFlavor() != null) {
             // add excerpts
-            if(planetRequest.isExcerpts()) {
+            if (planetRequest.isExcerpts()) {
                 key.append("/excerpts");
             }
         } else {
             // add login state
-            if(planetRequest.getAuthenticUser() != null) {
+            if (planetRequest.getAuthenticUser() != null) {
                 key.append("/user=").append(planetRequest.getAuthenticUser());
             }
         }
-        
+
         return key.toString();
     }
-    
-}
+}
\ No newline at end of file

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/velocity/deprecated/NewsfeedCache.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/velocity/deprecated/NewsfeedCache.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/velocity/deprecated/NewsfeedCache.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/velocity/deprecated/NewsfeedCache.java Mon Sep 17 14:05:21 2007
@@ -38,15 +38,15 @@
  */
 public class NewsfeedCache {
     
-    private static Log mLogger = LogFactory.getLog(NewsfeedCache.class);
+    private static Log log = LogFactory.getLog(NewsfeedCache.class);
     
     /** Static singleton * */
-    private static NewsfeedCache mInstance = null;
+    private static NewsfeedCache instance = null;
     
     /** Instance vars * */
     private boolean aggregator_enabled = true;
     private boolean aggregator_cache_enabled = true;
-    private int aggregator_cache_timeout = 14400;
+    private int     aggregator_cache_timeout = 14400;
     
     /** LRU cache */
     LRUCache2 mCache = null;
@@ -66,8 +66,12 @@
             this.aggregator_cache_enabled = true;
         
         try {
-            this.aggregator_cache_timeout = Integer.parseInt(cachetime);
-        } catch(Exception e) { mLogger.warn(e); }
+            if (cachetime != null) {
+                this.aggregator_cache_timeout = Integer.parseInt(cachetime);
+            }
+        } catch(NumberFormatException e) { 
+            log.error("ERROR 'aggregator.cache.timeout'not a valid integer: " + cachetime);
+        }
         
         // finally ... create the cache
         this.mCache = new LRUCache2(100, 1000 * this.aggregator_cache_timeout);
@@ -77,14 +81,14 @@
     /** static singleton retriever */
     public static NewsfeedCache getInstance() {
         synchronized (NewsfeedCache.class) {
-            if (mInstance == null) {
-                if (mLogger.isDebugEnabled()) {
-                    mLogger.debug("Instantiating new NewsfeedCache");
+            if (instance == null) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Instantiating new NewsfeedCache");
                 }
-                mInstance = new NewsfeedCache();
+                instance = new NewsfeedCache();
             }
         }
-        return mInstance;
+        return instance;
     }
     
     
@@ -104,14 +108,14 @@
             }
             
             if (aggregator_cache_enabled) {
-                if (mLogger.isDebugEnabled()) {
-                    mLogger.debug("Newsfeed: use Cache for " + feedUrl);
+                if (log.isDebugEnabled()) {
+                    log.debug("Newsfeed: use Cache for " + feedUrl);
                 }
                 
                 // Get pre-parsed feed from the cache
                 feed = (SyndFeed) mCache.get(feedUrl);
-                if (mLogger.isDebugEnabled()) {
-                    mLogger.debug("Newsfeed: got from Cache");
+                if (log.isDebugEnabled()) {
+                    log.debug("Newsfeed: got from Cache");
                 }
                 
                 if (feed == null) {
@@ -121,16 +125,16 @@
                         feed = feedInput.build(new InputStreamReader(
                                 new URL(feedUrl).openStream()));
                     } catch (Exception e1) {
-                        mLogger.info("Error parsing RSS: " + feedUrl);
+                        log.info("Error parsing RSS: " + feedUrl);
                     }
                 }
                 // Store parsed feed in the cache
                 mCache.put(feedUrl, feed);
-                mLogger.debug("Newsfeed: not in Cache");
+                log.debug("Newsfeed: not in Cache");
                 
             } else {
-                if (mLogger.isDebugEnabled()) {
-                    mLogger.debug("Newsfeed: not using Cache for " + feedUrl);
+                if (log.isDebugEnabled()) {
+                    log.debug("Newsfeed: not using Cache for " + feedUrl);
                 }
                 try {
                     // charset fix from Jason Rumney (see ROL-766)
@@ -160,13 +164,13 @@
                     feed = feedInput.build(new InputStreamReader(
                             connection.getInputStream(), charset));
                 } catch (Exception e1) {
-                    mLogger.info("Error parsing RSS: " + feedUrl);
+                    log.info("Error parsing RSS: " + feedUrl);
                 }
             }
             
         } catch (Exception ioe) {
-            if (mLogger.isDebugEnabled()) {
-                mLogger.debug("Newsfeed: Unexpected exception", ioe);
+            if (log.isDebugEnabled()) {
+                log.debug("Newsfeed: Unexpected exception", ioe);
             }
         }
         

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java Mon Sep 17 14:05:21 2007
@@ -95,12 +95,14 @@
             Weblog weblog = wmgr.getWeblog(getInviteId());
             WeblogPermission perm = umgr.getWeblogPermission(weblog, getAuthenticatedUser());
             if (perm != null) {
+                String handle = weblog.getHandle();
+                        
                 // TODO ROLLER_2.0: notify inviter that invitee has declined invitation
                 // TODO EXCEPTIONS: better exception handling here
                 umgr.declineWeblogPermission(perm);
                 WebloggerFactory.getWeblogger().flush();
 
-                addMessage("yourWebsites.declined", perm.getWeblog().getHandle());
+                addMessage("yourWebsites.declined", handle);
             } else {
                 addError("yourWebsites.permNotFound");
             }

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java Mon Sep 17 14:05:21 2007
@@ -124,14 +124,15 @@
                 WebloggerFactory.getWeblogger().flush();
             }
             
-            wmgr.removeWeblogCategory(getCategory());
-            WebloggerFactory.getWeblogger().flush();
-            
             // notify cache
+            String id = getCategory().getId();
             CacheManager.invalidate(getCategory());
             
+            wmgr.removeWeblogCategory(getCategory());
+            WebloggerFactory.getWeblogger().flush();
+            
             // set category id to parent for next page
-            setRemoveId(getCategory().getParent().getId());
+            setRemoveId(id);
             
             return SUCCESS;
             

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/util/URLUtilities.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/util/URLUtilities.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/util/URLUtilities.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/util/URLUtilities.java Mon Sep 17 14:05:21 2007
@@ -112,4 +112,22 @@
         }
         return tagsString.toString();
     }
+    
+        
+    /**
+     * URL encode a path string using UTF-8. The path seprator '/' will not be encoded
+     */
+    public static final String encodePath(String path) {
+        int i = path.indexOf('/');
+        StringBuffer sb = new StringBuffer();
+        while (i != -1) {
+            sb.append(encode(path.substring(0, i))).append('/');
+            path = path.substring(i + 1);
+            i = path.indexOf('/');
+        }
+        sb.append(encode(path));
+        return sb.toString();
+    }
 }
+
+

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerMemberHandler.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerMemberHandler.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerMemberHandler.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerMemberHandler.java Mon Sep 17 14:05:21 2007
@@ -270,6 +270,7 @@
                 perms.add(pd);
             }
             return toMemberEntrySet(perms);
+            
         } catch (WebloggerException re) {
             throw new InternalException("ERROR: Could not create members", re);
         }
@@ -355,16 +356,16 @@
 
             pd.setActions(WeblogPermission.ALL_ACTIONS);
             
+
             UserManager mgr = getRoller().getUserManager();
             mgr.revokeWeblogPermission(pd);
-            getRoller().flush();
-            
+            getRoller().flush();            
+
             CacheManager.invalidate(ud);
             CacheManager.invalidate(wd);
             
-            WeblogPermission deletedPerm = new WeblogPermission(wd, ud, WeblogPermission.ALL_ACTIONS);
+            // return empty set, entry was deleted
             List<WeblogPermission> pds = new ArrayList<WeblogPermission>();
-            pds.add(deletedPerm);
             EntrySet es = toMemberEntrySet(pds);
             return es;
             

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerUserHandler.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerUserHandler.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerUserHandler.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerUserHandler.java Mon Sep 17 14:05:21 2007
@@ -221,18 +221,20 @@
         // don't allow deletion of the currently authenticated user
         if (ud.getUserName().equals(getUserName())) {
             throw new NotAllowedException("ERROR: Can't delete authenticated user: " + getUserName());
-        }
-        
-        User[] uds = new User[] { ud };
+        }  
         
         try {
+            CacheManager.invalidate(ud);
+
             getRoller().getUserManager().removeUser(ud);
             getRoller().flush();
-            CacheManager.invalidate(ud);
+            
         } catch (WebloggerException re) {
             throw new InternalException("ERROR: could not delete user data", re);
         }
         
+        // return empty set, entry was deleted
+        User[] uds = new User[0];
         EntrySet es = toUserEntrySet(uds);
         return es;
     }

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerWeblogHandler.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerWeblogHandler.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerWeblogHandler.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerWeblogHandler.java Mon Sep 17 14:05:21 2007
@@ -261,16 +261,17 @@
         String handle = getUri().getEntryId();
         
         try {
-            
             Weblog wd = getWebsiteData(handle);
-            Weblog[] wds = new Weblog[] { wd };
-            EntrySet es = toWeblogEntrySet(wds);
-            
+            CacheManager.invalidate(wd);
+
             WebloggerFactory.getWeblogger().getWeblogManager().removeWeblog(wd);
             getRoller().flush();
-            CacheManager.invalidate(wd);
-            
+
+            // return empty set, object deleted
+            Weblog[] wds = new Weblog[0];
+            EntrySet es = toWeblogEntrySet(wds);
             return es;
+
         } catch (WebloggerException re) {
             throw new InternalException("ERROR: Could not delete entry: " + handle, re);
         }

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/sdk/UserEntry.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/sdk/UserEntry.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/sdk/UserEntry.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/sdk/UserEntry.java Mon Sep 17 14:05:21 2007
@@ -96,6 +96,12 @@
             setFullName(fullNameElement.getText());
         }
         
+        // screenname
+        Element screenNameElement = e.getChild(Tags.SCREEN_NAME, NAMESPACE);
+        if (screenNameElement != null) {
+            setScreenName(screenNameElement.getText());
+        }
+        
         // password
         Element passwordElement = e.getChild(Tags.PASSWORD, NAMESPACE);
         if (passwordElement != null) {

Modified: roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/atomprotocol/Collection.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/atomprotocol/Collection.java?rev=576585&r1=576584&r2=576585&view=diff
==============================================================================
--- roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/atomprotocol/Collection.java (original)
+++ roller/branches/roller_4.1_dev/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/atomprotocol/Collection.java Mon Sep 17 14:05:21 2007
@@ -43,6 +43,7 @@
     private String listTemplate = null;
     private String href = null;
     private List categories = new ArrayList(); // of Categories objects    
+    private List accepts = new ArrayList(); // of Strings
     
     /**
      * Collection MUST have title and href.
@@ -59,12 +60,16 @@
     /**
      * Comma separated list of media-ranges accepted by collection.
      */
-    public String getAccept() {
-        return accept;
+    public List getAccepts() {
+        return accepts;
     }
     
-    public void setAccept(String accept) {
-        this.accept = accept;
+    public void addAccept(String accept) {
+        this.accepts.add(accept);
+    }
+    
+    public void setAccepts(List accepts) {
+        this.accepts = accepts;
     }
     
     /** The URI of the collection */
@@ -116,7 +121,7 @@
         } else if (entry && entryType.equals(accept)) {
             return true;
         } else {
-            String[] rules = accept.split(",");
+            String[] rules = (String[])accepts.toArray(new String[accepts.size()]);
             for (int i=0; i<rules.length; i++) {
                 String rule = rules[i].trim();
                 if (rule.equals(ct)) return true;
@@ -168,9 +173,12 @@
             element.addContent(catsElem);
         }
         
-        Element memberType = new Element("accept", AtomService.ATOM_PROTOCOL);
-        memberType.setText(collection.getAccept());
-        element.addContent(memberType);
+        for (Iterator it = collection.getAccepts().iterator(); it.hasNext();) {
+            String range = (String)it.next();
+            Element acceptElem = new Element("accept", AtomService.ATOM_PROTOCOL);
+            acceptElem.setText(range);
+            element.addContent(acceptElem);
+        }
         
         return element;
     }
@@ -186,9 +194,12 @@
         }
         Collection collection = new Collection(newTitle, newType, newHref);
                 
-        Element memberType = element.getChild("accept",  AtomService.ATOM_PROTOCOL);
-        if (memberType != null) {
-            collection.setAccept(memberType.getText());
+        List acceptElems = element.getChildren("accept",  AtomService.ATOM_PROTOCOL);
+        if (acceptElems != null && acceptElems.size() > 0) {
+            for (Iterator it = acceptElems.iterator(); it.hasNext();) {
+                Element acceptElem = (Element)it.next();
+                collection.addAccept(acceptElem.getTextTrim());
+            }
         }
         
         // Loop to parse <app:categories> element to Categories objects