You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/06/24 06:31:48 UTC
svn commit: r201564 [2/4] - in /incubator/roller/branches/roller_2.0: ./
contrib/plugins/src/org/roller/presentation/velocity/plugins/readmore/
custom/ metadata/database/ metadata/database/hibernate/ nbproject/
personal/testing/ src/org/roller/business...
Modified: incubator/roller/branches/roller_2.0/src/org/roller/pojos/WeblogEntryData.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/pojos/WeblogEntryData.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/pojos/WeblogEntryData.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/pojos/WeblogEntryData.java Thu Jun 23 21:31:43 2005
@@ -1,6 +1,7 @@
package org.roller.pojos;
+import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.sql.Timestamp;
@@ -21,14 +22,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.roller.RollerException;
-import org.roller.model.Roller;
import org.roller.model.RollerFactory;
import org.roller.model.WeblogManager;
import org.roller.util.DateUtil;
import org.roller.util.Utilities;
-import sun.security.krb5.internal.i;
-
/**
* Represents a Weblog Entry.
@@ -40,8 +38,7 @@
* @hibernate.class table="weblogentry"
* hibernate.jcs-cache usage="read-write"
*/
-public class WeblogEntryData extends org.roller.pojos.PersistentObject
- implements java.io.Serializable
+public class WeblogEntryData extends WebsiteObject implements Serializable
{
private static Log mLogger = LogFactory.getFactory()
.getInstance(WeblogEntryData.class);
@@ -57,6 +54,7 @@
protected Timestamp pubTime=null;
protected Timestamp updateTime=null;
protected Boolean publishEntry=null;
+ protected UserData mCreator=null;
protected WebsiteData mWebsite=null;
protected String mPlugins;
protected Boolean allowComments = Boolean.TRUE;
@@ -187,6 +185,21 @@
/**
* @ejb:persistent-field
+ * @hibernate.many-to-one column="userid" cascade="none" not-null="true"
+ */
+ public UserData getCreator()
+ {
+ return this.mCreator;
+ }
+
+ /** @ejb:persistent-field */
+ public void setCreator(UserData creator)
+ {
+ this.mCreator = creator;
+ }
+
+ /**
+ * @ejb:persistent-field
* @hibernate.property column="title" non-null="true" unique="false"
*/
public java.lang.String getTitle()
@@ -673,7 +686,7 @@
}
WebsiteData website = this.getWebsite();
- String plink = "/page/" + website.getUser().getUserName() +
+ String plink = "/page/" + website.getHandle() +
"?anchor=" + lAnchor;
return plink;
@@ -707,7 +720,7 @@
{
// go with the "no encoding" version
}
- String clink = "/page/" + this.getWebsite().getUser().getUserName() + "?anchor=" + lAnchor;
+ String clink = "/page/" + this.getWebsite().getHandle() + "?anchor=" + lAnchor;
return clink;
}
/** to please XDoclet */
@@ -996,17 +1009,4 @@
return new ArrayList();
}
- public boolean canSave() throws RollerException
- {
- Roller roller = RollerFactory.getRoller();
- if (roller.getUser().equals(UserData.SYSTEM_USER))
- {
- return true;
- }
- if (roller.getUser().equals(getWebsite().getUser()))
- {
- return true;
- }
- return false;
- }
}
Modified: incubator/roller/branches/roller_2.0/src/org/roller/pojos/WebsiteData.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/pojos/WebsiteData.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/pojos/WebsiteData.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/pojos/WebsiteData.java Thu Jun 23 21:31:43 2005
@@ -6,6 +6,8 @@
import org.roller.model.RollerFactory;
import org.roller.util.PojoUtil;
+import java.util.Iterator;
+import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
/**
@@ -21,24 +23,27 @@
implements java.io.Serializable
{
static final long serialVersionUID = 206437645033737127L;
- protected java.lang.String id;
- protected java.lang.String name;
- protected java.lang.String description;
- protected java.lang.String defaultPageId;
- protected java.lang.String weblogDayPageId;
- protected java.lang.Boolean enableBloggerApi;
+ protected String id;
+ protected String handle;
+ protected String name;
+ protected String description;
+ protected String defaultPageId;
+ protected String weblogDayPageId;
+ protected Boolean enableBloggerApi;
+ protected String editorPage;
+ protected String ignoreWords;
+ protected Boolean allowComments;
+ protected Boolean emailComments;
+ protected String emailFromAddress;
+ protected String emailAddress;
+ protected String editorTheme;
+ protected String locale;
+ protected String timezone;
+ protected String mDefaultPlugins;
+ protected Boolean isEnabled;
+ protected List permissions;
protected WeblogCategoryData bloggerCategory;
protected WeblogCategoryData defaultCategory;
- protected java.lang.String editorPage;
- protected java.lang.String ignoreWords;
- protected java.lang.Boolean allowComments;
- protected java.lang.Boolean emailComments;
- protected java.lang.String emailFromAddress;
- protected java.lang.String editorTheme;
- protected java.lang.String locale;
- protected java.lang.String timezone;
- protected java.lang.String mDefaultPlugins;
- protected java.lang.Boolean isEnabled;
protected UserData mUser = null;
@@ -46,24 +51,26 @@
{
}
- public WebsiteData(final java.lang.String id,
- final java.lang.String name,
- final java.lang.String description,
+ public WebsiteData(final String id,
+ final String name,
+ final String handle,
+ final String description,
final UserData user,
- final java.lang.String defaultPageId,
- final java.lang.String weblogDayPageId,
- final java.lang.Boolean enableBloggerApi,
+ final String defaultPageId,
+ final String weblogDayPageId,
+ final Boolean enableBloggerApi,
final WeblogCategoryData bloggerCategory,
final WeblogCategoryData defaultCategory,
- final java.lang.String editorPage,
- final java.lang.String ignoreWords,
- final java.lang.Boolean allowComments,
- final java.lang.Boolean emailComments,
- final java.lang.String emailFromAddress,
- final java.lang.Boolean isEnabled)
+ final String editorPage,
+ final String ignoreWords,
+ final Boolean allowComments,
+ final Boolean emailComments,
+ final String emailFromAddress,
+ final Boolean isEnabled)
{
this.id = id;
this.name = name;
+ this.handle = handle;
this.description = description;
this.mUser = user;
this.defaultPageId = defaultPageId;
@@ -84,35 +91,73 @@
this.setData(otherData);
}
+ /**
+ * @hibernate.bag lazy="true" inverse="true" cascade="delete"
+ * @hibernate.collection-key column="website_id"
+ * @hibernate.collection-one-to-many
+ * class="org.roller.pojos.PermissionsData"
+ */
+ public List getPermissions()
+ {
+ return permissions;
+ }
+ public void setPermissions(List perms)
+ {
+ permissions = perms;
+ }
+ /**
+ * Remove permission from collection.
+ */
+ public void removePermission(PermissionsData perms)
+ {
+ permissions.remove(perms);
+ }
+
/**
* Id of the Website.
* @ejb:persistent-field
* @hibernate.id column="id" type="string"
* generator-class="uuid.hex" unsaved-value="null"
*/
- public java.lang.String getId()
+ public String getId()
{
return this.id;
}
/** @ejb:persistent-field */
- public void setId(java.lang.String id)
+ public void setId(String id)
{
this.id = id;
}
/**
+ * Short URL safe string that uniquely identifies the website.
+ * @ejb:persistent-field
+ * @hibernate.property column="name" non-null="true" unique="true"
+ */
+ public String getHandle()
+ {
+ return this.handle;
+ }
+
+ /** @ejb:persistent-field */
+ public void setHandle(String handle)
+ {
+ this.handle = handle;
+ }
+
+ /**
* Name of the Website.
* @ejb:persistent-field
* @hibernate.property column="name" non-null="true" unique="false"
*/
- public java.lang.String getName()
+ public String getName()
{
return this.name;
}
/** @ejb:persistent-field */
- public void setName(java.lang.String name)
+ public void setName(String name)
{
this.name = name;
}
@@ -122,13 +167,13 @@
* @ejb:persistent-field
* @hibernate.property column="description" non-null="true" unique="false"
*/
- public java.lang.String getDescription()
+ public String getDescription()
{
return this.description;
}
/** @ejb:persistent-field */
- public void setDescription(java.lang.String description)
+ public void setDescription(String description)
{
this.description = description;
}
@@ -138,13 +183,13 @@
* @ejb:persistent-field
* @hibernate.many-to-one column="userid" cascade="none" not-null="true"
*/
- public org.roller.pojos.UserData getUser()
+ public org.roller.pojos.UserData getCreator()
{
return mUser;
}
/** @ejb:persistent-field */
- public void setUser( org.roller.pojos.UserData ud )
+ public void setCreator( org.roller.pojos.UserData ud )
{
mUser = ud;
}
@@ -153,7 +198,7 @@
* @ejb:persistent-field
* @hibernate.property column="defaultpageid" non-null="true" unique="false"
*/
- public java.lang.String getDefaultPageId()
+ public String getDefaultPageId()
{
return this.defaultPageId;
}
@@ -161,7 +206,7 @@
/**
* @ejb:persistent-field
*/
- public void setDefaultPageId(java.lang.String defaultPageId)
+ public void setDefaultPageId(String defaultPageId)
{
this.defaultPageId = defaultPageId;
}
@@ -171,7 +216,7 @@
* @ejb:persistent-field
* @hibernate.property column="weblogdayid" non-null="true" unique="false"
*/
- public java.lang.String getWeblogDayPageId()
+ public String getWeblogDayPageId()
{
return this.weblogDayPageId;
}
@@ -180,7 +225,7 @@
* @deprecated
* @ejb:persistent-field
*/
- public void setWeblogDayPageId(java.lang.String weblogDayPageId)
+ public void setWeblogDayPageId(String weblogDayPageId)
{
this.weblogDayPageId = weblogDayPageId;
}
@@ -189,13 +234,13 @@
* @ejb:persistent-field
* @hibernate.property column="enablebloggerapi" non-null="true" unique="false"
*/
- public java.lang.Boolean getEnableBloggerApi()
+ public Boolean getEnableBloggerApi()
{
return this.enableBloggerApi;
}
/** @ejb:persistent-field */
- public void setEnableBloggerApi(java.lang.Boolean enableBloggerApi)
+ public void setEnableBloggerApi(Boolean enableBloggerApi)
{
this.enableBloggerApi = enableBloggerApi;
}
@@ -240,13 +285,13 @@
* @ejb:persistent-field
* @hibernate.property column="editorpage" non-null="true" unique="false"
*/
- public java.lang.String getEditorPage()
+ public String getEditorPage()
{
return this.editorPage;
}
/** @ejb:persistent-field */
- public void setEditorPage(java.lang.String editorPage)
+ public void setEditorPage(String editorPage)
{
this.editorPage = editorPage;
}
@@ -255,13 +300,13 @@
* @ejb:persistent-field
* @hibernate.property column="ignorewords" non-null="true" unique="false"
*/
- public java.lang.String getIgnoreWords()
+ public String getIgnoreWords()
{
return this.ignoreWords;
}
/** @ejb:persistent-field */
- public void setIgnoreWords(java.lang.String ignoreWords)
+ public void setIgnoreWords(String ignoreWords)
{
this.ignoreWords = ignoreWords;
}
@@ -270,13 +315,13 @@
* @ejb:persistent-field
* @hibernate.property column="allowcomments" non-null="true" unique="false"
*/
- public java.lang.Boolean getAllowComments()
+ public Boolean getAllowComments()
{
return this.allowComments;
}
/** @ejb:persistent-field */
- public void setAllowComments(java.lang.Boolean allowComments)
+ public void setAllowComments(Boolean allowComments)
{
this.allowComments = allowComments;
}
@@ -285,13 +330,13 @@
* @ejb:persistent-field
* @hibernate.property column="emailcomments" non-null="true" unique="false"
*/
- public java.lang.Boolean getEmailComments()
+ public Boolean getEmailComments()
{
return this.emailComments;
}
/** @ejb:persistent-field */
- public void setEmailComments(java.lang.Boolean emailComments)
+ public void setEmailComments(Boolean emailComments)
{
this.emailComments = emailComments;
}
@@ -300,29 +345,44 @@
* @ejb:persistent-field
* @hibernate.property column="emailfromaddress" non-null="true" unique="false"
*/
- public java.lang.String getEmailFromAddress()
+ public String getEmailFromAddress()
{
return this.emailFromAddress;
}
/** @ejb:persistent-field */
- public void setEmailFromAddress(java.lang.String emailFromAddress)
+ public void setEmailFromAddress(String emailFromAddress)
{
this.emailFromAddress = emailFromAddress;
}
/**
+ * @ejb:persistent-field
+ * @hibernate.property column="emailfromaddress" non-null="true" unique="false"
+ */
+ public String getEmailAddress()
+ {
+ return this.emailAddress;
+ }
+
+ /** @ejb:persistent-field */
+ public void setEmailAddress(String emailFromAddress)
+ {
+ this.emailAddress = emailAddress;
+ }
+
+ /**
* EditorTheme of the Website.
* @ejb:persistent-field
* @hibernate.property column="editortheme" non-null="true" unique="false"
*/
- public java.lang.String getEditorTheme()
+ public String getEditorTheme()
{
return this.editorTheme;
}
/** @ejb:persistent-field */
- public void setEditorTheme(java.lang.String editorTheme)
+ public void setEditorTheme(String editorTheme)
{
this.editorTheme = editorTheme;
}
@@ -332,13 +392,13 @@
* @ejb:persistent-field
* @hibernate.property column="locale" non-null="true" unique="false"
*/
- public java.lang.String getLocale()
+ public String getLocale()
{
return this.locale;
}
/** @ejb:persistent-field */
- public void setLocale(java.lang.String locale)
+ public void setLocale(String locale)
{
this.locale = locale;
}
@@ -348,13 +408,13 @@
* @ejb:persistent-field
* @hibernate.property column="timezone" non-null="true" unique="false"
*/
- public java.lang.String getTimezone()
+ public String getTimezone()
{
return this.timezone;
}
/** @ejb:persistent-field */
- public void setTimezone(java.lang.String timezone)
+ public void setTimezone(String timezone)
{
this.timezone = timezone;
}
@@ -364,13 +424,13 @@
* @ejb:persistent-field
* @hibernate.property column="defaultplugins" non-null="false" unique="false"
*/
- public java.lang.String getDefaultPlugins()
+ public String getDefaultPlugins()
{
return mDefaultPlugins;
}
/** @ejb:persistent-field */
- public void setDefaultPlugins(java.lang.String string)
+ public void setDefaultPlugins(String string)
{
mDefaultPlugins = string;
}
@@ -379,13 +439,13 @@
* @ejb:persistent-field
* @hibernate.property column="isenabled" non-null="true" unique="false"
*/
- public java.lang.Boolean getIsEnabled()
+ public Boolean getIsEnabled()
{
return this.isEnabled;
}
/** @ejb:persistent-field */
- public void setIsEnabled(java.lang.Boolean isEnabled)
+ public void setIsEnabled(Boolean isEnabled)
{
this.isEnabled = isEnabled;
}
@@ -500,6 +560,7 @@
this.id = other.id;
this.name = other.name;
+ this.handle = other.handle;
this.description = other.description;
this.mUser = other.mUser;
this.defaultPageId = other.defaultPageId;
@@ -588,11 +649,38 @@
{
return true;
}
- if (roller.getUser().equals(getUser()))
+ if (hasUserPermissions(roller.getUser(),
+ (short)(PermissionsData.ADMIN|PermissionsData.AUTHOR)))
{
return true;
}
return false;
}
-}
\ No newline at end of file
+ /**
+ * Returns true if user has all permissions specified by mask.
+ */
+ public boolean hasUserPermissions(UserData user, short mask)
+ {
+ PermissionsData userPerms = null;
+ Iterator iter = getPermissions().iterator();
+ while (iter.hasNext())
+ {
+ PermissionsData perms = (PermissionsData) iter.next();
+ if (perms.getUser().getId().equals(user.getId()))
+ {
+ userPerms = perms;
+ break;
+ }
+ }
+ if (!userPerms.isPending())
+ {
+ if (userPerms != null && (userPerms.getPermissionMask() & mask) > 0)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+}
+
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/BasePageModel.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/BasePageModel.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/BasePageModel.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/BasePageModel.java Thu Jun 23 21:31:43 2005
@@ -60,11 +60,6 @@
return "MMM dd, yyyy";
}
- public UserData getUser()
- {
- return RollerRequest.getRollerRequest(request).getUser();
- }
-
/**
* @return Returns the mapping.
*/
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/LanguageUtil.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/LanguageUtil.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/LanguageUtil.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/LanguageUtil.java Thu Jun 23 21:31:43 2005
@@ -126,13 +126,17 @@
mLogger.debug("getViewLocale()");
Locale viewLocale = null;
- // if user is logged in and the user looking at his own website, take website-locale
- if (isWebsiteOfPrincipal(request))
- {
- viewLocale = getDefaultLocale(request);
- mLogger.debug("websiteLocale = "+viewLocale);
- }
- else if (request.getSession(false) != null)
+ // if user is logged in and the user looking at his own website,
+ // take website-locale user's don;t have locales, websites do and a user
+ // can belong to multiple websites, each with a different locale.
+ // So this check no longer makes sense.
+ //if (isWebsiteOfPrincipal(request))
+ //{
+ //viewLocale = getDefaultLocale(request);
+ //mLogger.debug("websiteLocale = "+viewLocale);
+ //}
+
+ if (request.getSession(false) != null)
{
// check session for existing Locale
viewLocale = (Locale) request.getSession().getAttribute(Globals.LOCALE_KEY);
@@ -209,18 +213,18 @@
* @param request
* @return
*/
- public static boolean isWebsiteOfPrincipal(HttpServletRequest request) {
- boolean result = false;
- RollerRequest rreq = RollerRequest.getRollerRequest(request);
- if (rreq != null) {
- WebsiteData website = rreq.getWebsite();
- Principal principal = request.getUserPrincipal();
- if (website != null && principal != null) {
- return website.getUser().getUserName().equals(principal.getName());
- }
- }
- return result;
- }
+// public static boolean isWebsiteOfPrincipal(HttpServletRequest request) {
+// boolean result = false;
+// RollerRequest rreq = RollerRequest.getRollerRequest(request);
+// if (rreq != null) {
+// WebsiteData website = rreq.getWebsite();
+// Principal principal = request.getUserPrincipal();
+// if (website != null && principal != null) {
+// return website.getUser().getUserName().equals(principal.getName());
+// }
+// }
+// return result;
+// }
/**
* Helper method to convert a language string to a <code>Locale</code> object.
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerContext.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerContext.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerContext.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerContext.java Thu Jun 23 21:31:43 2005
@@ -28,7 +28,9 @@
import org.apache.commons.logging.LogFactory;
import org.apache.struts.util.RequestUtils;
import org.roller.RollerException;
+import org.roller.config.PingConfig;
import org.roller.config.RollerConfig;
+import org.roller.config.RollerRuntimeConfig;
import org.roller.model.RefererManager;
import org.roller.model.Roller;
import org.roller.model.RollerFactory;
@@ -36,18 +38,17 @@
import org.roller.model.ScheduledTask;
import org.roller.pojos.UserData;
import org.roller.pojos.WeblogEntryData;
+import org.roller.pojos.WebsiteData;
+import org.roller.presentation.pings.PingQueueTask;
import org.roller.presentation.velocity.CommentAuthenticator;
import org.roller.presentation.velocity.ContextLoader;
import org.roller.presentation.velocity.DefaultCommentAuthenticator;
import org.roller.presentation.website.ThemeCache;
-import org.roller.presentation.pings.PingQueueTask;
import org.roller.util.DateUtil;
import org.roller.util.StringUtils;
import org.roller.util.Utilities;
import EDU.oswego.cs.dl.util.concurrent.SynchronizedInt;
-import org.roller.config.RollerRuntimeConfig;
-import org.roller.config.PingConfig;
//////////////////////////////////////////////////////////////////////////////
/**
@@ -630,12 +631,12 @@
/**
* Returns the full url for the website of the specified username.
*/
- public String getContextUrl(HttpServletRequest request, String username)
+ public String getContextUrl(HttpServletRequest request, WebsiteData website)
{
String url = this.getContextUrl(request);
- if (username != null)
+ if (website != null)
{
- url = url + "/page/" + username;
+ url = url + "/page/" + website.getHandle();
}
return url;
}
@@ -712,13 +713,11 @@
String dayString = DateUtil.format8chars(entry.getPubTime());
- UserData ud = entry.getWebsite().getUser();
-
link =
Utilities.escapeHTML(
baseUrl
+ "/page/"
- + ud.getUserName()
+ + entry.getWebsite().getHandle()
+ "/"
+ dayString
+ "#"
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerRequest.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerRequest.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerRequest.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerRequest.java Thu Jun 23 21:31:43 2005
@@ -23,11 +23,11 @@
import org.roller.pojos.BookmarkData;
import org.roller.pojos.FolderData;
import org.roller.pojos.PageData;
+import org.roller.pojos.PermissionsData;
import org.roller.pojos.UserData;
import org.roller.pojos.WeblogCategoryData;
import org.roller.pojos.WeblogEntryData;
import org.roller.pojos.WebsiteData;
-import org.roller.pojos.PingTargetData;
import org.roller.util.DateUtil;
import org.roller.util.Utilities;
@@ -77,6 +77,7 @@
public static final String ANCHOR_KEY = "anchor";
public static final String USERNAME_KEY = "username";
+ public static final String WEBSITEHANDLE_KEY = "blog";
public static final String WEBSITEID_KEY = "websiteid";
public static final String FOLDERID_KEY = "folderid";
public static final String PARENTID_KEY = "parentid";
@@ -96,7 +97,7 @@
public static final String WEBLOGCOMMENTID_KEY = "catid";
public static final String LOGIN_COOKIE = "sessionId";
- public static final String OWNING_USER = "OWNING_USER";
+ public static final String OWNING_WEBSITE = "OWNING_WEBSITE";
private static final String ROLLER_REQUEST = "roller_request";
@@ -113,7 +114,6 @@
init();
}
- //------------------------------------------------------------------------
/** Convenience */
public RollerRequest( ServletRequest req, ServletContext ctx )
throws RollerException
@@ -123,7 +123,6 @@
init();
}
- //------------------------------------------------------------------------
public RollerRequest( PageContext pCtx) throws RollerException
{
mRequest = (HttpServletRequest) pCtx.getRequest();
@@ -132,7 +131,6 @@
init();
}
- //------------------------------------------------------------------------
private void init() throws RollerException
{
mRollerRequestTLS.set(this);
@@ -171,6 +169,17 @@
parseRequestParams();
}
+ public String toString()
+ {
+ StringBuffer sb = new StringBuffer();
+ sb.append("[");
+ sb.append(getRequestURL());
+ sb.append(", ");
+ sb.append(getRefererURL());
+ sb.append("]");
+ return sb.toString();
+ }
+
//------------------------------------------------------------------------
/**
* Bind persistence session to specific user.
@@ -195,7 +204,7 @@
// /username/pagelink/anchor (specific entry)
// /username/pagelink/datestring/anchor (specific entry)
UserManager userMgr = getRoller().getUserManager();
- mWebsite = userMgr.getWebsite(pathInfo[0]);
+ mWebsite = userMgr.getWebsiteByHandle(pathInfo[0]);
if (mWebsite != null)
{
if ( pathInfo.length == 1 )
@@ -301,11 +310,6 @@
userName = mRequest.getRemoteUser();
}
- if ( userName != null )
- {
- mWebsite = userMgr.getWebsite(userName);
- }
-
// Look for page ID in request params
String pageId = mRequest.getParameter(RollerRequest.PAGEID_KEY);
if ( pageId != null )
@@ -452,91 +456,14 @@
return RollerContext.getRoller( mRequest );
}
- //------------------------------------------------------------------------
- /** Is mRequest's user the admin user? */
- public boolean isAdminUser() throws RollerException
- {
- UserData user = getUser();
- if (user != null && user.hasRole("admin"))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- //------------------------------------------------------------------------
- /** Is mRequest's user authorized to edit the mRequested resource */
- public boolean isUserAuthorizedToEdit() throws RollerException
- {
- // Make sure authenticated user is the owner of this item
- // Session's principal's name must match user name in mRequest
-
- RollerContext rctx = RollerContext.getRollerContext(mContext);
- Authenticator auth = rctx.getAuthenticator();
-
- String userName = auth.getAuthenticatedUserName(mRequest);
-
- // TODO: A hack to be replaced by Object.canEdit()
- UserData owningUser = null;
- if (mRequest.getAttribute(OWNING_USER) != null)
- {
- owningUser = (UserData)mRequest.getAttribute(OWNING_USER);
- }
- else
- {
- owningUser = getUser();
- }
-
- if ( userName != null
- && owningUser != null
- && userName.equalsIgnoreCase( owningUser.getUserName() )
- && auth.isAuthenticatedUserInRole(mRequest,"editor"))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- //------------------------------------------------------------------------
- /**
- * Get user by name.
- */
- public UserData getUser( String userName ) throws Exception
- {
- return getRoller().getUserManager().getUser(userName);
- }
-
- //------------------------------------------------------------------------
+ //-----------------------------------------------------------------------------
public boolean isDateSpecified()
{
return mIsDateSpecified;
}
-
- //------------------------------------------------------------------------
-
- public int getWeblogEntryCount()
- {
- // Get count of entries to return, or 20 if null
- int count = 20;
- if ( mRequest.getParameter("count") != null )
- {
- count= Utilities.stringToInt(mRequest.getParameter("count"));
- if ( count==0 || count>50 )
- {
- count = 20;
- }
- }
- return count;
- }
-
- //------------------------------------------------------------------------
+
+ //--------------------------------------------------- Date specified by request
/**
* Gets the date specified by the request, or null.
@@ -547,7 +474,6 @@
return getDate(false);
}
- //------------------------------------------------------------------------
/**
* Gets the date specified by the request
* @param orToday If no date specified, then use today's date.
@@ -584,7 +510,6 @@
return todayCal.getTime();
}
- //------------------------------------------------------------------------
/**
* Gets the YYYYMMDD date string specified by the request, or null.
* @return String
@@ -594,7 +519,6 @@
return getDateString(false);
}
- //------------------------------------------------------------------------
/**
* Gets the date specified by the request
* @param orToday If no date specified, then use today's date.
@@ -642,6 +566,21 @@
return mPageLink;
}
+ public int getWeblogEntryCount()
+ {
+ // Get count of entries to return, or 20 if null
+ int count = 20;
+ if ( mRequest.getParameter("count") != null )
+ {
+ count= Utilities.stringToInt(mRequest.getParameter("count"));
+ if ( count==0 || count>50 )
+ {
+ count = 20;
+ }
+ }
+ return count;
+ }
+
//------------------------------------------------------------------------
/**
* Gets the BookmarkData specified by the request, or null.
@@ -789,18 +728,10 @@
}
/**
- * Gets the UserData specified by the request, or null.
- * @return UserData
- */
- public UserData getUser()
- {
- if (mWebsite != null) return mWebsite.getUser();
- return null;
- }
-
- /**
- * Gets the WebsiteData specified by the request, or null.
- * @return WeblogCategory
+ * Gets the WebsiteData specified in the path info of the request URI, this is
+ * NOT the same thing as the "current website" (i.e. the one that the session's
+ * authenticated user is currently editing).
+ * @return WebsiteData object specified by request URI.
*/
public WebsiteData getWebsite()
{
@@ -810,7 +741,7 @@
{
mWebsite = wd;
}
-
+
/**
* Gets the WeblogEntryData specified by the request, or null.
*
@@ -858,7 +789,6 @@
catch (RollerException e)
{
mLogger.error("EXCEPTION getting weblog entry",e);
- mLogger.error("user=" + mWebsite.getUser());
mLogger.error("anchor=" + anchor);
mLogger.error("entryid=" + entryid);
}
@@ -866,7 +796,7 @@
return mWeblogEntry;
}
- //------------------------------------------------------------------------
+ //-----------------------------------------------------------------------------
/** Get attribute from mRequest, and if that fails try session */
private String getFromRequest( String key )
@@ -883,8 +813,6 @@
return ret;
}
- //------------------------------------------------------------------------
-
private Date parseDate( String dateString )
{
Date ret = null;
@@ -905,27 +833,57 @@
return ret;
}
- //------------------------------------------------------------------------
+ /**
+ * @see org.roller.pojos.ParsedRequest#isLinkbackEnabled()
+ */
+ public boolean isEnableLinkback()
+ {
+ return RollerRuntimeConfig.getBooleanProperty("site.linkbacks.enabled");
+ }
- public String toString()
+ //-------------------------------------------- Authentication and authorization
+
+ /**
+ * Get the current website from the Roller session, or null if none exists.
+ */
+ public WebsiteData getCurrentWebsite()
{
- StringBuffer sb = new StringBuffer();
- sb.append("[");
- sb.append(getRequestURL());
- sb.append(", ");
- sb.append(getRefererURL());
- sb.append("]");
- return sb.toString();
+ RollerSession rollerSession = RollerSession.getRollerSession(mRequest);
+ if (rollerSession != null) return rollerSession.getCurrentWebsite();
+ return null;
}
- //------------------------------------------------------------------------
+ /**
+ * Gets the UserData specified by the request, or null if none exists.
+ * @return UserData
+ */
+ public UserData getAuthenticatedUser()
+ {
+ RollerSession rollerSession = RollerSession.getRollerSession(mRequest);
+ if (rollerSession != null) return rollerSession.getAuthenticatedUser();
+ return null;
+ }
/**
- * @see org.roller.pojos.ParsedRequest#isLinkbackEnabled()
+ * Does user have the admin role (aka global superuser)
*/
- public boolean isEnableLinkback()
+ public boolean isAdminUser() throws RollerException
{
- return RollerRuntimeConfig.getBooleanProperty("site.linkbacks.enabled");
+ UserData user = getAuthenticatedUser();
+ if (user != null && user.hasRole("admin")) return true;
+ return false;
+ }
+
+ /**
+ * Is user authorized to edit objects in the current website.
+ */
+ public boolean isUserAuthorizedToEdit() throws RollerException
+ {
+ RollerSession rollerSession = RollerSession.getRollerSession(mRequest);
+ UserData user = rollerSession.getAuthenticatedUser();
+ WebsiteData website = rollerSession.getCurrentWebsite();
+ return website.hasUserPermissions(user,
+ (short)(PermissionsData.AUTHOR | PermissionsData.ADMIN));
}
}
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerSession.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerSession.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerSession.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/RollerSession.java Thu Jun 23 21:31:43 2005
@@ -1,15 +1,22 @@
package org.roller.presentation;
-import org.apache.commons.collections.ArrayStack;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.io.Serializable;
+import java.security.Principal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
-import java.io.Serializable;
+
+import org.apache.commons.collections.ArrayStack;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.roller.RollerException;
+import org.roller.model.RollerFactory;
+import org.roller.model.UserManager;
+import org.roller.pojos.UserData;
+import org.roller.pojos.WebsiteData;
//////////////////////////////////////////////////////////////////////////////
@@ -20,10 +27,11 @@
public class RollerSession
implements HttpSessionListener, HttpSessionActivationListener, Serializable
{
- // Although we have no actual members, we implement Serializable to meet expectations of
- // session attributes for some container configurations.
static final long serialVersionUID = 5890132909166913727L;
+ private UserData authenticatedUser = null;
+ private WebsiteData currentWebsite = null;
+
private static Log mLogger =
LogFactory.getFactory().getInstance(RollerSession.class);
@@ -32,16 +40,43 @@
public static final String ERROR_MESSAGE = "rollererror_message";
public static final String STATUS_MESSAGE = "rollerstatus_message";
-
+ /**
+ * Get RollerSession from request (and add user if not already present).
+ */
+ public static RollerSession getRollerSession(HttpServletRequest request)
+ {
+ RollerSession rollerSession = null;
+ HttpSession session = request.getSession(false);
+ if (session != null)
+ {
+ rollerSession = (RollerSession)session.getAttribute(ROLLER_SESSION);
+ Principal principal = request.getUserPrincipal();
+ if (rollerSession.getAuthenticatedUser() == null && principal != null)
+ {
+ try
+ {
+ UserManager umgr = RollerFactory.getRoller().getUserManager();
+ UserData user = umgr.getUser(principal.getName());
+ rollerSession.setAuthenticatedUser(user);
+ }
+ catch (RollerException e)
+ {
+ mLogger.error("ERROR: getting user object");
+ }
+ }
+ }
+ return rollerSession;
+ }
+
//------------------------------------------------------------------------
/** Create session's Roller instance */
public void sessionCreated(HttpSessionEvent se)
{
// put this in session, so that we get HttpSessionActivationListener callbacks
- se.getSession().setAttribute( ROLLER_SESSION, this );
+ se.getSession().setAttribute(ROLLER_SESSION, this);
RollerContext rctx = RollerContext.getRollerContext(
- se.getSession().getServletContext());
+ se.getSession().getServletContext());
rctx.sessionCreated(se);
}
@@ -141,6 +176,35 @@
mLogger.debug("EXCEPTION PURGING session attributes",e);
}
}
+ }
+
+ /**
+ * Authenticated user associated with this session.
+ */
+ public UserData getAuthenticatedUser()
+ {
+ return authenticatedUser;
+ }
+ /**
+ * Authenticated user associated with this session.
+ */
+ public void setAuthenticatedUser(UserData authenticatedUser)
+ {
+ this.authenticatedUser = authenticatedUser;
+ }
+ /**
+ * Current website that user is working with.
+ */
+ public WebsiteData getCurrentWebsite()
+ {
+ return currentWebsite;
+ }
+ /**
+ * Current website that user is working with.
+ */
+ public void setCurrentWebsite(WebsiteData currentWebsite)
+ {
+ this.currentWebsite = currentWebsite;
}
}
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/atomapi/RollerAtomHandler.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/atomapi/RollerAtomHandler.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/atomapi/RollerAtomHandler.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/atomapi/RollerAtomHandler.java Thu Jun 23 21:31:43 2005
@@ -109,7 +109,6 @@
// TODO: decide what to do about authentication, is WSSE going to fly?
mUsername = authenticateWSSE(request);
- //mUsername = authenticateBASIC(request);
if (mUsername != null)
{
@@ -235,9 +234,9 @@
String[] pathInfo, Date start, Date end, int offset)
throws Exception
{
- String username = pathInfo[0];
+ String handle = pathInfo[0];
String absUrl = mRollerContext.getAbsoluteContextUrl(mRequest);
- WebsiteData website = mRoller.getUserManager().getWebsite(username);
+ WebsiteData website = mRoller.getUserManager().getWebsiteByHandle(handle);
List entries = null;
if (canView(website))
{
@@ -295,7 +294,7 @@
member.setTitle(rollerEntry.getDisplayTitle());
member.setUpdated(rollerEntry.getUpdateTime());
member.setHref(absUrl
- + "/atom/" + username + "/entry/" + rollerEntry.getId());
+ + "/atom/" + handle + "/entry/" + rollerEntry.getId());
col.addMember(member);
}
return col;
@@ -309,9 +308,9 @@
public AtomCollection getCollectionOfResources(
String[] pathInfo, Date start, Date end, int offset) throws Exception
{
- String username = pathInfo[0];
+ String handle = pathInfo[0];
String absUrl = mRollerContext.getAbsoluteContextUrl(mRequest);
- WebsiteData website = mRoller.getUserManager().getWebsite(username);
+ WebsiteData website = mRoller.getUserManager().getWebsiteByHandle(handle);
FileManager fmgr = mRoller.getFileManager();
File[] files = fmgr.getFiles(website);
if (canView(website))
@@ -323,7 +322,7 @@
member.setTitle(files[i].getName());
member.setUpdated(new Date(files[i].lastModified()));
member.setHref(absUrl
- + "/atom/" + username + "/resource/" + files[i].getName() );
+ + "/atom/" + website.getHandle() + "/resource/" + files[i].getName() );
col.addMember(member);
}
return col;
@@ -337,9 +336,9 @@
public AtomCollection getCollectionOfCategories(
String[] pathInfo, Date start, Date end, int offset) throws Exception
{
- String username = pathInfo[0];
+ String handle = pathInfo[0];
String absUrl = mRollerContext.getAbsoluteContextUrl(mRequest);
- WebsiteData website = mRoller.getUserManager().getWebsite(username);
+ WebsiteData website = mRoller.getUserManager().getWebsiteByHandle(handle);
WeblogManager wmgr = mRoller.getWeblogManager();
List items = wmgr.getWeblogCategories(website);
if (canView(website))
@@ -354,7 +353,7 @@
member.setTitle(item.getPath());
member.setUpdated(now);
member.setHref(
- absUrl + "/atom/" + username + "/category/" + item.getId());
+ absUrl + "/atom/" + website.getHandle() + "/category/" + item.getId());
col.addMember(member);
}
return col;
@@ -370,8 +369,8 @@
public Entry postEntry(String[] pathInfo, Entry entry) throws Exception
{
// authenticated client posted a weblog entry
- String username = pathInfo[0];
- WebsiteData website = mRoller.getUserManager().getWebsite(username);
+ String handle = pathInfo[0];
+ WebsiteData website = mRoller.getUserManager().getWebsiteByHandle(handle);
if (canEdit(website))
{
// Save it and commit it
@@ -470,8 +469,8 @@
throws Exception
{
// authenticated client posted a weblog entry
- String username = pathInfo[0];
- WebsiteData website = mRoller.getUserManager().getWebsite(username);
+ String handle = pathInfo[0];
+ WebsiteData website = mRoller.getUserManager().getWebsiteByHandle(handle);
if (canEdit(website) && pathInfo.length > 1)
{
try
@@ -501,7 +500,7 @@
// TODO: build URL to uploaded file should be done in FileManager
String uploadPath = RollerContext.getUploadPath(
mRequest.getSession(true).getServletContext());
- uploadPath += "/" + website.getUser().getUserName() + "/" + name;
+ uploadPath += "/" + website.getHandle() + "/" + name;
return RequestUtils.printableURL(
RequestUtils.absoluteURL(mRequest, uploadPath));
}
@@ -551,8 +550,8 @@
public void deleteResource(String[] pathInfo) throws Exception
{
// authenticated client posted a weblog entry
- String username = pathInfo[0];
- WebsiteData website = mRoller.getUserManager().getWebsite(username);
+ String handle = pathInfo[0];
+ WebsiteData website = mRoller.getUserManager().getWebsiteByHandle(handle);
if (canEdit(website) && pathInfo.length > 1)
{
try
@@ -653,7 +652,15 @@
*/
private boolean canEdit(WeblogEntryData entry)
{
- return entry.getWebsite().getUser().getUserName().equals(mUsername);
+ try
+ {
+ return entry.canSave();
+ }
+ catch (Exception e)
+ {
+ mLogger.error("ERROR: checking website.canSave()");
+ }
+ return false;
}
/**
@@ -661,7 +668,15 @@
*/
private boolean canEdit(WebsiteData website)
{
- return website.getUser().getUserName().equals(mUsername);
+ try
+ {
+ return website.canSave();
+ }
+ catch (Exception e)
+ {
+ mLogger.error("ERROR: checking website.canSave()");
+ }
+ return false;
}
/**
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/filters/IfModifiedFilter.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/filters/IfModifiedFilter.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/filters/IfModifiedFilter.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/filters/IfModifiedFilter.java Thu Jun 23 21:31:43 2005
@@ -3,17 +3,6 @@
*/
package org.roller.presentation.filters;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.roller.RollerException;
-import org.roller.model.Roller;
-import org.roller.model.WeblogManager;
-import org.roller.pojos.UserData;
-import org.roller.presentation.RollerContext;
-import org.roller.presentation.RollerRequest;
-import org.roller.util.LRUCache2;
-
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -26,7 +15,19 @@
import javax.servlet.ServletResponse;
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.roller.RollerException;
import org.roller.config.RollerConfig;
+import org.roller.model.Roller;
+import org.roller.model.UserManager;
+import org.roller.model.WeblogManager;
+import org.roller.pojos.WebsiteData;
+import org.roller.presentation.RollerContext;
+import org.roller.presentation.RollerRequest;
+import org.roller.util.LRUCache2;
/**
* Entry point filter for Newsfeed Servlets, this filter
@@ -172,14 +173,14 @@
public static Date getLastPublishedDate(HttpServletRequest request)
throws RollerException
{
- // Get user name without using heavy RollerRequest URL parser
- String userName = null;
+ // Get website handle without using heavy RollerRequest URL parser
+ String handle = null;
String pathInfo = request.getPathInfo();
pathInfo = pathInfo != null ? pathInfo : "";
String[] pathInfoArray = StringUtils.split(pathInfo, "/");
if (pathInfoArray.length == 1)
{
- userName = pathInfoArray[0];
+ handle = pathInfoArray[0];
}
else if (pathInfoArray.length > 1)
{
@@ -194,7 +195,7 @@
// update times are cached to reduce database queries per request
StringBuffer sb = new StringBuffer();
sb.append("zzz_");
- sb.append(userName);
+ sb.append(handle);
sb.append("_zzz_");
sb.append(catname);
String key = sb.toString();
@@ -204,19 +205,22 @@
{
mLogger.debug("Hitting database for update time: "+key);
Roller roller = RollerContext.getRoller(request);
+ UserManager umgr = roller.getUserManager();
WeblogManager wmgr = roller.getWeblogManager();
- updateTime = wmgr.getWeblogLastPublishTime(userName, catname);
+
+ updateTime = wmgr.getWeblogLastPublishTime(
+ umgr.getWebsiteByHandle(handle), catname);
getCache().put(key, updateTime);
}
return updateTime;
}
- public static void purgeDateCache(UserData user)
+ public static void purgeDateCache(WebsiteData website)
{
- String userName = (user != null) ? user.getUserName() : null;
+ String handle = (website != null) ? website.getHandle() : null;
StringBuffer sb = new StringBuffer();
sb.append("zzz_");
- sb.append(userName);
+ sb.append(handle);
sb.append("_zzz_");
getCache().purge(new String[] {sb.toString()});
}
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/filters/RefererFilter.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/filters/RefererFilter.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/filters/RefererFilter.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/filters/RefererFilter.java Thu Jun 23 21:31:43 2005
@@ -55,13 +55,13 @@
RollerContext rctx = RollerContext.getRollerContext(
mFilterConfig.getServletContext());
- if ( rreq.getUser() != null )
+ if ( rreq.getWebsite() != null )
{
- String userName = rreq.getUser().getUserName();
+ String handle = rreq.getWebsite().getHandle();
// Base page URLs, with and without www.
String basePageUrlWWW =
- rctx.getAbsoluteContextUrl(request)+"/page/"+userName;
+ rctx.getAbsoluteContextUrl(request)+"/page/"+handle;
String basePageUrl = basePageUrlWWW;
if ( basePageUrlWWW.startsWith("http://www.") )
{
@@ -71,7 +71,7 @@
// Base comment URLs, with and without www.
String baseCommentsUrlWWW =
- rctx.getAbsoluteContextUrl(request)+"/comments/"+userName;
+ rctx.getAbsoluteContextUrl(request)+"/comments/"+handle;
String baseCommentsUrl = baseCommentsUrlWWW;
if ( baseCommentsUrlWWW.startsWith("http://www.") )
{
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/FilterHandler.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/FilterHandler.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/FilterHandler.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/FilterHandler.java Thu Jun 23 21:31:43 2005
@@ -1,7 +1,5 @@
package org.roller.presentation.pagecache;
-import org.roller.pojos.UserData;
-
import java.io.IOException;
import javax.servlet.FilterChain;
@@ -10,6 +8,8 @@
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
+import org.roller.pojos.WebsiteData;
+
public interface FilterHandler
{
/**
@@ -33,5 +33,5 @@
* Remove the entries for this User
* from the cache.
*/
- public void removeFromCache(HttpServletRequest req,UserData user);
+ public void removeFromCache(HttpServletRequest req, WebsiteData website);
}
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/PageCacheFilter.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/PageCacheFilter.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/PageCacheFilter.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/PageCacheFilter.java Thu Jun 23 21:31:43 2005
@@ -14,7 +14,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.roller.pojos.UserData;
+import org.roller.pojos.WebsiteData;
import org.roller.presentation.filters.IfModifiedFilter;
import org.roller.presentation.pagecache.rollercache.LRUCacheHandler2;
@@ -99,14 +99,14 @@
//-----------------------------------------------------------------------
/** Remove from cache for all handlers of this class */
- public static void removeFromCache(HttpServletRequest req, UserData user)
+ public static void removeFromCache(HttpServletRequest req, WebsiteData website)
{
Iterator iter = mHandlers.iterator();
while (iter.hasNext())
{
FilterHandler handler = (FilterHandler)iter.next();
- handler.removeFromCache(req, user);
+ handler.removeFromCache(req, website);
}
- IfModifiedFilter.purgeDateCache(user);
+ IfModifiedFilter.purgeDateCache(website);
}
}
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/rollercache/LRUCacheHandler.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/rollercache/LRUCacheHandler.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/rollercache/LRUCacheHandler.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/rollercache/LRUCacheHandler.java Thu Jun 23 21:31:43 2005
@@ -2,13 +2,6 @@
* Created on Jun 15, 2004
*/
package org.roller.presentation.pagecache.rollercache;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.roller.pojos.UserData;
-import org.roller.presentation.LanguageUtil;
-import org.roller.presentation.pagecache.FilterHandler;
-import org.roller.util.LRUCache;
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -28,7 +21,14 @@
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.roller.config.RollerConfig;
+import org.roller.pojos.WebsiteData;
+import org.roller.presentation.LanguageUtil;
+import org.roller.presentation.pagecache.FilterHandler;
+import org.roller.util.LRUCache;
/**
* Page cache implementation that uses a simple LRUCache. Can be configured
@@ -260,11 +260,12 @@
/**
* Purge user's entries from cache.
*/
- public synchronized void removeFromCache(HttpServletRequest req, UserData user)
+ public synchronized void removeFromCache(
+ HttpServletRequest req, WebsiteData website)
{
// TODO: can we make this a little more precise, perhaps via regex?
- String rssString = "/rss/" + user.getUserName(); // user's pages
- String pageString = "/page/" + user.getUserName(); // user's RSS feeds
+ String rssString = "/rss/" + website.getHandle(); // user's pages
+ String pageString = "/page/" + website.getHandle(); // user's RSS feeds
String mainRssString = "/rss_"; // main RSS feed
List purgeList = new ArrayList();
@@ -273,7 +274,8 @@
{
String key = (String) keys.next();
- if (key.indexOf(rssString)!=-1 || key.indexOf(pageString)!=-1 || key.indexOf(mainRssString)!=-1)
+ if (key.indexOf(rssString)!=-1
+ || key.indexOf(pageString)!=-1 || key.indexOf(mainRssString)!=-1)
{
purgeList.add(key);
}
@@ -291,8 +293,8 @@
StringBuffer sb = new StringBuffer();
sb.append("Purged, count=");
sb.append(purgeList.size());
- sb.append(", user=");
- sb.append(user.getUserName());
+ sb.append(", website=");
+ sb.append(website.getHandle());
mLogger.debug(sb.toString());
}
}
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/rollercache/LRUCacheHandler2.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/rollercache/LRUCacheHandler2.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/rollercache/LRUCacheHandler2.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/pagecache/rollercache/LRUCacheHandler2.java Thu Jun 23 21:31:43 2005
@@ -20,7 +20,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.roller.config.RollerConfig;
-import org.roller.pojos.UserData;
+import org.roller.pojos.WebsiteData;
import org.roller.presentation.LanguageUtil;
import org.roller.presentation.pagecache.FilterHandler;
import org.roller.util.LRUCache2;
@@ -220,11 +220,12 @@
/**
* Purge user's entries from cache.
*/
- public synchronized void removeFromCache(HttpServletRequest req, UserData user)
+ public synchronized void removeFromCache(
+ HttpServletRequest req, WebsiteData website)
{
// TODO: can we make this a little more precise, perhaps via regex?
- String rssString = "/rss/" + user.getUserName(); // user's pages
- String pageString = "/page/" + user.getUserName(); // user's RSS feeds
+ String rssString = "/rss/" + website.getHandle(); // user's pages
+ String pageString = "/page/" + website.getHandle(); // user's RSS feeds
String mainRssString = "/rss_"; // main RSS feed
String mainPageString = "/main.do"; // main page
String planetPageString = "/planet.do"; // planet page
@@ -245,8 +246,8 @@
StringBuffer sb = new StringBuffer();
sb.append("Purged, count=");
sb.append(beforeSize - afterSize);
- sb.append(", user=");
- sb.append(user.getUserName());
+ sb.append(", website=");
+ sb.append(website.getHandle());
mLogger.debug(sb.toString());
}
}
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/pings/WeblogUpdatePinger.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/pings/WeblogUpdatePinger.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/pings/WeblogUpdatePinger.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/pings/WeblogUpdatePinger.java Thu Jun 23 21:31:43 2005
@@ -98,7 +98,7 @@
{
// Figure out the url of the user's website.
String websiteUrl =
- RollerFactory.getRoller().getWeblogManager().getUrl(website.getUser(), absoluteContextUrl);
+ RollerFactory.getRoller().getWeblogManager().getUrl(website, absoluteContextUrl);
// Set up the ping parameters.
Vector params = new Vector();
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/planet/SyncWebsitesTask.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/planet/SyncWebsitesTask.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/planet/SyncWebsitesTask.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/planet/SyncWebsitesTask.java Thu Jun 23 21:31:43 2005
@@ -85,27 +85,26 @@
{
String baseFeedURL = baseURL + "/rss/";
String baseSiteURL = baseURL + "/page/";
- Iterator users = roller.getUserManager().getUsers().iterator();
- while (users.hasNext())
+ Iterator websites =
+ roller.getUserManager().getWebsites(null, null).iterator();
+ while (websites.hasNext())
{
- UserData user = (UserData) users.next();
+ WebsiteData website = (WebsiteData)websites.next();
StringBuffer sitesb = new StringBuffer();
sitesb.append(baseSiteURL);
- sitesb.append(user.getUserName());
+ sitesb.append(website.getHandle());
String siteUrl = sitesb.toString();
StringBuffer feedsb = new StringBuffer();
feedsb.append(baseFeedURL);
- feedsb.append(user.getUserName());
+ feedsb.append(website.getHandle());
String feedUrl = feedsb.toString();
liveUserFeeds.add(feedUrl);
PlanetSubscriptionData sub =
planet.getSubscription(feedUrl);
- WebsiteData website =
- userManager.getWebsite(user.getUserName());
if (sub == null)
{
logger.info("ADDING feed: "+feedUrl);
@@ -113,14 +112,12 @@
sub.setTitle(website.getName());
sub.setFeedUrl(feedUrl);
sub.setSiteUrl(siteUrl);
- sub.setAuthor(user.getUserName());
planet.saveSubscription(sub);
group.addSubscription(sub);
}
else
{
sub.setTitle(website.getName());
- sub.setAuthor(user.getUserName());
planet.saveSubscription(sub);
}
}
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/tags/menu/RollerMenuModel.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/tags/menu/RollerMenuModel.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/tags/menu/RollerMenuModel.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/tags/menu/RollerMenuModel.java Thu Jun 23 21:31:43 2005
@@ -165,7 +165,7 @@
RollerRequest rreq = RollerRequest.getRollerRequest(req);
try
{
- UserData user = rreq.getUser();
+ UserData user = rreq.getAuthenticatedUser();
String fid =
rreq.getFolder()==null ? null : rreq.getFolder().getId();
if ( user != null )
Modified: incubator/roller/branches/roller_2.0/src/org/roller/presentation/velocity/BasePageServlet.java
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_2.0/src/org/roller/presentation/velocity/BasePageServlet.java?rev=201564&r1=201563&r2=201564&view=diff
==============================================================================
--- incubator/roller/branches/roller_2.0/src/org/roller/presentation/velocity/BasePageServlet.java (original)
+++ incubator/roller/branches/roller_2.0/src/org/roller/presentation/velocity/BasePageServlet.java Thu Jun 23 21:31:43 2005
@@ -1 +1 @@
-package org.roller.presentation.velocity;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.PageContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.context.Context;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.servlet.VelocityServlet;
import org.roller.RollerException;
import org.roller.model.UserManager;
import org.roller.pojos.PageData;
import org.roller.pojos.UserData;
import org.roller.pojos.WebsiteData;
import org.roller.presentation.RollerRequest;
/**
* Base Servlet for Servlets that render user page templates. Loads the
* Velocity context using the ContextLoader and runs the page template
* selected by the request.
*
* @author llavandowska
* @author David M Johnson
*/
public abstract class BasePageServlet extends VelocityServlet
{
private static Log mLogger =
LogFactory.getFactory().getInstance(BasePageServlet.class);
/**
* <p>Sets servletContext for WebappResourceLoader.</p>
*
* @param config servlet configuation
*/
public void init( ServletConfig config )
throws ServletException
{
super.init( config );
WebappResourceLoader.setServletContext( getServletContext() );
}
public Template handleRequest( HttpServletRequest request,
HttpServletResponse response,
Context ctx ) throws Exception
{
String pid = null;
Template outty = null;
Exception pageException = null;
try
{
PageContext pageContext =
JspFactory.getDefaultFactory().getPageContext(
this, request, response,"", true, 8192, true);
// Needed to init request attributes, etc.
RollerRequest rreq = RollerRequest.getRollerRequest(pageContext);
UserManager userMgr = rreq.getRoller().getUserManager();
WebsiteData wd = null;
if (request.getAttribute(RollerRequest.OWNING_USER) != null) {
UserData user = (UserData)
request.getAttribute(RollerRequest.OWNING_USER);
wd = userMgr.getWebsite(user.getUserName());
}
else
{
wd = rreq.getWebsite();
}
// If request specified the page, then go with that
PageData pd = null;
if (rreq.getPage() != null // RollerRequest does too much guess work
&& request.getAttribute(RollerRequest.OWNING_USER) == null)
{
pd = rreq.getPage();
pid = pd.getId();
}
// If page not available from request, then use website's default
else if (wd != null)
{
pd = userMgr.retrievePage(wd.getDefaultPageId());
pid = pd.getId();
rreq.setPage(pd);
}
// Still no page ID, then we have a problem
if ( pid == null )
{
throw new ResourceNotFoundException("Page not found");
}
outty = prepareForPageExecution(ctx, rreq, response, pd);
}
catch( Exception e )
{
pageException = e;
response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
if (pageException != null)
{
mLogger.error("EXCEPTION: in RollerServlet", pageException);
request.setAttribute("DisplayException", pageException);
}
return outty;
}
//------------------------------------------------------------------------
/**
* Try to load user-specified Decorator (if specified). Failing that
* see if user has a _decorator Page, if not check for a _decorator
* in the Preview resource loader. Finally, if none of those can
* be found fall back to the no-op decorator.
* @param object
* @return
*/
private Template findDecorator(String decoratorName, UserManager userMgr, WebsiteData wd)
throws ResourceNotFoundException, ParseErrorException, RollerException, Exception
{
Template decorator = null;
PageData decoratorPage = null;
String decoratorId = null;
// check for user-specified decorator
if (decoratorName != null)
{
decoratorPage = userMgr.getPageByName(wd, decoratorName);
if (decoratorPage != null)
{
decoratorId = decoratorPage.getId();
}
}
// if no user-specified decorator try default page-name
if (decoratorPage == null)
{
decoratorPage = userMgr.getPageByName(wd, "_decorator");
if (decoratorPage != null)
{
decoratorId = decoratorPage.getId();
}
else
{
// could be in PreviewResourceLoader
decoratorId = "_decorator";
}
}
// try loading Template
if (decoratorId != null)
{
try
{
decorator = getTemplate(decoratorId, "UTF-8");
}
catch (Exception e)
{
// it may not exist, so this is okay
}
}
// couldn't find Template, load default "no-op" decorator
if (decorator == null)
{
decorator = getTemplate("/themes/noop_decorator.vm", "UTF-8");
}
return decorator;
}
/**
* Prepare for page execution be setting content type, populating context,
* and processing the page decorator if needed.
*/
protected Template prepareForPageExecution(Context ctx, RollerRequest rreq,
HttpServletResponse response, PageData pd) throws Exception
{
Template outty = null;
UserManager userMgr = rreq.getRoller().getUserManager();
WebsiteData wd = pd.getWebsite();
// if page has an extension - use that to set the contentType
String pageLink = pd.getLink();
String mimeType = getServletConfig().getServletContext().getMimeType(pageLink);
if(mimeType != null) {
// we found a match ... set the content type
response.setContentType(mimeType);
}
/* old way ... not as flexible -- Allen G
int period = pd.getLink().indexOf('.');
if (period > -1)
{
String extension = pd.getLink().substring(period+1);
if ("js".equals(extension))
{
extension = "javascript";
}
response.setContentType("text/" + extension);
}
*/
// Made it this far, populate the Context
ContextLoader.setupContext( ctx, rreq, response );
// Get the page
outty = getTemplate( pd.getId(), "UTF-8" );
/**
* User can define a Decorator Template.
*/
if (wd != null)
{
// parse/merge Page template
StringWriter sw = new StringWriter();
outty.merge(ctx, sw);
ctx.put("decorator_body", sw.toString());
// replace outty with decorator Template
outty = findDecorator((String)ctx.get("decorator"), userMgr, wd);
}
return outty;
}
//------------------------------------------------------------------------
/**
* Handle error in Velocity processing.
*/
protected void error( HttpServletRequest req, HttpServletResponse res,
Exception e) throws ServletException, IOException
{
mLogger.warn("ERROR in VelocityServlet",e);
}
/**
* Override to prevent Velocity from putting "req" and "res" into the context.
* Allowing users access to the underlying Servlet objects is a security risk.
* If need access to request parameters, use $requestParameters.
*/
protected Context createContext(
HttpServletRequest req,
HttpServletResponse res) {
VelocityContext context = new VelocityContext();
context.put(REQUEST, new RequestWrapper(req.getParameterMap()));
return context;
}
/** Provide access to request params only, not actual request */
public static class RequestWrapper
{
Map params = null;
public RequestWrapper(Map params)
{
this.params = params;
}
public String getParameter(String key)
{
String ret = null;
String[] array = (String[])params.get(key);
if (array != null && array.length > 0)
{
ret = array[0];
}
return ret;
}
}
}
\ No newline at end of file
+package org.roller.presentation.velocity;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.PageContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.context.Context;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.servlet.VelocityServlet;
import org.roller.RollerException;
import org.roller.model.UserManager;
import org.roller.pojos.PageData;
import org.roller.pojos.UserData;
import org.roller.pojos.WebsiteData;
import org.roller.presentation.RollerRequest;
/**
* Base Servlet for Servlets that render user page templates. Loads the
* Velocity context using the ContextLoader and runs the page template
* selected by the request.
*
* @author llavandowska
* @author David M Johnson
*/
public abstract class BasePageServlet extends VelocityServlet
{
private static Log mLogger =
LogFactory.getFactory().getInstance(BasePageServlet.class);
/**
* <p>Sets servletContext for WebappResourceLoader.</p>
*
* @param config servlet configuation
*/
public void init( ServletConfig config )
throws ServletException
{
super.init( config );
WebappResourceLoader.setServletContext( getServletContext() );
}
public Template handleRequest( HttpServletRequest request,
HttpServletResponse response,
Context ctx ) throws Exception
{
String pid = null;
Template outty = null;
Exception pageException = null;
try
{
PageContext pageContext =
JspFactory.getDefaultFactory().getPageContext(
this, request, response,"", true, 8192, true);
// Needed to init request attributes, etc.
RollerRequest rreq = RollerRequest.getRollerRequest(pageContext);
UserManager userMgr = rreq.getRoller().getUserManager();
WebsiteData wd = null;
if (request.getAttribute(RollerRequest.OWNING_WEBSITE) != null) {
wd = (WebsiteData)
request.getAttribute(RollerRequest.OWNING_WEBSITE);
}
else
{
wd = rreq.getWebsite();
}
// If request specified the page, then go with that
PageData pd = null;
if (rreq.getPage() != null // RollerRequest does too much guess work
&& request.getAttribute(RollerRequest.OWNING_WEBSITE) == null)
{
pd = rreq.getPage();
pid = pd.getId();
}
// If page not available from request, then use website's default
else if (wd != null)
{
pd = userMgr.retrievePage(wd.getDefaultPageId());
pid = pd.getId();
rreq.setPage(pd);
}
// Still no page ID, then we have a problem
if ( pid == null )
{
throw new ResourceNotFoundException("Page not found");
}
outty = prepareForPageExecution(ctx, rreq, response, pd);
}
catch( Exception e )
{
pageException = e;
response.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
if (pageException != null)
{
mLogger.error("EXCEPTION: in RollerServlet", pageException);
request.setAttribute("DisplayException", pageException);
}
return outty;
}
//------------------------------------------------------------------------
/**
* Try to load user-specified Decorator (if specified). Failing that
* see if user has a _decorator Page, if not check for a _decorator
* in the Preview resource loader. Finally, if none of those can
* be found fall back to the no-op decorator.
* @param object
* @return
*/
private Template findDecorator(String decoratorName, UserManager userMgr, WebsiteData wd)
throws ResourceNotFoundException, ParseErrorException, RollerException, Exception
{
Template decorator = null;
PageData decoratorPage = null;
String decoratorId = null;
// check for user-specified decorator
if (decoratorName != null)
{
decoratorPage = userMgr.getPageByName(wd, decoratorName);
if (decoratorPage != null)
{
decoratorId = decoratorPage.getId();
}
}
// if no user-specified decorator try default page-name
if (decoratorPage == null)
{
decoratorPage = userMgr.getPageByName(wd, "_decorator");
if (decoratorPage != null)
{
decoratorId = decoratorPage.getId();
}
else
{
// could be in PreviewResourceLoader
decoratorId = "_decorator";
}
}
// try loading Template
if (decoratorId != null)
{
try
{
decorator = getTemplate(decoratorId, "UTF-8");
}
catch (Exception e)
{
// it may not exist, so this is okay
}
}
// couldn't find Template, load default "no-op" decorator
if (decorator == null)
{
decorator = getTemplate("/themes/noop_decorator.vm", "UTF-8");
}
return decorator;
}
/**
* Prepare for page execution be setting content type, populating context,
* and processing the page decorator if needed.
*/
protected Template prepareForPageExecution(Context ctx, RollerRequest rreq,
HttpServletResponse response, PageData pd) throws Exception
{
Template outty = null;
UserManager userMgr = rreq.getRoller().getUserManager();
WebsiteData wd = pd.getWebsite();
// if page has an extension - use that to set the contentType
String pageLink = pd.getLink();
String mimeType = getServletConfig().getServletContext().getMimeType(pageLink);
if(mimeType != null) {
// we found a match ... set the content type
response.setContentType(mimeType);
}
/* old way ... not as flexible -- Allen G
int period = pd.getLink().indexOf('.');
if (period > -1)
{
String extension = pd.getLink().substring(period+1);
if ("js".equals(extension))
{
extension = "javascript";
}
response.setContentType("text/" + extension);
}
*/
// Made it this far, populate the Context
ContextLoader.setupContext( ctx, rreq, response );
// Get the page
outty = getTemplate( pd.getId(), "UTF-8" );
/**
* User can define a Decorator Template.
*/
if (wd != null)
{
// parse/merge Page template
StringWriter sw = new StringWriter();
outty.merge(ctx, sw);
ctx.put("decorator_body", sw.toString());
// replace outty with decorator Template
outty = findDecorator((String)ctx.get("decorator"), userMgr, wd);
}
return outty;
}
//------------------------------------------------------------------------
/**
* Handle error in Velocity processing.
*/
protected void error( HttpServletRequest req, HttpServletResponse res,
Exception e) throws ServletException, IOException
{
mLogger.warn("ERROR in VelocityServlet",e);
}
/**
* Override to prevent Velocity from putting "req" and "res" into the context.
* Allowing users access to the underlying Servlet objects is a security risk.
* If need access to request parameters, use $requestParameters.
*/
protected Context createContext(
HttpServletRequest req,
HttpServletResponse res) {
VelocityContext context = new VelocityContext();
context.put(REQUEST, new RequestWrapper(req.getParameterMap()));
return context;
}
/** Provide access to request params only, not actual request */
public static class RequestWrapper
{
Map params = null;
public RequestWrapper(Map params)
{
this.params = params;
}
public String getParameter(String key)
{
String ret = null;
String[] array = (String[])params.get(key);
if (array != null && array.length > 0)
{
ret = array[0];
}
return ret;
}
}
}
\ No newline at end of file