[cvs] eforum commit by ppilgrim: Deprecations, updates, refactoring, changes

JCorporate Ltd jcorp at jcorporate.com
Sat Jun 11 10:24:15 UTC 2005


Log Message:
-----------
Deprecations, updates, refactoring, changes for Expresso 5.6.x. Including preparation for back end re-architecture. This is a development snapshot.

Modified Files:
--------------
    eforum/src/WEB-INF/src/com/jcorporate/eforum:
        ForumSchema.java
        ForumUtils.java
        MessagesBundle.properties
    eforum/src/WEB-INF/src/com/jcorporate/eforum/controller:
        Browse.java
        Personalise.java
        Search.java
        SendNotice.java
    eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj:
        DefaultIndexProgressModel.java
        ForumAttachment.java
        ForumAttachmentMessage.java
        ForumGroup.java
        ForumMail.java
        ForumMessage.java
        ForumMonoTextDef.java
        ForumOptions.java
        ForumSecurity.java
        ForumSignature.java
        ForumSubscribe.java
        ForumTextDef.java
        ForumThread.java
        ForumVarTextDef.java
    eforum/src/WEB-INF/src/com/jcorporate/eforum/job:
        IndexMessages.java
        SendNotice.java
    eforum/src/WEB-INF/src/com/jcorporate/eforum/search:
        SearchIndexer.java
    eforum/src/WEB-INF/src/com/jcorporate/eforum/search/lucene:
        LuceneSearchIndexer.java
    eforum/src/expresso/components/eforum/javascript:
        menu-config.jsp
    eforum/src/expresso/components/eforum/jsp:
        browseMessages10.jsp
        editOptions.jsp

Revision Data
-------------
Index: LuceneSearchIndexer.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/search/lucene/LuceneSearchIndexer.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/search/lucene/LuceneSearchIndexer.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/search/lucene/LuceneSearchIndexer.java -u -r1.12 -r1.13
--- src/WEB-INF/src/com/jcorporate/eforum/search/lucene/LuceneSearchIndexer.java
+++ src/WEB-INF/src/com/jcorporate/eforum/search/lucene/LuceneSearchIndexer.java
@@ -19,27 +19,17 @@
 
 
 // eForum
-import com.jcorporate.eforum.ForumSchema;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.StringTokenizer;
 
-// import com.jcorporate.eforum.dbobj.ForumSecurity;
-// import com.jcorporate.eforum.dbobj.ForumSubscribe;
-import com.jcorporate.eforum.dbobj.DefaultIndexProgressModel;
-import com.jcorporate.eforum.dbobj.ForumMessage;
-import com.jcorporate.eforum.search.AbstractSearchIndexer;
-import com.jcorporate.eforum.search.DefaultSearchResult;
-import com.jcorporate.eforum.search.IndexProgressModel;
-import com.jcorporate.eforum.search.IndexStatus;
-import com.jcorporate.eforum.search.QueryContext;
-import com.jcorporate.eforum.search.SearchIndexerMetaData;
-import com.jcorporate.eforum.search.SearchResult;
-import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
-import com.jcorporate.expresso.kernel.util.FastStringBuffer;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.StopAnalyzer;
 import org.apache.lucene.document.DateField;
-
-// Lucene
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.IndexReader;
@@ -50,12 +40,21 @@
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.Searcher;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.StringTokenizer;
+
+import com.jcorporate.eforum.ForumSchema;
+import com.jcorporate.eforum.dbobj.DefaultIndexProgressModel;
+import com.jcorporate.eforum.dbobj.ForumMessage;
+import com.jcorporate.eforum.search.AbstractSearchIndexer;
+import com.jcorporate.eforum.search.DefaultSearchResult;
+import com.jcorporate.eforum.search.IndexProgressModel;
+import com.jcorporate.eforum.search.IndexStatus;
+import com.jcorporate.eforum.search.QueryContext;
+import com.jcorporate.eforum.search.SearchIndexerMetaData;
+import com.jcorporate.eforum.search.SearchResult;
+import com.jcorporate.expresso.core.controller.ExpressoRequest;
+import com.jcorporate.expresso.core.db.DBException;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
+import com.jcorporate.expresso.kernel.util.FastStringBuffer;
 
 
 /**
@@ -156,25 +155,24 @@
      * This methods indexes the entire forum messages. The plug-in should
      * retrieve all the forum messages and generate an index and then return
      *
-     * @param request request context which contains the database context that
-     *        specifies where the forum messages are stored.
+     * @param secureUser the security user
      *
-     * @throws Exception thrown if an I/O exception occurs
+     * @throws IOException thrown if an I/O exception occurs
+     * @throws DBException thrown if a database exception occurs
      */
-    public void indexMessages(RequestContext request) throws Exception
+    public void indexMessages( ReadOnlyUser secureUser ) throws Exception
     {
         String myName = thisClass + "indexMessages() ";
         System.out.println(myName + "Start.");
 
         int numRecords = 0;
-        IndexProgressModel progressModel = new DefaultIndexProgressModel(request);
+        IndexProgressModel progressModel = new DefaultIndexProgressModel( secureUser );
 
         try {
-            ForumMessage msgRef = new ForumMessage(request);
+            ForumMessage msgRef = new ForumMessage( secureUser );
 
             numRecords = msgRef.count();
-            System.out.println(myName + "Forum messages numRecords = " +
-                numRecords);
+            System.out.println(myName + "Forum messages numRecords = " + numRecords);
 
             // Reset the indexing progress info
             progressModel.retrieve();
@@ -271,7 +269,7 @@
 
     /**
      * A <em>hook</em> method to register additional resources Controllers as
-     * part of the eForum. In this method additional controller that are
+     * part of the eForum. In�this method additional controller that are
      * required plug-in can be defined.
      *
      * <p>
@@ -299,7 +297,7 @@
 
     /**
      * A <em>hook</em> method to register additional resources DBObjects as
-     * part of the eForum. In this method additional database objects that are
+     * part of the eForum. In�this method additional database objects that are
      * required plug-in can be defined.
      *
      * <p>
@@ -349,7 +347,7 @@
      *
      * <p>
      * then I thought that would be way too slow if the hit list shows 100s of
-     * matches. In the end I settle for compromise. This method works by
+     * matches. In�the end I settle for compromise. This method works by
      * working on a copy of the string which is converted to lower case. The
      * substring matching takes on the lower case string, and any operations
      * are duplicated with the original input string.  What I need here is a
@@ -360,7 +358,7 @@
      *
      * <p>
      * This is <em>a very experimental method</em> and the intention is to move
-     * it lock, stock, and barrel in to abstract super class in the near
+     * it lock, stock, and barrel in to abstract super class in�the near
      * future
      * </p>
      *
@@ -424,7 +422,7 @@
      *
      * @throws Exception thrown if an I/O exception occurs
      */
-    public List searchMessages(RequestContext request, QueryContext queryCxt)
+    public List searchMessages( ExpressoRequest request, QueryContext queryCxt)
         throws Exception
     {
         String myName = thisClass + "searchMessages() ";
@@ -454,7 +452,7 @@
             // words in the subject and body fields.
             Set contextWords = new HashSet();
             StringTokenizer stk = new StringTokenizer(queryText,
-                    ",./;'#[]-=<>?:@~{}_+`!\"£$%^&*()");
+                    ",./;'#[]-=<>?:@~{}_+`!\"�$%^&*()");
 
             while (stk.hasMoreTokens()) {
                 contextWords.add(stk.nextToken());
@@ -476,7 +474,7 @@
                 searchResult.setLoginName(document.get("loginName"));
 
                 // Attempt some form of context sensitive highlight (enboldening)
-                // of the key context words in the query
+                // of the key context words in�the query
                 // FIXME: Context highlight should be optional for non-html uses
                 // of the plug-in. Also the context highlight should be
                 // safe from truncation. I have used Arbitary truncation
@@ -586,7 +584,7 @@
      *
      * <p>
      * This is my rather  poor attempt to provide some form of context search
-     * of the keywords in the extracted text.  It requires some improvement
+     * of the keywords in�the extracted text.  It requires some improvement
      * and refactoring Peter Pilgrim Tue Nov 19 15:20:46 GMT 2002
      * </p>
      *
Index: ForumSchema.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/ForumSchema.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/ForumSchema.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/ForumSchema.java -u -r1.20 -r1.21
--- src/WEB-INF/src/com/jcorporate/eforum/ForumSchema.java
+++ src/WEB-INF/src/com/jcorporate/eforum/ForumSchema.java
@@ -39,6 +39,8 @@
         addDBObject(com.jcorporate.eforum.dbobj.ForumVarTextDef.class);
         addDBObject(com.jcorporate.eforum.dbobj.ForumTextDef.class);
         addDBObject(com.jcorporate.eforum.dbobj.ForumOptions.class);
+        addDBObject(com.jcorporate.eforum.dbobj.ForumSkinLAFDef.class);
+        addDBObject(com.jcorporate.eforum.dbobj.ForumSkinProperties.class);
         addController(com.jcorporate.eforum.controller.Browse.class);
         addController(com.jcorporate.eforum.controller.SendNotice.class);
         addController(com.jcorporate.eforum.controller.Search.class);
Index: ForumUtils.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/ForumUtils.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/ForumUtils.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/ForumUtils.java -u -r1.3 -r1.4
--- src/WEB-INF/src/com/jcorporate/eforum/ForumUtils.java
+++ src/WEB-INF/src/com/jcorporate/eforum/ForumUtils.java
@@ -5,6 +5,8 @@
 
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
 
 import org.apache.commons.beanutils.BasicDynaClass;
 import org.apache.commons.beanutils.DynaBean;
@@ -15,10 +17,11 @@
 import com.jcorporate.eforum.dbobj.ForumSignature;
 import com.jcorporate.expresso.core.controller.ControllerException;
 import com.jcorporate.expresso.core.controller.ControllerRequest;
-import com.jcorporate.expresso.core.controller.ControllerResponse;
+import com.jcorporate.expresso.core.controller.ExpressoRequest;
+import com.jcorporate.expresso.core.controller.ExpressoResponse;
 import com.jcorporate.expresso.core.controller.ServletControllerRequest;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
+
 
 /**
  * This is a static non instantiable class with eForum utilities 
@@ -44,16 +47,16 @@
      * @param myResponse the controller response
      * @throws ControllerException the controller exception
      */
-    public static void debugParameters( ControllerRequest myRequest )
+    public static void debugParameters( ExpressoRequest myRequest )
     {
         System.out.println("========================================");
         System.out.print( "PARAMETER DUMP ");
-        System.out.println( "myRequest.getParameters().size() = "+myRequest.getParameters().size() );
-        Hashtable map = myRequest.getParameters();
-        Enumeration keys = map.keys();
+        System.out.println( "myRequest.getParameters().size() = "+myRequest.getAllParameters().size() );
+        Map map = myRequest.getAllParameters();
+        Iterator keys = map.keySet().iterator();
         String name=null,value=null;
-        for ( int k=0; keys.hasMoreElements(); ++k ) {
-            name = (String)keys.nextElement();
+        for ( int k=0; keys.hasNext(); ++k ) {
+            name = (String)keys.next();
             value = (String)map.get( name );
             System.out.println( "    ["+k+"] "+name+"=`"+value+"'" );
         }
@@ -65,7 +68,7 @@
      * @param myResponse the controller response
      * @throws ControllerException the controller exception
      */
-    public static void debugFormCache( ControllerResponse myResponse )
+    public static void debugFormCache( ExpressoResponse myResponse )
     throws ControllerException
     {
         System.out.println("========================================");
@@ -101,7 +104,7 @@
      * 
      * @see LazyDynaBean
      */
-    public static DynaBean createForumProfileDynaBean( int userId, RequestContext requestContext )
+    public static DynaBean createForumProfileDynaBean( int userId, ExpressoRequest requestContext )
     throws DBException
     {
         DynaProperty[] props = new DynaProperty[]{
@@ -128,8 +131,8 @@
         
         // Retrieve the current forum options
         ForumOptions fo = new ForumOptions();
-        fo.setDataContext( requestContext.getDBName() );
-        fo.setField( ForumOptions.FLD_UID, requestContext.getUid() );
+        fo.setDataContext( requestContext.getDataContext() );
+        fo.setField( ForumOptions.FLD_UID, requestContext.getRequestingUser().getUid() );
         if ( !fo.find() ) {
             fo.checkDefaultValueIntegrity();
         }
@@ -160,8 +163,8 @@
         
         // Retrieve the current forum signature
         ForumSignature sign = new ForumSignature();
-        sign.setDataContext( requestContext.getDBName() );
-        sign.setField( ForumSignature.FLD_UID, requestContext.getUid() );
+        sign.setDataContext( requestContext.getDataContext() );
+        sign.setField( ForumSignature.FLD_UID, requestContext.getRequestingUser().getUid() );
         sign.find();
         
         bean.set("signature", sign.getField( ForumSignature.FLD_SIGNATURE_TEXT ) );
@@ -181,7 +184,7 @@
     public static void generateForumProfile( ControllerRequest request )
     throws DBException
     {
-        generateForumProfile( request.getUid(), request );
+        generateForumProfile( request.getRequestingUser().getUid(), request );
     }
     
     /**
Index: MessagesBundle.properties
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/MessagesBundle.properties,v
retrieving revision 1.11
retrieving revision 1.12
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/MessagesBundle.properties -Lsrc/WEB-INF/src/com/jcorporate/eforum/MessagesBundle.properties -u -r1.11 -r1.12
--- src/WEB-INF/src/com/jcorporate/eforum/MessagesBundle.properties
+++ src/WEB-INF/src/com/jcorporate/eforum/MessagesBundle.properties
@@ -178,7 +178,23 @@
 TN_FORUMTEXTDEF=Forum Text Font Definitions
 
 # ---------------------------------------------
+TN_FORUMSKINLAFDEF = Forum Skin Look and Feel Definitions
+FN_SkinId = Skin Id
+FN_SkinPropertyName = Skin Property Name
+FN_SkinDescrip = Skin Description 
+
 # ---------------------------------------------
+TN_FORUMSKINPROPS = Forum Skin LAF Properties
+FN_SkinPropertyName = Property Name
+FN_SkinTextValue = Test Value
+FN_SkinIntValue = Int Value
+FN_SkinDoubleValue = Double Value
+
+# ---------------------------------------------
+# ---------------------------------------------
+# ---------------------------------------------
+# ---------------------------------------------
+
 
 # ---------------------------------------------------------------------------
 # JavaServer Pages Elements
@@ -347,6 +363,8 @@
 Cancel = cancel
 Submit = submit
 Help = help
+
+# ---------------------------------------------
 
 # ---------------------------------------------
 
Index: SendNotice.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/controller/SendNotice.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/controller/SendNotice.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/controller/SendNotice.java -u -r1.4 -r1.5
--- src/WEB-INF/src/com/jcorporate/eforum/controller/SendNotice.java
+++ src/WEB-INF/src/com/jcorporate/eforum/controller/SendNotice.java
@@ -1,5 +1,11 @@
 package com.jcorporate.eforum.controller;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.List;
+import java.util.Vector;
+
 import com.jcorporate.expresso.core.controller.ControllerException;
 import com.jcorporate.expresso.core.controller.ControllerRequest;
 import com.jcorporate.expresso.core.controller.ControllerResponse;
@@ -10,15 +16,12 @@
 import com.jcorporate.expresso.core.controller.State;
 import com.jcorporate.expresso.core.controller.Transition;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.dbobj.ValidValue;
+import com.jcorporate.expresso.core.registry.RequestRegistry;
+import com.jcorporate.expresso.core.security.SuperUser;
 import com.jcorporate.expresso.services.dbobj.JobQueue;
 import com.jcorporate.expresso.services.dbobj.JobQueueParam;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.Vector;
 
 
 /**
@@ -66,7 +69,7 @@
                                        ControllerRequest params)
                                 throws ControllerException,
                                        NonHandleableException {
-        ControllerResponse response = super.newState(newState, params);
+        ControllerResponse response =  (ControllerResponse) super.newExpressoState( newState, params);
 
         if (newState.equals("prompt")) {
             promptState(params, response);
@@ -98,14 +101,14 @@
         noticeType.setLabel("Notice Type");
         noticeType.setName("NoticeType");
 
-        Vector v = new Vector(2);
-        v.addElement(new ValidValue("S", "All Members of a Security Group"));
-        v.addElement(new ValidValue("F", "All Users Subscribed to a Forum"));
-        v.addElement(new ValidValue("N",
+        List v = new Vector(2);
+        v.add(new ValidValue("S", "All Members of a Security Group"));
+        v.add(new ValidValue("F", "All Users Subscribed to a Forum"));
+        v.add(new ValidValue("N",
                                     "All Users Registered for Notices to a Forum"));
-        v.addElement(new ValidValue("D",
+        v.add(new ValidValue("D",
                                     "All Users Registered for Daily Summaries to a Forum"));
-        v.addElement(new ValidValue("M",
+        v.add(new ValidValue("M",
                                     "All Users Subscribed to EMail Messages to a Forum"));
         noticeType.setValidValues(v);
         response.addInput(noticeType);
@@ -146,26 +149,26 @@
     {
         String myName = new String(thisClass + "queueJobState()");
         try {
-            JobQueue jq = new JobQueue(SecuredDBObject.SYSTEM_ACCOUNT);
-            jq.setField(JobQueue.FLD_UID, params.getUid());
+            JobQueue jq = new JobQueue(SuperUser.INSTANCE);
+            jq.setField(JobQueue.FLD_UID, RequestRegistry.getUser().getUid() );
             jq.setField(JobQueue.FLD_JOBCODE, com.jcorporate.eforum.job.SendNotice.class.getName());
             jq.setField(JobQueue.FLD_STATUS_CODE, JobQueue.JOB_STATUS_NEW);
             jq.add();
 
-            JobQueueParam jqp = new JobQueueParam(SecuredDBObject.SYSTEM_ACCOUNT);
+            JobQueueParam jqp = new JobQueueParam(SuperUser.INSTANCE);
             String jobNumber = jq.getField("JobNumber");
             jqp.setField("JobNumber", jobNumber);
             jqp.setField("ParamNumber", "1");
             jqp.setField("ParamCode", "NoticeType");
             jqp.setField("ParamValue", params.getParameter("NoticeType"));
             jqp.add();
-            jqp = new JobQueueParam(SecuredDBObject.SYSTEM_ACCOUNT);
+            jqp = new JobQueueParam(SuperUser.INSTANCE);
             jqp.setField("JobNumber", jobNumber);
             jqp.setField("ParamNumber", "2");
             jqp.setField("ParamCode", "GroupName");
             jqp.setField("ParamValue", params.getParameter("Group"));
             jqp.add();
-            jqp = new JobQueueParam(SecuredDBObject.SYSTEM_ACCOUNT);
+            jqp = new JobQueueParam(SuperUser.INSTANCE);
             jqp.setField("JobNumber", jobNumber);
             jqp.setField("ParamNumber", "3");
             jqp.setField("ParamCode", "Subject");
Index: Browse.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/controller/Browse.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/controller/Browse.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/controller/Browse.java -u -r1.27 -r1.28
--- src/WEB-INF/src/com/jcorporate/eforum/controller/Browse.java
+++ src/WEB-INF/src/com/jcorporate/eforum/controller/Browse.java
@@ -1,6 +1,25 @@
 package com.jcorporate.eforum.controller;
 
 // Fri Jan 23 19:50:25 GMT 2004
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.StringReader;
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.apache.struts.upload.FormFile;
+
 import com.jcorporate.eforum.ForumSchema;
 import com.jcorporate.eforum.ForumUtils;
 import com.jcorporate.eforum.dbobj.ForumAttachment;
@@ -25,35 +44,17 @@
 import com.jcorporate.expresso.core.controller.Transition;
 import com.jcorporate.expresso.core.controller.ValidationException;
 import com.jcorporate.expresso.core.dataobjects.DataObjectMetaData;
-import com.jcorporate.expresso.core.dataobjects.Securable;
 import com.jcorporate.expresso.core.db.DBException;
 import com.jcorporate.expresso.core.dbobj.DBObject;
-import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.misc.RecordPaginator;
 import com.jcorporate.expresso.core.misc.StringUtil;
+import com.jcorporate.expresso.core.registry.RequestRegistry;
+import com.jcorporate.expresso.core.security.SuperUser;
 import com.jcorporate.expresso.core.security.User;
 import com.jcorporate.expresso.core.security.filters.FilterManager;
 import com.jcorporate.expresso.kernel.util.FastStringBuffer;
 import com.jcorporate.expresso.services.dbobj.ControllerDefault;
 import com.jcorporate.expresso.services.dbobj.MimeTypes;
-import org.apache.log4j.Logger;
-import org.apache.struts.upload.FormFile;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.StringReader;
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
 
 
 /**
@@ -63,7 +64,7 @@
  * 
  * <p>
  * 
- * This class is designed in�part to be a reference implementation of
+ * This class is designed in part to be a reference implementation of
  * a sub application that uses the Expresso Framework. Michael Nash
  * originally developed the eForum software with others. The source
  * code and documentation is to be cleaned so that novices can easily
@@ -568,14 +569,14 @@
 
             // Retrieve the parameters for this state method: forum group id
             // and forum thread id
-            ForumGroup thisGroup = new ForumGroup(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumGroup thisGroup = new ForumGroup(SuperUser.INSTANCE);
             thisGroup.setDataContext(request.getDataContext());
             thisGroup.setField("GroupId", request.getParameter("GroupId"));
             thisGroup.retrieve();
 
-            if (!thisGroup.allowedForUser(request.getUid(), "B")) {
+            if (!thisGroup.allowedForUser(RequestRegistry.getUser().getUid(), "B")) {
                 throw new SecurityException(myName + ":User '" +
-                                            request.getUser() +
+                                            RequestRegistry.getUser() +
                                             "' is not allowed to browse messages " +
                                             " in group " +
                                             thisGroup.getField("GroupId"));
@@ -587,7 +588,7 @@
             response.addOutput(new Output("GroupId",
                                           request.getParameter("GroupId")));
 
-            ForumThread thisThread = new ForumThread(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumThread thisThread = new ForumThread(SuperUser.INSTANCE);
             thisThread.setDataContext(request.getDataContext());
             thisThread.setField("ThreadId", request.getParameter("ThreadId"));
             thisThread.retrieve();
@@ -620,7 +621,7 @@
             Block rootMessages = new Block("rootMessages");
             response.addBlock( rootMessages );
 
-            ForumMessage ml = new ForumMessage(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumMessage ml = new ForumMessage(SuperUser.INSTANCE);
             ml.setDataContext(request.getDataContext());
             ml.setField("ThreadId", request.getParameter("ThreadId"));
             ml.setField("ReplyTo", "0");
@@ -774,14 +775,14 @@
 
             if (rc.isPreviousRecords()) {
                 Transition prev = new Transition("previous", "Previous Messages", Browse.class, "browseMessages");
-                prev.setParams(request.getParameters());
+                prev.setParams(request.getAllParameters());
                 prev.addParam("page", Integer.toString(rc.getPageNumber() - 1));
                 response.add(prev);
             }
 
             if (rc.isMoreRecords()) {
                 Transition next = new Transition("next", "Next Nessages", Browse.class, "browseMessages");
-                next.setParams(request.getParameters());
+                next.setParams(request.getAllParameters());
                 next.addParam("page", Integer.toString(rc.getPageNumber() + 1));
                 response.add(next);
             }
@@ -811,23 +812,23 @@
             // Generate personalisation bean
             ForumUtils.generateForumProfile( request );
 
-            ForumMessage ml = new ForumMessage(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumMessage ml = new ForumMessage(SuperUser.INSTANCE);
             ml.setDataContext(request.getDataContext());
             ml.setField("MessageId", request.getParameter("MessageId"));
             ml.retrieve();
 
-            ForumThread thisThread = new ForumThread(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumThread thisThread = new ForumThread(SuperUser.INSTANCE);
             thisThread.setDataContext(request.getDataContext());
             thisThread.setField("ThreadId", ml.getField("ThreadId"));
             thisThread.retrieve();
 
-            ForumGroup thisGroup = new ForumGroup(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumGroup thisGroup = new ForumGroup(SuperUser.INSTANCE);
             thisGroup.setDataContext(request.getDataContext());
             thisGroup.setField("GroupId", thisThread.getField("GroupId"));
             thisGroup.retrieve();
 
-            if (!thisGroup.allowedForUser(request.getUid(), "B")) {
-                throw new SecurityException("User '" + request.getUser() +
+            if (!thisGroup.allowedForUser(RequestRegistry.getUser().getUid(), "B")) {
+                throw new SecurityException("User '" + RequestRegistry.getUser() +
                                             "' is not allowed to browse messages " +
                                             " in group " +
                                             thisGroup.getField("GroupId"));
@@ -936,18 +937,18 @@
 
             User myUser = new User();
             myUser.setDataContext(request.getDataContext());
-            myUser.setUid(request.getUid());
+            myUser.setUid(RequestRegistry.getUser().getUid());
             myUser.retrieve();
             response.addOutput(new Output("UserDescrip", myUser.getLoginName()));
 
-            ForumGroup thisGroup = new ForumGroup(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumGroup thisGroup = new ForumGroup(SuperUser.INSTANCE);
             thisGroup.setDataContext(request.getDataContext());
             thisGroup.setField("GroupId", request.getParameter("GroupId"));
             thisGroup.retrieve();
 
-            if (!thisGroup.allowedForUser(request.getUid(), "B")) {
+            if (!thisGroup.allowedForUser(RequestRegistry.getUser().getUid(), "B")) {
                 throw new SecurityException(myName + ":User '" +
-                                            request.getUser() +
+                                            RequestRegistry.getUser() +
                                             "' is not allowed to browse threads " +
                                             " in group " +
                                             thisGroup.getField("GroupId"));
@@ -965,7 +966,7 @@
             response.addOutput(new Output("GroupId",
                                           request.getParameter("GroupId")));
 
-            ForumThread tl = new ForumThread(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumThread tl = new ForumThread(SuperUser.INSTANCE);
             tl.setDataContext(request.getDataContext());
             tl.setField("GroupId", request.getParameter("GroupId"));
 
@@ -1019,14 +1020,14 @@
 
             if (rc.isPreviousRecords()) {
                 Transition prev = new Transition("previous", "Previous Topics", Browse.class, "browseThreads");
-                prev.setParams(request.getParameters());
+                prev.setParams(request.getAllParameters());
                 prev.addParam("page", Integer.toString(rc.getPageNumber() - 1));
                 response.add(prev);
             }
 
             if (rc.isMoreRecords()) {
                 Transition next = new Transition("next", "Next Topics", Browse.class, "browseThreads");
-                next.setParams(request.getParameters());
+                next.setParams(request.getAllParameters());
                 next.addParam("page", Integer.toString(rc.getPageNumber() + 1));
                 response.add(next);
             }
@@ -1061,11 +1062,11 @@
     protected void runGroupSubscribeState(ControllerRequest request,
                                           ControllerResponse response)
         throws ControllerException {
-        Hashtable params = request.getParameters();
+        Map params = request.getAllParameters();
         response.addOutput(new Output("Subscriptions Updated"));
 
         try {
-            ForumGroup gl = new ForumGroup(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumGroup gl = new ForumGroup(SuperUser.INSTANCE);
             gl.setDataContext(request.getDataContext());
 
             ForumGroup oneGroup = null;
@@ -1076,11 +1077,11 @@
                  e.hasNext();) {
                 oneGroup = (ForumGroup) e.next();
 
-                if (oneGroup.allowedForUser(request.getUid(), "B")) {
+                if (oneGroup.allowedForUser(RequestRegistry.getUser().getUid(), "B")) {
                     oneSubscribe.clear();
                     oneSubscribe.setField("GroupId",
                                           oneGroup.getField("GroupId"));
-                    oneSubscribe.setField("ExpUid", request.getUid());
+                    oneSubscribe.setField("ExpUid", RequestRegistry.getUser().getUid());
                     DataObjectMetaData metaData = oneSubscribe.getMetaData();
                     oneSubscribe.setField( ForumSubscribe.FLD_UPLOAD_ATTACHMENTS,
                                            metaData.getDefaultValue( ForumSubscribe.FLD_UPLOAD_ATTACHMENTS ));
@@ -1153,7 +1154,7 @@
         String myName = new String(thisClass + "newGroupState()");
 
         try {
-            ForumGroup newGroup = new ForumGroup(request.getUid());
+            ForumGroup newGroup = new ForumGroup( RequestRegistry.getUser() );
             newGroup.setDataContext(request.getDataContext());
             newGroup.setField("GroupName", request.getParameter("GroupName"));
             newGroup.setField("GroupDescription",
@@ -1218,38 +1219,38 @@
             myMessage.setDataContext(request.getDataContext());
             myMessage.setField("Status", "0");
             myMessage.setField("ReplyTo", "0");
-            myMessage.setField("ExpUid", request.getUid());
+            myMessage.setField("ExpUid", RequestRegistry.getUser().getUid());
             myMessage.setField("NextMessage", "0");
             request.validateDBObject(myMessage, errs);
 
             if (errs.getErrorCount() == 0) {
-                ForumThread ft = new ForumThread(SecuredDBObject.SYSTEM_ACCOUNT);
+                ForumThread ft = new ForumThread(SuperUser.INSTANCE);
                 ft.setDataContext(request.getDataContext());
                 ft.setField("ThreadId", request.getParameter("ThreadId"));
                 ft.retrieve();
 
-                ForumGroup fg = new ForumGroup(SecuredDBObject.SYSTEM_ACCOUNT);
+                ForumGroup fg = new ForumGroup(SuperUser.INSTANCE);
                 fg.setDataContext(request.getDataContext());
                 fg.setField("GroupId", ft.getField("GroupId"));
                 response.addOutput(new Output("GroupId",
                                               ft.getField("GroupId")));
                 fg.retrieve();
 
-                if (!fg.allowedForUser(request.getUid(), "A")) {
+                if (!fg.allowedForUser(RequestRegistry.getUser().getUid(), "A")) {
                     throw new SecurityException(myName + ":User '" +
-                                                request.getUser() +
+                                                RequestRegistry.getUser() +
                                                 "' is not allowed to add messages " +
                                                 " in group " +
                                                 fg.getField("GroupId"));
                 }
 
-                ForumMessage fm = new ForumMessage(SecuredDBObject.SYSTEM_ACCOUNT);
+                ForumMessage fm = new ForumMessage(SuperUser.INSTANCE);
                 fm.setDataContext(request.getDataContext());
                 fm.setField("ThreadId", request.getParameter("ThreadId"));
                 fm.setField("Subject", request.getParameter("Subject"));
                 fm.setField("Body", request.getParameter("Body"));
                 fm.setField("Status", "0");
-                fm.setField("ExpUid", request.getUid());
+                fm.setField("ExpUid", RequestRegistry.getUser().getUid());
                 fm.setField("NextMessage", "0");
                 fm.add();
 
@@ -1269,10 +1270,10 @@
                     AttachmentStoreBean attachStore = (AttachmentStoreBean)uploadedAttachments.get(j);
                     
                     // Create the forum attachment
-                    ForumAttachment fat = new ForumAttachment( Securable.SYSTEM_ACCOUNT );
+                    ForumAttachment fat = new ForumAttachment( SuperUser.INSTANCE );
                     fat.setDataContext( request.getDataContext() );
                     fat.setField( ForumAttachment.FLD_ATTACHMENT_NOTES, attachStore.getAttachmentNotes() );
-                    fat.setField( ForumAttachment.FLD_UID, request.getUid() );
+                    fat.setField( ForumAttachment.FLD_UID, RequestRegistry.getUser().getUid() );
                     fat.add();
                 
                     System.out.println( "attachStore = "+ attachStore );
@@ -1327,7 +1328,7 @@
                 ag.addParam("state", "browseMessages");
                 ag.addParam("ThreadId", request.getParameter("ThreadId"));
                 ag.addParam("GroupId", fg.getField("GroupId"));
-                ag.transition(request, response);
+                ag.executeTransition(request, response);
             }
         } catch (DBException de) {
             throw new ControllerException(myName +
@@ -1354,7 +1355,7 @@
         throws ControllerException, NonHandleableException {
 
         try {
-            ForumThread newThread = new ForumThread(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumThread newThread = new ForumThread(SuperUser.INSTANCE);
             newThread.setDataContext(request.getDataContext());
             newThread.setField("Subject", request.getParameter("Subject"));
             newThread.setField("GroupId", request.getParameter("GroupId"));
@@ -1364,8 +1365,8 @@
             fg.setField("GroupId", request.getParameter("GroupId"));
             fg.retrieve();
 
-            if (!fg.allowedForUser(request.getUid(), "A")) {
-                throw new SecurityException("User '" + request.getUser() +
+            if (!fg.allowedForUser(RequestRegistry.getUser().getUid(), "A")) {
+                throw new SecurityException("User '" + RequestRegistry.getUser() +
                                             "' is not allowed to add messages " +
                                             " in group " +
                                             fg.getField("GroupId"));
@@ -1377,7 +1378,7 @@
             Transition ag = new Transition("browseMessages", this);
             ag.addParam("ThreadId", newThread.getField("ThreadId"));
             ag.addParam("GroupId", fg.getField("GroupId"));
-            ag.transition(request, response);
+            ag.executeTransition( request, response );
         } catch (DBException de) {
             throw new ControllerException("Unable to create new thread", de);
         }
@@ -1400,7 +1401,7 @@
             response.addOutput(groups);
 
             Block allGroups = null;
-            ForumGroup gl = new ForumGroup(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumGroup gl = new ForumGroup(SuperUser.INSTANCE);
             gl.setDataContext(request.getDataContext());
 
             ForumGroup oneGroup = null;
@@ -1414,7 +1415,7 @@
 
                 oneGroup = (ForumGroup) e.next();
 
-                if (oneGroup.allowedForUser(request.getUid(), "B")) {
+                if (oneGroup.allowedForUser(RequestRegistry.getUser().getUid(), "B")) {
                     Block b = new Block("OneGroup");
                     allGroups.add(b);
                     b.setAttribute("GroupDescription",
@@ -1432,7 +1433,7 @@
                     b.setAttribute("SubscriberCount", "" + fs.count());
                     fs.clear();
                     fs.setField("GroupId", oneGroup.getField("GroupId"));
-                    fs.setField("ExpUid", request.getUid());
+                    fs.setField("ExpUid", RequestRegistry.getUser().getUid());
 
                     String emailVal = "N";
                     String subscribeVal = "N";
@@ -1503,7 +1504,7 @@
         System.out.println( "browseForm = "+browseForm );
 
         try {
-            ForumThread ft = new ForumThread(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumThread ft = new ForumThread(SuperUser.INSTANCE);
             ft.setDataContext(request.getDataContext());
             ft.setField("ThreadId", request.getParameter("ThreadId"));
             ft.retrieve();
@@ -1513,9 +1514,9 @@
             fg.setField("GroupId", ft.getField("GroupId"));
             fg.retrieve();
 
-            if (!fg.allowedForUser(request.getUid(), "A")) {
+            if (!fg.allowedForUser(RequestRegistry.getUser().getUid(), "A")) {
                 throw new SecurityException(myName + ":User '" +
-                                            request.getUser() +
+                                            RequestRegistry.getUser() +
                                             "' is not allowed to add messages " +
                                             " in group " +
                                             fg.getField("GroupId"));
@@ -1564,8 +1565,8 @@
             body.setDefaultValue( browseForm.getMessageBody() );
         else {
             try {
-                ForumSignature signature = new ForumSignature( request );
-                signature.setField( ForumSignature.FLD_UID, request.getUid() );
+                ForumSignature signature = new ForumSignature( request.getRequestingUser() );
+                signature.setField( ForumSignature.FLD_UID, RequestRegistry.getUser().getUid() );
                 signature.find();
                 String sig = StringUtil.notNull( signature.getField( ForumSignature.FLD_SIGNATURE_TEXT ) );
                 String bodyText = ( sig.length() > 0 ? "\n--\n"+sig : ""  );
@@ -1601,9 +1602,9 @@
             fg.setField("GroupId", request.getParameter("GroupId"));
             fg.retrieve();
 
-            if (!fg.allowedForUser(request.getUid(), "A")) {
+            if (!fg.allowedForUser(RequestRegistry.getUser().getUid(), "A")) {
                 throw new SecurityException(myName + ":User '" +
-                                            request.getUser() +
+                                            RequestRegistry.getUser() +
                                             "' is not allowed to add threads " +
                                             " in group " +
                                             fg.getField("GroupId"));
@@ -1723,8 +1724,8 @@
             fg.setField("GroupId", ft.getField("GroupId"));
             fg.retrieve();
 
-            if (!fg.allowedForUser(request.getUid(), "A")) {
-                throw new SecurityException("User '" + request.getUser() +
+            if (!fg.allowedForUser(RequestRegistry.getUser().getUid(), "A")) {
+                throw new SecurityException("User '" + RequestRegistry.getUser() +
                                             "' is not allowed to add messages " +
                                             " in group " +
                                             fg.getField("GroupId"));
@@ -1776,8 +1777,8 @@
             // Otherwise use the standard indented reply of the
             // previous message
             try {
-                ForumSignature signature = new ForumSignature( request );
-                signature.setField( ForumSignature.FLD_UID, request.getUid() );
+                ForumSignature signature = new ForumSignature( request.getRequestingUser() );
+                signature.setField( ForumSignature.FLD_UID, RequestRegistry.getUser().getUid() );
                 signature.find();
                 String sig = StringUtil.notNull( signature.getField( ForumSignature.FLD_SIGNATURE_TEXT ) );
                 String bodyText = ( sig.length() > 0 ? indentedReply+"\n--\n"+sig : indentedReply  );
@@ -1842,7 +1843,7 @@
             fm.setField("Subject", request.getParameter("Subject"));
             fm.setField("Body", request.getParameter("Body"));
             fm.setField("Status", "0");
-            fm.setField("ExpUid", request.getUid());
+            fm.setField("ExpUid", RequestRegistry.getUser().getUid());
             fm.setField("ReplyTo", originalMessage.getField("MessageId"));
             fm.setField("ThreadId", originalMessage.getField("ThreadId"));
             response.addOutput(new Output("ThreadId",
@@ -1860,9 +1861,9 @@
             fg.setField("GroupId", myThread.getField("GroupId"));
             fg.retrieve();
 
-            if (!fg.allowedForUser(request.getUid(), "A")) {
+            if (!fg.allowedForUser(RequestRegistry.getUser().getUid(), "A")) {
                 throw new SecurityException(myName + ":User '" +
-                                            request.getUser() +
+                                            RequestRegistry.getUser() +
                                             "' is not allowed to reply to messages " +
                                             " in group " +
                                             fg.getField("GroupId"));
@@ -1882,10 +1883,10 @@
                 AttachmentStoreBean attachStore = (AttachmentStoreBean)uploadedAttachments.get(j);
 
                 // Create the forum attachment
-                ForumAttachment fat = new ForumAttachment( Securable.SYSTEM_ACCOUNT );
+                ForumAttachment fat = new ForumAttachment( SuperUser.INSTANCE );
                 fat.setDataContext( request.getDataContext() );
                 fat.setField( ForumAttachment.FLD_ATTACHMENT_NOTES, attachStore.getAttachmentNotes() );
-                fat.setField( ForumAttachment.FLD_UID, request.getUid() );
+                fat.setField( ForumAttachment.FLD_UID, RequestRegistry.getUser().getUid() );
                 fat.add();
                 
                 System.out.println( "attachStore = "+ attachStore );
@@ -1940,7 +1941,7 @@
             ag.addParam("state", "browseMessages");
             ag.addParam("ThreadId", originalMessage.getField("ThreadId"));
             ag.addParam("GroupId", myThread.getField("GroupId"));
-            ag.transition(request, response);
+            ag.executeTransition(request, response);
             response.addTransition(ag);
 
         } catch (DBException de) {
@@ -2039,11 +2040,11 @@
                 groupId = request.getParameter("GroupId");
             }
             
-            System.out.println("groupId = "+groupId+", uid = "+ request.getUid() );
+            System.out.println("groupId = "+groupId+", uid = "+ RequestRegistry.getUser().getUid() );
             ForumSubscribe subscriber = new ForumSubscribe();
             subscriber.setDataContext(request.getDataContext());
             subscriber.setField( ForumSubscribe.FLD_GROUP_ID,  groupId );
-            subscriber.setField( ForumSubscribe.FLD_UID, request.getUid() );
+            subscriber.setField( ForumSubscribe.FLD_UID, RequestRegistry.getUser().getUid() );
             subscriber.retrieve();
             
             if ( !subscriber.getFieldBoolean( ForumSubscribe.FLD_UPLOAD_ATTACHMENTS ) ) {
@@ -2152,11 +2153,11 @@
             ForumSubscribe subscriber = new ForumSubscribe();
             subscriber.setDataContext(request.getDataContext());
             subscriber.setField( ForumSubscribe.FLD_GROUP_ID, groupId );
-            subscriber.setField( ForumSubscribe.FLD_UID, request.getUid() );
+            subscriber.setField( ForumSubscribe.FLD_UID, RequestRegistry.getUser().getUid() );
             subscriber.retrieve();
             
             maximumUploadSize = subscriber.getFieldInt( ForumSubscribe.FLD_MAX_ATTACHMENT_SIZE );
-            System.out.println("groupId = "+groupId+", uid = "+ request.getUid() );
+            System.out.println("groupId = "+groupId+", uid = "+ RequestRegistry.getUser().getUid() );
             System.out.println( "maximumUploadSize = "+maximumUploadSize );
         }
         catch (DBException e) {
@@ -2329,7 +2330,7 @@
             out = servReq.getHttpServletResponse().getOutputStream();
 
             // Retrieve the forum attachment record from the database
-            fat = new ForumAttachment( Securable.SYSTEM_ACCOUNT );
+            fat = new ForumAttachment( SuperUser.INSTANCE );
             fat.setDataContext( request.getDataContext() );
             fat.setField( ForumAttachment.FLD_ATTACHMENT_ID, attachmentId );
             fat.retrieve();
@@ -2353,10 +2354,10 @@
             ForumSubscribe subscriber = new ForumSubscribe();
             subscriber.setDataContext(request.getDataContext());
             subscriber.setField( ForumSubscribe.FLD_GROUP_ID, groupId );
-            subscriber.setField( ForumSubscribe.FLD_UID, request.getUid() );
+            subscriber.setField( ForumSubscribe.FLD_UID, RequestRegistry.getUser().getUid() );
             subscriber.retrieve();
             
-            System.out.println("groupId = "+groupId+", uid = "+ request.getUid() );
+            System.out.println("groupId = "+groupId+", uid = "+ RequestRegistry.getUser().getUid() );
 
             if ( !subscriber.getFieldBoolean( ForumSubscribe.FLD_DOWNLOAD_ATTACHMENTS ) ) {
                 // FIXME: Sanitise the security exception to an error handling page.
@@ -2544,16 +2545,16 @@
             
             User myUser = new User();
             myUser.setDataContext(request.getDataContext());
-            myUser.setUid(request.getUid());
+            myUser.setUid(RequestRegistry.getUser().getUid());
             myUser.retrieve();
             response.addOutput(new Output("UserDescrip", myUser.getLoginName()));
 
             Output groups = new Output("groups", "Subscribed Groups");
             response.addOutput(groups);
 
-            ForumSubscribe fl = new ForumSubscribe(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumSubscribe fl = new ForumSubscribe(SuperUser.INSTANCE);
             fl.setDataContext(request.getDataContext());
-            fl.setField("ExpUid", request.getUid());
+            fl.setField("ExpUid", RequestRegistry.getUser().getUid());
 
             ForumSubscribe oneSubscribe = null;
             String projectCode = StringUtil.notNull(request.getParameter(
@@ -2573,7 +2574,7 @@
                 oneGroup.setField("GroupId", oneSubscribe.getField("GroupId"));
 
                 if (oneGroup.find()) {
-                    if (oneGroup.allowedForUser(request.getUid(), "B")) {
+                    if (oneGroup.allowedForUser(RequestRegistry.getUser().getUid(), "B")) {
                         if (projectCode.equals("") ||
                             (projectCode.equals(oneGroup.getField("Project")))) {
                             Output o = new Output(oneGroup.getField("GroupDescription"));
@@ -2597,7 +2598,7 @@
                                                    "" + fs.count()));
                         }
                     } else {
-                        log.warn("WARNING: User '" + request.getUser() +
+                        log.warn("WARNING: User '" + RequestRegistry.getUser() +
                                  "' is subscribed to forum group " +
                                  oneGroup.getField("GroupId") +
                                  ", but does not have " +
@@ -2711,7 +2712,7 @@
 
         if (curPage != 1) {
             Transition t = new Transition();
-            t.setParams(request.getParameters());
+            t.setParams(request.getAllParameters());
             t.setControllerObject(this.getClass());
             t.addParam("page", Integer.toString(curPage - 1));
             t.setLabel("< Previous");
@@ -2721,7 +2722,7 @@
 
         for (int i = startPage; i <= endPage; i++) {
             Transition t = new Transition();
-            t.setParams(request.getParameters());
+            t.setParams(request.getAllParameters());
             t.setControllerObject(this.getClass());
             t.addParam("page", Integer.toString(i));
             t.setLabel(Integer.toString(i));
@@ -2737,7 +2738,7 @@
 
         if (curPage < endPage) {
             Transition t = new Transition();
-            t.setParams(request.getParameters());
+            t.setParams(request.getAllParameters());
             t.setControllerObject(this.getClass());
             t.addParam("page", Integer.toString(curPage + 1));
             t.setLabel("Next >");
Index: Search.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/controller/Search.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/controller/Search.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/controller/Search.java -u -r1.10 -r1.11
--- src/WEB-INF/src/com/jcorporate/eforum/controller/Search.java
+++ src/WEB-INF/src/com/jcorporate/eforum/controller/Search.java
@@ -23,15 +23,20 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionMapping;
+
 import com.jcorporate.eforum.ForumSchema;
 import com.jcorporate.eforum.dbobj.DefaultIndexProgressModel;
 import com.jcorporate.eforum.dbobj.ForumGroup;
 import com.jcorporate.eforum.search.DefaultSearchResult;
 import com.jcorporate.eforum.search.IndexProgressModel;
 import com.jcorporate.eforum.search.IndexStatus;
-import com.jcorporate.eforum.search.SearchIndexer; // *PP* Tue Nov 19 03:01:54 GMT 2002
+import com.jcorporate.eforum.search.SearchIndexer;
 import com.jcorporate.eforum.search.SearchIndexerFactory;
 import com.jcorporate.eforum.search.SortType;
 import com.jcorporate.expresso.core.controller.ControllerException;
@@ -44,18 +49,17 @@
 import com.jcorporate.expresso.core.controller.Transition;
 import com.jcorporate.expresso.core.controller.session.PersistentSession;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.dbobj.ValidValue;
+import com.jcorporate.expresso.core.registry.RequestRegistry;
+import com.jcorporate.expresso.core.security.SuperUser;
 import com.jcorporate.expresso.core.security.User;
 import com.jcorporate.expresso.services.dbobj.JobQueue;
 import com.jcorporate.expresso.services.dbobj.JobQueueParam;
 import com.jcorporate.expresso.services.dbobj.Setup;
-import org.apache.log4j.Logger;
-import org.apache.struts.action.ActionMapping;
 
 /**
  * <p>A special controller action to search the forum, encapsulates
- * the searching tasks, which used to be in�the <code>Browse</code>
+ * the searching tasks, which used to be in the <code>Browse</code>
  * controller and also encapsulates to index forum messages states</p>
  *
  *
@@ -169,7 +173,7 @@
             // FIXME: Only allow administrators to run with indexing
             User user = new User();
             user.setDataContext( request.getDataContext() );
-            user.setUid( request.getUid() );
+            user.setUid( RequestRegistry.getUser().getUid() );
             user.retrieve();
             if ( !user.isAdmin() ) {
                 new SecurityException(
@@ -178,7 +182,7 @@
             }
 
             // Check that another indexer is not running at the moment
-            IndexProgressModel progressModel = new DefaultIndexProgressModel( request );
+            IndexProgressModel progressModel = new DefaultIndexProgressModel( request.getRequestingUser() );
             progressModel.retrieve();
             IndexStatus status = progressModel.getIndexStatus();
             System.out.println( myName+"IndexStatus:"+status );
@@ -222,7 +226,7 @@
             // Set up the index directory path
             indexer.setIndexerPath( indexerPath );
             // Ask the indexer plug-in to index all the forum messages
-            indexer.indexMessages( request );
+            indexer.indexMessages( request.getRequestingUser() );
 
             response.addOutput(
                 new Output("Message1", "Indexed all known forum messages"));
@@ -264,7 +268,7 @@
             // FIXME: Only allow administrators to run with indexing
             User user = new User();
             user.setDBName( request.getDataContext() );
-            user.setUid( request.getUid() );
+            user.setUid( RequestRegistry.getUser().getUid() );
             user.retrieve();
             if ( !user.isAdmin() ) {
                 new SecurityException(
@@ -272,7 +276,7 @@
                     "'is not permitted to index the forums." );
             }
 
-            IndexProgressModel progressModel = new DefaultIndexProgressModel( request );
+            IndexProgressModel progressModel = new DefaultIndexProgressModel( request.getRequestingUser() );
             progressModel.retrieve();
             IndexStatus status = progressModel.getIndexStatus();
             System.out.println( myName+"IndexStatus:"+status );
@@ -307,8 +311,8 @@
         }
 
             // Create an expresso Job
-            JobQueue jq = new JobQueue(SecuredDBObject.SYSTEM_ACCOUNT);
-            jq.setField(JobQueue.FLD_UID, request.getUid());
+            JobQueue jq = new JobQueue(SuperUser.INSTANCE);
+            jq.setField(JobQueue.FLD_UID, RequestRegistry.getUser().getUid());
             jq.setField(JobQueue.FLD_JOBCODE, com.jcorporate.eforum.job.IndexMessages.class.getName());
             // Set the job to a "new" state, so that scheduler does not run it immediately
             jq.setField(JobQueue.FLD_STATUS_CODE, JobQueue.JOB_STATUS_NEW);
@@ -319,14 +323,14 @@
 
             // Create some job parameters for it, associate the job number id
             // with the parameters. This is very important.
-            JobQueueParam jqp = new JobQueueParam(SecuredDBObject.SYSTEM_ACCOUNT);
+            JobQueueParam jqp = new JobQueueParam(SuperUser.INSTANCE);
             jqp.setField("JobNumber", jobNumber);
             jqp.setField("ParamNumber", "1");
             jqp.setField("ParamCode", "Artist");
             jqp.setField("ParamValue", "Santana" ); // Dummy Argument
             jqp.add();
 
-            jqp = new JobQueueParam(SecuredDBObject.SYSTEM_ACCOUNT);
+            jqp = new JobQueueParam(SuperUser.INSTANCE);
             jqp.setField("JobNumber", jobNumber);
             jqp.setField("ParamNumber", "2");
             jqp.setField("ParamCode", "Album");
@@ -380,7 +384,7 @@
             // FIXME: Only allow administrators to run with indexing
             User user = new User();
             user.setDBName( request.getDataContext() );
-            user.setUid( request.getUid() );
+            user.setUid( RequestRegistry.getUser().getUid() );
             user.retrieve();
             if ( !user.isAdmin() ) {
                 new SecurityException(
@@ -388,7 +392,7 @@
                     "'is not permitted to index the forums." );
             }
 
-            IndexProgressModel progressModel = new DefaultIndexProgressModel( request );
+            IndexProgressModel progressModel = new DefaultIndexProgressModel( request.getRequestingUser() );
             progressModel.retrieve();
 
             IndexStatus status = progressModel.getIndexStatus();
@@ -461,7 +465,7 @@
             // FIXME: Only allow administrators to run with indexing
             User user = new User();
             user.setDBName( request.getDataContext() );
-            user.setUid( request.getUid() );
+            user.setUid( RequestRegistry.getUser().getUid() );
             user.retrieve();
             if ( !user.isAdmin() ) {
                 new SecurityException(
@@ -469,7 +473,7 @@
                     "'is not permitted to index the forums." );
             }
 
-            IndexProgressModel progressModel = new DefaultIndexProgressModel( request );
+            IndexProgressModel progressModel = new DefaultIndexProgressModel( request.getRequestingUser() );
             progressModel.retrieve();
 
             IndexStatus status = progressModel.getIndexStatus();
@@ -536,7 +540,7 @@
 
             // Lock-out any queries to the search engine if the forum
             // is currently being indexed
-            IndexProgressModel progressModel = new DefaultIndexProgressModel( request );
+            IndexProgressModel progressModel = new DefaultIndexProgressModel( request.getRequestingUser() );
             progressModel.retrieve();
             IndexStatus status = progressModel.getIndexStatus();
             System.out.println( myName+"IndexStatus:"+status );
@@ -672,7 +676,7 @@
             searchForm.buildEnumerationsIfNeeded( request.getLocale() );
 
             // Retrieve a list of forum groups to populate the search form
-            ForumGroup groupRef = new ForumGroup( request );
+            ForumGroup groupRef = new ForumGroup( request.getRequestingUser() );
             List list = groupRef.searchAndRetrieveList();
             List groupValues = new ArrayList();
             for ( int k=0; k<list.size(); ++k ) {
Index: Personalise.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/controller/Personalise.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/controller/Personalise.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/controller/Personalise.java -u -r1.6 -r1.7
--- src/WEB-INF/src/com/jcorporate/eforum/controller/Personalise.java
+++ src/WEB-INF/src/com/jcorporate/eforum/controller/Personalise.java
@@ -18,6 +18,7 @@
 import com.jcorporate.expresso.core.controller.State;
 import com.jcorporate.expresso.core.controller.Transition;
 import com.jcorporate.expresso.core.db.DBException;
+import com.jcorporate.expresso.core.registry.RequestRegistry;
 
 /**
  * A personalisation controller for the eforum. This controller
@@ -137,7 +138,7 @@
         // Retrieve the current forum options
         ForumOptions fo = new ForumOptions();
         fo.setDataContext( request.getDataContext() );
-        fo.setField( ForumOptions.FLD_UID, request.getUid() );
+        fo.setField( ForumOptions.FLD_UID, RequestRegistry.getUser().getUid() );
         if ( !fo.find() ) {
             fo.checkDefaultValueIntegrity();
         }
@@ -145,7 +146,7 @@
         // Retrieve the current forum signature
         ForumSignature sign = new ForumSignature();
         sign.setDataContext( request.getDataContext() );
-        sign.setField( ForumSignature.FLD_UID, request.getUid() );
+        sign.setField( ForumSignature.FLD_UID, RequestRegistry.getUser().getUid() );
         sign.find();
         
         //
@@ -186,7 +187,7 @@
         
         oneInput = new Input(CONST_AUTO_WRAP_MSG);
         oneInput.setType( Input.ATTRIBUTE_RADIO );
-        oneInput.setValidValues( fo.getValidValues( ForumOptions.FLD_AUTO_WRAP_MSG ));
+        oneInput.setValidValues( fo.getValidValuesList( ForumOptions.FLD_AUTO_WRAP_MSG ));
         oneInput.setLabel(CONST_AUTO_WRAP_MSG);
         oneInput.setDefaultValue( fo.getField( ForumOptions.FLD_AUTO_WRAP_MSG ));
         optionsBlock.add(oneInput);
@@ -197,21 +198,21 @@
         // into a static utility class. Can you do it?
         oneInput = new Input(CONST_AUTO_WRAP_REPLIES);
         oneInput.setType( Input.ATTRIBUTE_RADIO );
-        oneInput.setValidValues( fo.getValidValues( ForumOptions.FLD_AUTO_WRAP_REPLIES ));
+        oneInput.setValidValues( fo.getValidValuesList( ForumOptions.FLD_AUTO_WRAP_REPLIES ));
         oneInput.setLabel(CONST_AUTO_WRAP_REPLIES);
         oneInput.setDefaultValue( fo.getField( ForumOptions.FLD_AUTO_WRAP_REPLIES ));
         optionsBlock.add(oneInput);
         
         oneInput = new Input(CONST_DISPLAY_VARIABLE);
         oneInput.setType( Input.ATTRIBUTE_RADIO );
-        oneInput.setValidValues( fo.getValidValues( ForumOptions.FLD_DISPLAY_VARIABLE ));
+        oneInput.setValidValues( fo.getValidValuesList( ForumOptions.FLD_DISPLAY_VARIABLE ));
         oneInput.setLabel(CONST_DISPLAY_VARIABLE);
         oneInput.setDefaultValue( fo.getField( ForumOptions.FLD_DISPLAY_VARIABLE ));
         optionsBlock.add(oneInput);
         
         oneInput = new Input(CONST_INDENT_REPLIES);
         oneInput.setType( Input.ATTRIBUTE_RADIO );
-        oneInput.setValidValues( fo.getValidValues( ForumOptions.FLD_INDENT_REPLIES));
+        oneInput.setValidValues( fo.getValidValuesList( ForumOptions.FLD_INDENT_REPLIES));
         oneInput.setLabel(CONST_INDENT_REPLIES);
         oneInput.setDefaultValue( fo.getField( ForumOptions.FLD_INDENT_REPLIES ));
         optionsBlock.add(oneInput);
@@ -224,7 +225,7 @@
         
         oneInput = new Input(CONST_MONO_TEXT_FONT);
         oneInput.setType( Input.ATTRIBUTE_DROPDOWN );
-        oneInput.setValidValues( fo.getValidValues( ForumOptions.FLD_MONO_TEXT_FONT_ID ));
+        oneInput.setValidValues( fo.getValidValuesList( ForumOptions.FLD_MONO_TEXT_FONT_ID ));
         oneInput.setLabel(CONST_MONO_TEXT_FONT);
         oneInput.setDefaultValue( fo.getField( ForumOptions.FLD_MONO_TEXT_FONT_ID ));
         optionsBlock.add(oneInput);
@@ -243,14 +244,14 @@
         
         oneInput = new Input(CONST_VAR_TEXT_FONT);
         oneInput.setType( Input.ATTRIBUTE_DROPDOWN );
-        oneInput.setValidValues( fo.getValidValues( ForumOptions.FLD_VAR_TEXT_FONT_ID ));
+        oneInput.setValidValues( fo.getValidValuesList( ForumOptions.FLD_VAR_TEXT_FONT_ID ));
         oneInput.setLabel(CONST_VAR_TEXT_FONT);
         oneInput.setDefaultValue( fo.getField( ForumOptions.FLD_VAR_TEXT_FONT_ID ));
         optionsBlock.add(oneInput);
         
         oneInput = new Input(CONST_USE_SIGNATURE);
         oneInput.setType( Input.ATTRIBUTE_RADIO );
-        oneInput.setValidValues( fo.getValidValues( ForumOptions.FLD_USE_SIGNATURE));
+        oneInput.setValidValues( fo.getValidValuesList( ForumOptions.FLD_USE_SIGNATURE));
         oneInput.setLabel(CONST_USE_SIGNATURE);
         oneInput.setDefaultValue( fo.getField( ForumOptions.FLD_USE_SIGNATURE ));
         optionsBlock.add(oneInput);
@@ -275,14 +276,14 @@
         
         oneInput = new Input(CONST_HEADER_TEXT_FONT);
         oneInput.setType( Input.ATTRIBUTE_DROPDOWN );
-        oneInput.setValidValues( fo.getValidValues( ForumOptions.FLD_HEADER_TEXT_FONT_ID ));
+        oneInput.setValidValues( fo.getValidValuesList( ForumOptions.FLD_HEADER_TEXT_FONT_ID ));
         oneInput.setLabel(CONST_HEADER_TEXT_FONT);
         oneInput.setDefaultValue( fo.getField( ForumOptions.FLD_HEADER_TEXT_FONT_ID ));
         optionsBlock.add(oneInput);
         
         oneInput = new Input(CONST_BANNER_TEXT_FONT);
         oneInput.setType( Input.ATTRIBUTE_DROPDOWN );
-        oneInput.setValidValues( fo.getValidValues( ForumOptions.FLD_BANNER_TEXT_FONT_ID ));
+        oneInput.setValidValues( fo.getValidValuesList( ForumOptions.FLD_BANNER_TEXT_FONT_ID ));
         oneInput.setLabel(CONST_BANNER_TEXT_FONT);
         oneInput.setDefaultValue( fo.getField( ForumOptions.FLD_BANNER_TEXT_FONT_ID ));
         optionsBlock.add(oneInput);
@@ -311,7 +312,7 @@
             // Retrieve the current forum options
             ForumOptions fo = new ForumOptions();
             fo.setDataContext( request.getDataContext() );
-            fo.setField( ForumOptions.FLD_UID, request.getUid() );
+            fo.setField( ForumOptions.FLD_UID, RequestRegistry.getUser().getUid() );
             fo.find();
             fo.setField( ForumOptions.FLD_AUTO_WRAP_MSG, request.getParameter( CONST_AUTO_WRAP_MSG ) );
             fo.setField( ForumOptions.FLD_AUTO_WRAP_REPLIES, request.getParameter( CONST_AUTO_WRAP_REPLIES ) );
@@ -332,7 +333,7 @@
             // Retrieve the current forum signature
             ForumSignature sign = new ForumSignature();
             sign.setDataContext( request.getDataContext() );
-            sign.setField( ForumSignature.FLD_UID, request.getUid() );
+            sign.setField( ForumSignature.FLD_UID, RequestRegistry.getUser().getUid() );
             sign.find();
             sign.setField( ForumSignature.FLD_SIGNATURE_TEXT, request.getParameter( CONST_SIGNATURE ) );
             // sign.setField( ForumSignature.FLD_, request.getParameter( CONST_ ) );
Index: ForumThread.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumThread.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumThread.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumThread.java -u -r1.8 -r1.9
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumThread.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumThread.java
@@ -4,10 +4,10 @@
 
 import org.apache.log4j.Logger;
 
-import com.jcorporate.expresso.core.controller.ControllerRequest;
 import com.jcorporate.expresso.core.db.DBException;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.misc.DateTime;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 
 
 /**
@@ -55,29 +55,19 @@
     } /* ForumThread() */
 
     /**
-     * Standard constructor
-     * for using DBObjects within Controllers.  Initializes based upon the current
-     * user and the requested db. [Of course this can be modified later]
-     *
-     * @param request - The controller request handed to you by the framework.
-     * @throws DBException
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumThread(ControllerRequest request)
-        throws DBException {
-        super(request);
+    public ForumThread(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
-    /**
-     * Standard constructor for
-     * preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @param uid Security id of for this object.
-     * @throws DBException
-     */
-    public ForumThread(int uid)
-        throws DBException {
-        super(uid);
-    }
 
     /**
      * Extends the usual add method to fetch a next number field
Index: ForumTextDef.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumTextDef.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumTextDef.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumTextDef.java -u -r1.1 -r1.2
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumTextDef.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumTextDef.java
@@ -1,10 +1,10 @@
 package com.jcorporate.eforum.dbobj;
 
+import java.util.Vector;
+
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
-
-import java.util.Vector;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 
 /**
  * This is a data object stores a static list of combined CSS text
@@ -37,26 +37,17 @@
     } /* ForumTextDef() */
 
     /**
-     * Standard constructor
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @param uid the UID of the user
-     * @throws DBException upon error
-     */
-    public ForumTextDef(int uid) throws DBException {
-        super(uid);
-    }
-
-    /**
-     * Standard constructor
-     * for using DBObjects within Controllers.  Initializes based upon the current
-     * user and the requested db. 
-     *
-     * @param request - The request context handed to you by the framework.
-     * @throws DBException upon error
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumTextDef(RequestContext request) throws DBException {
-        super(request);
+    public ForumTextDef(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
     /** 
Index: ForumMessage.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMessage.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMessage.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMessage.java -u -r1.18 -r1.19
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMessage.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMessage.java
@@ -31,12 +31,12 @@
 import com.jcorporate.eforum.search.SearchIndexerFactory;
 import com.jcorporate.expresso.core.db.DBException;
 import com.jcorporate.expresso.core.db.exception.DBRecordNotFoundException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.misc.ByteArrayDataSource;
 import com.jcorporate.expresso.core.misc.ConfigManager;
 import com.jcorporate.expresso.core.misc.DateTime;
 import com.jcorporate.expresso.core.misc.EventHandler;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 import com.jcorporate.expresso.core.security.User;
 import com.jcorporate.expresso.core.security.UserInfo;
 import com.jcorporate.expresso.kernel.util.FastStringBuffer;
@@ -102,29 +102,20 @@
         super();
     } /* ForumMessage() */
 
-
     /**
-     * Standard constructor, 
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @param uid the owning User's uid
-     * @throws DBException
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumMessage(int uid) throws DBException {
-        super(uid);
+    public ForumMessage(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
-    /**
-     * Standard constructor
-     * for using DBObjects within Controllers.  Initializes based upon the current
-     * user and the requested db. [Of course this can be modified later]
-     *
-     * @param request - The controller request handed to you by the framework.
-     * @throws DBException upon error
-     */
-    public ForumMessage(RequestContext request) throws DBException {
-        super(request);
-    }
 
     /**
      * Extends the usual add method to fetch a next number field
Index: ForumSignature.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSignature.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSignature.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSignature.java -u -r1.5 -r1.6
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSignature.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSignature.java
@@ -2,11 +2,11 @@
 
 import org.apache.log4j.Logger;
 
-import com.jcorporate.expresso.core.dataobjects.Securable;
 import com.jcorporate.expresso.core.db.DBConnection;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
+import com.jcorporate.expresso.core.security.SuperUser;
 
 
 /**
@@ -50,27 +50,17 @@
     } /* ForumSignature(DBConnection) */
 
     /**
-     * Standard constructor, 
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @throws DBException upon error
-     * @param uid The User's UID
-     */
-    public ForumSignature(int uid) throws DBException 
-    {
-        super(uid);
-    }
-
-    /**
-     * Standard constructor, 
-     * Preferred method of initialization inside an Expresso controller
-     * @param requestContext the request context
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @throws DBException upon error
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumSignature(RequestContext requestContext) throws DBException 
-    {
-        super(requestContext);
+    public ForumSignature(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
     /**
@@ -114,7 +104,7 @@
             "(( Remember The Hollywood Principle: \"Don't call us, we'ill call you!\" ))\n";
         
         // Set up a personal signature for the't  Expresso Administrator 
-        forumSignature.setField( FLD_UID, Securable.SYSTEM_ACCOUNT );
+        forumSignature.setField( FLD_UID, SuperUser.SYSTEM_UID );
         forumSignature.setField( FLD_SIGNATURE_TEXT, sig );
         forumSignature.addIfNeeded();
     }
Index: ForumMonoTextDef.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMonoTextDef.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMonoTextDef.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMonoTextDef.java -u -r1.4 -r1.5
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMonoTextDef.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMonoTextDef.java
@@ -1,10 +1,10 @@
 package com.jcorporate.eforum.dbobj;
 
+import java.util.Vector;
+
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
-
-import java.util.Vector;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 
 /**
  * This is a data object stores a static list of mono-spaced CSS text
@@ -36,26 +36,17 @@
     } /* ForumMonoTextDef() */
 
     /**
-     * Standard constructor
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @param uid the UID of the user
-     * @throws DBException upon error
-     */
-    public ForumMonoTextDef(int uid) throws DBException {
-        super(uid);
-    }
-
-    /**
-     * Standard constructor
-     * for using DBObjects within Controllers.  Initializes based upon the current
-     * user and the requested db. 
-     *
-     * @param request - The request context handed to you by the framework.
-     * @throws DBException upon error
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumMonoTextDef(RequestContext request) throws DBException {
-        super(request);
+    public ForumMonoTextDef(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
     /** 
Index: ForumGroup.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumGroup.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumGroup.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumGroup.java -u -r1.14 -r1.15
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumGroup.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumGroup.java
@@ -1,19 +1,19 @@
 package com.jcorporate.eforum.dbobj;
 
+import java.util.Iterator;
+import java.util.List;
+
 import com.jcorporate.expresso.core.cache.CacheException;
 import com.jcorporate.expresso.core.cache.CacheManager;
 import com.jcorporate.expresso.core.dataobjects.DataObjectMetaData;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.dbobj.ValidValue;
 import com.jcorporate.expresso.core.misc.DateTime;
 import com.jcorporate.expresso.core.misc.StringUtil;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 import com.jcorporate.expresso.core.security.User;
 
-import java.util.Iterator;
-import java.util.List;
-
 
 /**
  * ForumGroup defines a collection of forum message threads (or
@@ -73,29 +73,17 @@
     } /* ForumGroup() */
 
     /**
-     * Standard constructor 
-     * preferred method of initialization.
-     * @param uid the owning user's uid
-     * @throws DBException
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumGroup(int uid)
-        throws DBException {
-        super(uid);
-        construct();
-    }
-
-    /**
-     * Standard constructor 
-     * for using DBObjects within Controllers.  Initializes based upon the current
-     * user and the requested db. [Of course this can be modified later]
-     *
-     * @param request - The controller request handed to you by the framework.
-     * @throws DBException
-     */
-    public ForumGroup(RequestContext request)
-        throws DBException {
-        super(request);
-        construct();
+    public ForumGroup(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
     /**
Index: ForumVarTextDef.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumVarTextDef.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumVarTextDef.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumVarTextDef.java -u -r1.5 -r1.6
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumVarTextDef.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumVarTextDef.java
@@ -3,8 +3,8 @@
 import java.util.Vector;
 
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 
 /**
  * This is a data object stores a static list of proportional spaced
@@ -36,26 +36,17 @@
     } /* ForumVarTextDef() */
 
     /**
-     * Standard constructor
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @param uid the UID of the user
-     * @throws DBException upon error
-     */
-    public ForumVarTextDef(int uid) throws DBException {
-        super(uid);
-    }
-
-    /**
-     * Standard constructor
-     * for using DBObjects within Controllers.  Initializes based upon the current
-     * user and the requested db. 
-     *
-     * @param request - The request context handed to you by the framework.
-     * @throws DBException upon error
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumVarTextDef(RequestContext request) throws DBException {
-        super(request);
+    public ForumVarTextDef(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
     /** 
Index: ForumOptions.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumOptions.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumOptions.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumOptions.java -u -r1.8 -r1.9
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumOptions.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumOptions.java
@@ -6,10 +6,10 @@
 
 import com.jcorporate.expresso.core.dataobjects.DataObjectMetaData;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.dbobj.ValidValue;
 import com.jcorporate.expresso.core.misc.StringUtil;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 
 
 /**
@@ -58,6 +58,8 @@
     /** Data field name constant */
     public static final String  FLD_BANNER_TEXT_FONT_ID = "BannerTextFont";
     /** Data field name constant */
+    public static final String  FLD_SKIN_LAF_ID         = "SkinLAF";
+    /** Data field name constant */
     // public static final String       FLD_ = "";
 
     //                                                          01234567890123456789
@@ -80,26 +82,17 @@
     } /* ForumOptions() */
 
     /**
-     * Standard constructor
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @param uid the UID of the user
-     * @throws DBException upon error
-     */
-    public ForumOptions(int uid) throws DBException {
-        super(uid);
-    }
-
-    /**
-     * Standard constructor
-     * for using DBObjects within Controllers.  Initializes based upon the current
-     * user and the requested db. 
-     *
-     * @param request - The request context handed to you by the framework.
-     * @throws DBException upon error
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumOptions(RequestContext request) throws DBException {
-        super(request);
+    public ForumOptions(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
     /**
@@ -222,6 +215,7 @@
         addField(FLD_DISPLAY_VARIABLE,    "boolean",  0,   false, "FN_DisplayVariable");
         addField(FLD_HEADER_TEXT_FONT_ID, "int",      0,   false, "FN_Header_Text_Font_Id");
         addField(FLD_BANNER_TEXT_FONT_ID, "int",      0,   false, "FN_Banner_Text_Font_Id");
+        addField(FLD_SKIN_LAF_ID,         "int",      0,   false, "FN_Skin_LAF_Id");
 
         // addField(FLD_,       "int",      0,   false, "FN_");
 
Index: ForumMail.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMail.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMail.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMail.java -u -r1.6 -r1.7
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMail.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumMail.java
@@ -1,8 +1,8 @@
 package com.jcorporate.eforum.dbobj;
 
-import com.jcorporate.expresso.core.controller.ControllerRequest;
 import com.jcorporate.expresso.core.db.DBException;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 
 
 /**
@@ -30,26 +30,19 @@
     } /* ForumMail() */
 
     /**
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @param uid the User's UID
-     * @throws DBException upon error
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumMail(int uid)
-        throws DBException {
-        super(uid);
-    }
-    /**
-     * For using DBObjects within Controllers.  Initializes based upon the current
-     * user and the requested db. [Of course this can be modified later]
-     *
-     * @param request - The controller request handed to you by the framework.
-     * @throws DBException upon error
-     */
-    public ForumMail(ControllerRequest request)
-        throws DBException {
-        super(request);
+    public ForumMail(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
+
     /**
      * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
      * @throws DBException upon error
Index: ForumAttachmentMessage.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumAttachmentMessage.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumAttachmentMessage.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumAttachmentMessage.java -u -r1.6 -r1.7
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumAttachmentMessage.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumAttachmentMessage.java
@@ -4,8 +4,8 @@
 
 import com.jcorporate.expresso.core.db.DBConnection;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 
 
 /**
@@ -45,27 +45,17 @@
     } /* ForumAttachmentMessage(DBConnection) */
 
     /**
-     * Standard constructor, 
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @throws DBException upon error
-     * @param uid The User's UID
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumAttachmentMessage(int uid) throws DBException 
-    {
-        super(uid);
-    }
-
-    /**
-     * Standard constructor, 
-     * Preferred method of initialization inside an Expresso controller
-     * @param requestContext the request context
-     * @throws DBException upon error
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     */
-    public ForumAttachmentMessage(RequestContext requestContext) throws DBException 
-    {
-        super(requestContext);
+    public ForumAttachmentMessage(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
     /**
Index: DefaultIndexProgressModel.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/DefaultIndexProgressModel.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/DefaultIndexProgressModel.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/DefaultIndexProgressModel.java -u -r1.10 -r1.11
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/DefaultIndexProgressModel.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/DefaultIndexProgressModel.java
@@ -25,10 +25,10 @@
 import com.jcorporate.eforum.search.IndexProgressModel;
 import com.jcorporate.eforum.search.IndexStatus;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.dbobj.ValidValue;
 import com.jcorporate.expresso.core.misc.DateTime;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 
 
 /**
@@ -41,7 +41,7 @@
  *
  * <p>
  * This implementation stores the information centrally inside a database using
- * a DBObject. In�this way every client can access the persistent data safely
+ * a DBObject. In this way every client can access the persistent data safely
  * and securely.
  * </p>
  * <br><br>
@@ -82,33 +82,19 @@
     }
 
     /**
-     * Preferred method of initialization.
-     *
-     * @param uid the owning User's uid
-     *
-     * @throws DBException
-     *
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public DefaultIndexProgressModel(int uid) throws DBException
-    {
-        super(uid);
+    public DefaultIndexProgressModel(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
-    /**
-     * For using DBObjects within Controllers.  Initializes based upon the
-     * current user and the requested db. [Of course this can be modified
-     * later]
-     *
-     * @param request - The controller request handed to you by the framework.
-     *
-     * @throws DBException upon error
-     */
-    public DefaultIndexProgressModel(RequestContext request)
-        throws DBException
-    {
-        super(request);
-    }
 
     /**
      * Sets the Count, the number of items to be indexed
Index: ForumSubscribe.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSubscribe.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSubscribe.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSubscribe.java -u -r1.16 -r1.17
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSubscribe.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSubscribe.java
@@ -6,12 +6,13 @@
 
 import com.jcorporate.expresso.core.controller.ControllerRequest;
 import com.jcorporate.expresso.core.dataobjects.DataObjectMetaData;
-import com.jcorporate.expresso.core.dataobjects.Securable;
 import com.jcorporate.expresso.core.db.DBConnection;
 import com.jcorporate.expresso.core.db.DBException;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.misc.EventHandler;
 import com.jcorporate.expresso.core.misc.StringUtil;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
+import com.jcorporate.expresso.core.security.SuperUser;
 import com.jcorporate.expresso.core.security.User;
 import com.jcorporate.expresso.core.security.UserListener;
 
@@ -98,7 +99,8 @@
     //
     static {
         try {
-            User.addListener(new ForumSubscribe(Securable.SYSTEM_ACCOUNT));
+            ForumSubscribe sub = new ForumSubscribe( SuperUser.INSTANCE );
+            User.addListener( sub );
         }
         catch (DBException ex) {
             log.error("Error adding user listener", ex);
@@ -114,6 +116,20 @@
     } /* ForumSubscribe() */
 
     /**
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
+     */
+    public ForumSubscribe(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
+    }
+
+    /**
      * @param myConnection the local DBConnection
      * @throws DBException upon error
      */
@@ -122,16 +138,6 @@
     } /* ForumSubscribe(DBConnection) */
 
     /**
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @throws DBException upon error
-     * @param uid The User's UID
-     */
-    public ForumSubscribe(int uid) throws DBException {
-        super(uid);
-    }
-
-    /**
      * For using DBObjects within Controllers.  Initializes based upon the current
      * user and the requested db. [Of course this can be modified later]
      *
@@ -294,8 +300,7 @@
     {
         ForumSubscribe subscriber = new ForumSubscribe(); 
         subscriber.setDataContext(getDataContext());
-        // FIXME: system administrator should be constant
-        subscriber.setField( FLD_UID, 3 /*FIXME: Expresso Admin uid?*/);
+        subscriber.setField( FLD_UID, SuperUser.SYSTEM_UID );
         subscriber.setField( FLD_MODERATOR, "Y" );
         subscriber.setField( FLD_FORUM_ADMIN, "Y" );
         subscriber.setField( FLD_UPLOAD_ATTACHMENTS, "Y" );
@@ -358,7 +363,9 @@
                 log.debug("Received delete User notification");
             }
 
-            ForumSubscribe forumSubscribe = new ForumSubscribe(Securable.SYSTEM_ACCOUNT);
+            
+            ForumSubscribe forumSubscribe = new ForumSubscribe();
+            forumSubscribe.setRequestingUser( SuperUser.INSTANCE );
             forumSubscribe.setField(FLD_UID, user.getUid());
             forumSubscribe.setDataContext(user.getDataContext());
             forumSubscribe.deleteAll();
Index: ForumSecurity.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSecurity.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSecurity.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSecurity.java -u -r1.11 -r1.12
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSecurity.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumSecurity.java
@@ -14,6 +14,8 @@
 import com.jcorporate.expresso.core.db.DBException;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.dbobj.ValidValue;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
+import com.jcorporate.expresso.core.security.SuperUser;
 import com.jcorporate.expresso.services.dbobj.UserGroup;
 
 
@@ -55,17 +57,20 @@
 
 
     /**
-     * Standard constructor
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @param uid the UID of the user
-     * @throws DBException upon error
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumSecurity(int uid)
-        throws DBException {
-        super(uid);
+    public ForumSecurity(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
 
+
     /**
      * Standard constructor
      * for using DBObjects within Controllers.  Initializes based upon the current
@@ -87,7 +92,7 @@
      */
     protected void checkAllRefs() throws DBException 
     {
-        checkRef(GROUPNAME, new UserGroup(SecuredDBObject.SYSTEM_ACCOUNT),
+        checkRef(GROUPNAME, new UserGroup(SuperUser.INSTANCE),
                  "Invalid " + getString(getMetaData().getDescription(GROUPNAME)));
     } /* checkAllRefs() */
 
Index: ForumAttachment.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumAttachment.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumAttachment.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumAttachment.java -u -r1.8 -r1.9
--- src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumAttachment.java
+++ src/WEB-INF/src/com/jcorporate/eforum/dbobj/ForumAttachment.java
@@ -6,7 +6,7 @@
 
 import com.jcorporate.expresso.core.db.DBConnection;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 import com.jcorporate.expresso.core.security.User;
 import com.jcorporate.expresso.services.dbobj.MediaDBObject;
 import com.jcorporate.expresso.services.dbobj.MimeTypes;
@@ -74,28 +74,19 @@
     } /* ForumAttachment(DBConnection) */
 
     /**
-     * Preferred method of initialization.
-     * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
-     * @throws DBException upon error
-     * @param uid The User's UID
-     */
-    public ForumAttachment(int uid) throws DBException 
-    {
-        super(uid);
-    }
-
-    /**
-     * For using DBObjects within Controllers.  Initializes based upon the current
-     * user and the requested db. [Of course this can be modified later]
-     *
-     * @param request - The controller request handed to you by the framework.
-     * @throws DBException
+     * Standard constructor create a dbobject that with the user security 
+     * credentials as well.
+     * 
+     * @param userSecurityContext ReadOnlyUser.  You can often get this
+     * from RequestRegistry
+     * @throws DBException upon construction error.
+     * 
+     * @see SecuredDBObject#SecuredDBObject(ReadOnlyUser)
      */
-    public ForumAttachment(RequestContext request)
-        throws DBException {
-        super(request);
+    public ForumAttachment(ReadOnlyUser userSecurityContext) throws DBException {
+        super( userSecurityContext );
     }
-
+    
     /**
      * Intercept the insertion call to set explicitly the date/time modification fields 
      */
Index: menu-config.jsp
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/expresso/components/eforum/javascript/menu-config.jsp,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lsrc/expresso/components/eforum/javascript/menu-config.jsp -Lsrc/expresso/components/eforum/javascript/menu-config.jsp -u -r1.1 -r1.2
--- src/expresso/components/eforum/javascript/menu-config.jsp
+++ src/expresso/components/eforum/javascript/menu-config.jsp
@@ -26,6 +26,8 @@
 
 <c:url var="triangleGifUrl" value="/expresso/components/eforum/javascript/jimmenu-v5.3/tri.gif" />
 <c:url var="triangleDownGifUrl" value="/expresso/components/eforum/javascript/jimmenu-v5.3/tridown.gif" />
+
+forumActions = '<bean:message key="ForumActions" schema="com.jcorporate.eforum.ForumSchema"/>'
 
 function createTopNavigationMenu()
 {
@@ -39,7 +41,15 @@
 
 //Sub Menu for 2nd Main Menu Item ("web building"):
 	menus[1] = new menu(150, "vertical", 0, 0, -5, -5, "#CACAFF", "#0000A0", "Verdana,Helvetica", 9, "bold", 
-		"bold", "black", "white", 1, "gray", 2, 62, false, true, false, true, 6, true, 4, 4, "black");
+		"bold", "black", "white", 1, "gray", 2, 62, false, true, false, true, 6, true, 4, 4, "black");
+	menus[1].addItem('<c:url value="/eforum/Browse.do" />', "", 22, "left", "Browse Forums", 0);
+	menus[1].addItem('<c:url value="/eforum/Personalise.do?state=promptEditOptionsForm" />', "", 22, "left", "Personalisation", 0);
+	menus[1].addItem('<c:url value="/eforum/Search.do?state=indexForum" />', "", 22, "left", '<bean:message key="IndexForumMessagesTest"/>', 0);
+// TODO: Taglib IF role='Admin'
+	menus[1].addItem('<c:url value="/eforum/Search.do?state=scheduleIndexForum"  />', "", 22, "left", '<bean:message key="IndexForumMessagesAsync"/>', 0);
+	menus[1].addItem('<c:url value="/eforum/Search.do?state=cancelIndexing"  />', "", 22, "left", '<bean:message key="CancelIndexForumMessages"/>', 0);
+	menus[1].addItem('<c:url value="/eforum/Search.do?state=resetIndexing"  />', "", 22, "left", '<bean:message key="ResetIndexStatus"/>', 0);
+// TODO: Taglib EndIf	
 	menus[1].addItem("http://www.dynamicdrive.com", "", 22, "left", "Dynamic Drive", 0);
 	menus[1].addItem("http://www.javascriptkit.com", "", 22, "left", "JavaScript Kit", 0);
 	menus[1].addItem("http://www.codingforums.com", "", 22, "left", "Coding Forums", 0);
Index: SendNotice.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/job/SendNotice.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/job/SendNotice.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/job/SendNotice.java -u -r1.9 -r1.10
--- src/WEB-INF/src/com/jcorporate/eforum/job/SendNotice.java
+++ src/WEB-INF/src/com/jcorporate/eforum/job/SendNotice.java
@@ -10,8 +10,8 @@
 
 import com.jcorporate.eforum.dbobj.ForumSubscribe;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
 import com.jcorporate.expresso.core.job.Job;
+import com.jcorporate.expresso.core.security.SuperUser;
 import com.jcorporate.expresso.core.security.User;
 import com.jcorporate.expresso.services.dbobj.Event;
 import com.jcorporate.expresso.services.dbobj.GroupMembers;
@@ -92,7 +92,7 @@
             String groupName = jq.getParamValue("GroupName");
             String noticeType = jq.getParamValue("NoticeType");
             StringBuffer noticeTextBuffer = new StringBuffer();
-            JobQueueParam jqp = new JobQueueParam(SecuredDBObject.SYSTEM_ACCOUNT);
+            JobQueueParam jqp = new JobQueueParam(SuperUser.INSTANCE);
             jqp.setDBName(this.getDataContext());
             jqp.setField("JobNumber", jq.getField("JobNumber"));
             jqp.setField("ParamCode", "NoticeText%");
@@ -120,7 +120,8 @@
             }
 
             Vector v = new Vector(10);
-            ForumSubscribe sl = new ForumSubscribe(SecuredDBObject.SYSTEM_ACCOUNT);
+            ForumSubscribe sl = new ForumSubscribe();
+            sl.setRequestingUser( SuperUser.INSTANCE );
             sl.setDBName(this.getDataContext());
 
             /* All Members of a particular Security group */
@@ -131,7 +132,7 @@
                 User oneUser = new User();
                 oneUser.setDBName(this.getDataContext());
 
-                GroupMembers gl = new GroupMembers(SecuredDBObject.SYSTEM_ACCOUNT);
+                GroupMembers gl = new GroupMembers(SuperUser.INSTANCE);
                 GroupMembers oneMember = null;
                 gl.setField("GroupName", groupName);
                 gl.setDBName(this.getDataContext());
Index: IndexMessages.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/job/IndexMessages.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/job/IndexMessages.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/job/IndexMessages.java -u -r1.9 -r1.10
--- src/WEB-INF/src/com/jcorporate/eforum/job/IndexMessages.java
+++ src/WEB-INF/src/com/jcorporate/eforum/job/IndexMessages.java
@@ -26,6 +26,8 @@
 import com.jcorporate.expresso.core.controller.ControllerRequest;
 import com.jcorporate.expresso.core.db.DBException;
 import com.jcorporate.expresso.core.job.Job;
+import com.jcorporate.expresso.core.security.SuperUser;
+import com.jcorporate.expresso.core.security.User;
 import com.jcorporate.expresso.services.dbobj.Setup;
 import org.apache.log4j.Logger;
 
@@ -80,8 +82,8 @@
             }
 
             request.setDBName( getDataContext() );
-            request.setUser( "Admin" );		// FIXME:  *CHEAT MODE*
-            request.setUid( 3 );
+            request.setUser( User.ADMIN_USER );		
+            request.setUid( User.getAdminId() );
             request.setLocale( Locale.getDefault() );
 
             if (ForumSchema.class.getClassLoader() != null) {
@@ -105,7 +107,7 @@
             // Set up the index directory path
             indexer.setIndexerPath( indexerPath );
             // Ask the indexer plug-in to index all the forum messages
-            indexer.indexMessages( request );
+            indexer.indexMessages( request.getRequestingUser() );
 
             finish( "Successfully finishing indexing the forum messages in database:`"+
                     getDataContext()+"'" );
Index: SearchIndexer.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/WEB-INF/src/com/jcorporate/eforum/search/SearchIndexer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -Lsrc/WEB-INF/src/com/jcorporate/eforum/search/SearchIndexer.java -Lsrc/WEB-INF/src/com/jcorporate/eforum/search/SearchIndexer.java -u -r1.9 -r1.10
--- src/WEB-INF/src/com/jcorporate/eforum/search/SearchIndexer.java
+++ src/WEB-INF/src/com/jcorporate/eforum/search/SearchIndexer.java
@@ -21,8 +21,9 @@
 
 import com.jcorporate.eforum.ForumSchema;
 import com.jcorporate.eforum.dbobj.ForumMessage;
+import com.jcorporate.expresso.core.controller.ExpressoRequest;
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.dbobj.RequestContext;
+import com.jcorporate.expresso.core.security.ReadOnlyUser;
 
 
 /**
@@ -120,13 +121,12 @@
      * This methods indexes the entire forum messages. The plug-in should
      * retrieve all the forum messages and generate an index and then return
      *
-     * @param request request context which contains the database context that
-     *        specifies where the forum messages are stored.
+     * @param secureUser the security user
      *
      * @throws IOException thrown if an I/O exception occurs
      * @throws DBException thrown if a database exception occurs
      */
-    public void indexMessages(RequestContext request) throws Exception;
+    public void indexMessages( ReadOnlyUser secureUser ) throws Exception;
 
     /**
      * A <em>hook</em> method to register additional resources Controllers as
@@ -202,7 +202,7 @@
      *
      * @see SearchResult
      */
-    public List searchMessages(RequestContext request, QueryContext query)
+    public List searchMessages( ExpressoRequest request, QueryContext query)
         throws Exception;
 
     /**
Index: editOptions.jsp
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/expresso/components/eforum/jsp/editOptions.jsp,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lsrc/expresso/components/eforum/jsp/editOptions.jsp -Lsrc/expresso/components/eforum/jsp/editOptions.jsp -u -r1.4 -r1.5
--- src/expresso/components/eforum/jsp/editOptions.jsp
+++ src/expresso/components/eforum/jsp/editOptions.jsp
@@ -156,6 +156,14 @@
           <td><bean:message key="editOptions.wordWrapLength" /></td>
           <td><expresso:InputTag name="wordWrapLength" /></td>
         </tr>
+        <tr>
+          <td><bean:message key="editOptions.headerTextFont" /></td>
+          <td><expresso:InputTag name="headerTextFont" /></td>
+        </tr>
+        <tr>
+          <td><bean:message key="editOptions.bannerTextFont" /></td>
+          <td><expresso:InputTag name="bannerTextFont" /></td>
+        </tr>
         <%--
         <tr>
           <td><bean:message key="editOptions." /></td>
Index: browseMessages10.jsp
===================================================================
RCS file: /home/javacorp/.cvs/expresso/eforum/src/expresso/components/eforum/jsp/browseMessages10.jsp,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lsrc/expresso/components/eforum/jsp/browseMessages10.jsp -Lsrc/expresso/components/eforum/jsp/browseMessages10.jsp -u -r1.2 -r1.3
--- src/expresso/components/eforum/jsp/browseMessages10.jsp
+++ src/expresso/components/eforum/jsp/browseMessages10.jsp
@@ -146,7 +146,7 @@
         </tr>
         <tr class="<%=cssClass%>">
           <td colspan="3" class="<%=cssClass%>">
-             <span class="eforum-message-variable" >
+             <span class='<c:out value="${forumProfile.map.messageTextFontCss}" />' >
              <c:out value="${eachMessage.attributes[CONST_Body]}" escapeXml="false" />
              </span>
           </td>
@@ -226,7 +226,7 @@
                 <tr class="<%=cssClass%>">
                   <td bgcolor="white" width='<c:out value="${marginWidth}" />'>&nbsp;</td>
                   <td colspan="3" class="<%=cssClass%>">
-                     <span class="eforum-message-variable" >
+                     <span class='<c:out value="${forumProfile.map.messageTextFontCss}" />' >
                      <c:out value="${nested1.attributes[CONST_Body]}" escapeXml="false" />
                      </span>
                   </td>
@@ -308,7 +308,7 @@
                   <tr class="<%=cssClass%>">
                     <td bgcolor="white" width='<c:out value="${marginWidth}" />'>&nbsp;</td>
                     <td colspan="3" class="<%=cssClass%>">
-                       <span class="eforum-message-variable" >
+                       <span class='<c:out value="${forumProfile.map.messageTextFontCss}" />' >
                        <c:out value="${nested2.attributes[CONST_Body]}" escapeXml="false" />
                        </span>
                     </td>
@@ -388,7 +388,7 @@
                     <tr class="<%=cssClass%>">
                       <td bgcolor="white" width='<c:out value="${marginWidth}" />'>&nbsp;</td>
                       <td colspan="3" class="<%=cssClass%>">
-                         <span class="eforum-message-variable" >
+                         <span class='<c:out value="${forumProfile.map.messageTextFontCss}" />' >
                          <c:out value="${nested3.attributes[CONST_Body]}" escapeXml="false" />
                          </span>
                       </td>
@@ -468,7 +468,7 @@
                       <tr class="<%=cssClass%>">
                         <td bgcolor="white" width='<c:out value="${marginWidth}" />'>&nbsp;</td>
                         <td colspan="3" class="<%=cssClass%>">
-                           <span class="eforum-message-variable" >
+                           <span class='<c:out value="${forumProfile.map.messageTextFontCss}" />' >
                            <c:out value="${nested4.attributes[CONST_Body]}" escapeXml="false" />
                            </span>
                         </td>
@@ -548,7 +548,7 @@
                         <tr class="<%=cssClass%>">
                           <td bgcolor="white" width='<c:out value="${marginWidth}" />'>&nbsp;</td>
                           <td colspan="3" class="<%=cssClass%>">
-                             <span class="eforum-message-variable" >
+                             <span class='<c:out value="${forumProfile.map.messageTextFontCss}" />' >
                              <c:out value="${nested5.attributes[CONST_Body]}" escapeXml="false" />
                              </span>
                           </td>
@@ -629,7 +629,7 @@
                           <tr class="<%=cssClass%>">
                             <td bgcolor="white" width='<c:out value="${marginWidth}" />'>&nbsp;</td>
                             <td colspan="3" class="<%=cssClass%>">
-                               <span class="eforum-message-variable" >
+                               <span class='<c:out value="${forumProfile.map.messageTextFontCss}" />' >
                                <c:out value="${nested6.attributes[CONST_Body]}" escapeXml="false" />
                                </span>
                             </td>
@@ -710,7 +710,7 @@
                             <tr class="<%=cssClass%>">
                               <td bgcolor="white" width='<c:out value="${marginWidth}" />'>&nbsp;</td>
                               <td colspan="3" class="<%=cssClass%>">
-                                 <span class="eforum-message-variable" >
+                                 <span class='<c:out value="${forumProfile.map.messageTextFontCss}" />' >
                                  <c:out value="${nested7.attributes[CONST_Body]}" escapeXml="false" />
                                  </span>
                               </td>
@@ -790,7 +790,7 @@
                               <tr class="<%=cssClass%>">
                                 <td bgcolor="white" width='<c:out value="${marginWidth}" />'>&nbsp;</td>
                                 <td colspan="3" class="<%=cssClass%>">
-                                   <span class="eforum-message-variable" >
+                                   <span class='<c:out value="${forumProfile.map.messageTextFontCss}" />' >
                                    <c:out value="${nested8.attributes[CONST_Body]}" escapeXml="false" />
                                    </span>
                                 </td>
@@ -870,7 +870,7 @@
                                 <tr class="<%=cssClass%>">
                                   <td bgcolor="white" width='<c:out value="${marginWidth}" />'>&nbsp;</td>
                                   <td colspan="3" class="<%=cssClass%>">
-                                     <span class="eforum-message-variable" >
+                                     <span class='<c:out value="${forumProfile.map.messageTextFontCss}" />' >
                                      <c:out value="${nested9.attributes[CONST_Body]}" escapeXml="false" />
                                      </span>
                                   </td>


More information about the cvs mailing list