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