[cvs] expresso commit by lhamel: deprecate User.getGroups() in favor of

JCorporate Ltd jcorp at jcorporate.com
Fri Dec 10 01:02:15 UTC 2004


Log Message:
-----------
deprecate User.getGroups() in favor of getGroupsList()

Modified Files:
--------------
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller:
        DBController.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj:
        SecuredDBObject.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/job:
        Job.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/security:
        MapBasedUserInfo.java
        User.java
        UserInfo.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/utility:
        DBToolTests.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/controller:
        Download.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/dbobj:
        SingleDBUserInfo.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/ldap:
        UserLDAP.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/xml/dbobj:
        ControllerXSLMap.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller:
        ErrorHandler.java
        QueueJob.java
    expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj:
        DefaultUserInfo.java

Revision Data
-------------
Index: ControllerXSLMap.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/xml/dbobj/ControllerXSLMap.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/ext/xml/dbobj/ControllerXSLMap.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/ext/xml/dbobj/ControllerXSLMap.java -u -r1.14 -r1.15
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/xml/dbobj/ControllerXSLMap.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/xml/dbobj/ControllerXSLMap.java
@@ -77,8 +77,8 @@
 import org.apache.oro.text.regex.Perl5Compiler;
 import org.apache.oro.text.regex.Perl5Matcher;
 
-import java.util.Enumeration;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Vector;
 
@@ -221,7 +221,7 @@
         //oneUser.retrieve();
         oneUser.find();
 
-        Vector groupList = oneUser.getGroups();
+        List groupList = oneUser.getGroupsList();
         ControllerXSLMap oneMap = null;
         ControllerXSLMap mapList = new ControllerXSLMap();
         /* wlo: since we get the UserAgent id as parameter, we
@@ -237,8 +237,8 @@
 
             String oneGroup = null;
 
-            for (Enumeration eg = groupList.elements(); eg.hasMoreElements();) {
-                oneGroup = (String) eg.nextElement();
+            for (Iterator iterator = groupList.iterator(); iterator.hasNext();) {
+                oneGroup = (String) iterator.next();
 
                 if (oneGroup.equals(oneMap.getField("GroupName"))) {
                     String controllerClass = oneMap.getField("ControllerClass");
@@ -300,7 +300,7 @@
             throw new DBException("User not found: '" + userName + "'");
         }
 
-        Vector groupList = oneUser.getGroups();
+        List groupList = oneUser.getGroupsList();
         ControllerXSLMap oneMap = null;
         ControllerXSLMap mapList = new ControllerXSLMap();
         mapList.setField("UserAgent", ua.getField("UserAgent"));
@@ -313,8 +313,8 @@
 
             String oneGroup = null;
 
-            for (Enumeration eg = groupList.elements(); eg.hasMoreElements();) {
-                oneGroup = (String) eg.nextElement();
+            for (Iterator iterator = groupList.iterator(); iterator.hasNext();) {
+                oneGroup = (String) iterator.next();
 
                 if (oneGroup.equals(oneMap.getField("GroupName"))) {
                     String controllerClass = oneMap.getField("ControllerClass");
Index: QueueJob.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/QueueJob.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/QueueJob.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/QueueJob.java -u -r1.17 -r1.18
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/QueueJob.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/QueueJob.java
@@ -99,6 +99,7 @@
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.Vector;
+import java.util.List;
 
 
 /**
@@ -483,12 +484,13 @@
             myUser.setUid(uid);
             myUser.retrieve();
 
-            Vector myGroups = myUser.getGroups();
+            List myGroups = myUser.getGroupsList();
             JobSecurity js = new JobSecurity();
             js.setDataContext(params.getDataContext());
 
-            for (Enumeration eg = myGroups.elements(); eg.hasMoreElements();) {
-                js.setField("GroupName", (String) eg.nextElement());
+            for (Iterator iterator = myGroups.iterator(); iterator.hasNext();) {
+                String oneGroup = (String) iterator.next();
+                js.setField("GroupName", oneGroup);
                 js.setField("JobClass", jobClass);
 
                 if (js.find()) {
Index: ErrorHandler.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ErrorHandler.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ErrorHandler.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ErrorHandler.java -u -r1.15 -r1.16
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ErrorHandler.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/controller/ErrorHandler.java
@@ -261,7 +261,7 @@
                     }
 
                     EMailSender ems = new EMailSender();
-                    ems.setDBName(params.getDataContext());
+                    ems.setDataContext(params.getDataContext());
                     ems.send(oneRecipient, getAttribString("message", params),
                             bigString.toString());
                 }
Index: DBController.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/DBController.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/DBController.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/DBController.java -u -r1.37 -r1.38
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/DBController.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/controller/DBController.java
@@ -85,9 +85,9 @@
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Stack;
 import java.util.StringTokenizer;
-import java.util.Vector;
 
 
 /**
@@ -319,7 +319,7 @@
 
 
         //Group the user's groups
-        Vector usersGroups = thisUser.getGroups();
+        List usersGroups = thisUser.getGroupsList();
         int groupSize = usersGroups.size();
 
         //Precalc to save time
Index: SecuredDBObject.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/SecuredDBObject.java,v
retrieving revision 1.57
retrieving revision 1.58
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/SecuredDBObject.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/SecuredDBObject.java -u -r1.57 -r1.58
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/SecuredDBObject.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/SecuredDBObject.java
@@ -83,9 +83,8 @@
 import org.apache.log4j.Logger;
 
 import java.util.ArrayList;
-import java.util.Enumeration;
 import java.util.Iterator;
-import java.util.Vector;
+import java.util.List;
 
 
 /**
@@ -463,7 +462,7 @@
                 u.setUid(uid);
                 u.retrieve();
 
-                Vector groups = u.getGroups();
+                List groups = u.getGroupsList();
 
                 if (log.isDebugEnabled()) {
                     log.debug("User '" + u.getLoginName() +
@@ -490,8 +489,9 @@
                 String oneGroupName = null;
 
                 FastStringBuffer currentSecurity = new FastStringBuffer(6);
-                for (Enumeration e = groups.elements(); e.hasMoreElements();) {
-                    oneGroupName = (String) e.nextElement();
+
+                for (Iterator iterator = groups.iterator(); iterator.hasNext();) {
+                    oneGroupName = (String) iterator.next();
 
                     if (log.isDebugEnabled()) {
                         log.debug("User '" + u.getLoginName() +
Index: Job.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/job/Job.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/job/Job.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/job/Job.java -u -r1.34 -r1.35
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/job/Job.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/job/Job.java
@@ -478,7 +478,7 @@
                 oneRecipient = stk.nextToken();
 
                 EMailSender ems = new EMailSender();
-                ems.setDBName(getDataContext());
+                ems.setDataContext(getDataContext());
                 ems.send(oneRecipient, subject, bigString);
             }
         } catch (Exception ie) {
Index: User.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/User.java,v
retrieving revision 1.50
retrieving revision 1.51
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/User.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/User.java -u -r1.50 -r1.51
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/User.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/User.java
@@ -499,7 +499,7 @@
 
     /**
      * Return a vector of the group names that this user belongs to
-     *
+     * @deprecated 12/2004; v.5.6 use getGroupsList instead.
      * @return Vector Group names that this user belongs to
      * @throws DBException If an error occurs when the group info is read
      */
@@ -513,16 +513,14 @@
     /**
      * Return a List of the group names that this user belongs to
      *
-     * @return Vector Group names that this user belongs to
+     * @return List of Group names that this user belongs to
      * @throws DBException If an error occurs when the group info is read
-     * @todo Modify userInfo so that getGroupsList() is implemented so we
-     * can deprecate getGroups();
      */
     public List getGroupsList()
             throws DBException {
         UserInfo myInfo = getUserInfo();
 
-        return new ArrayList(myInfo.getGroups());
+        return myInfo.getGroupsList();
     }
 
     /**
@@ -835,8 +833,8 @@
         Hashtable allEvents = new Hashtable(1);
         String oneGroupName = null;
 
-        for (Enumeration gl = getGroups().elements(); gl.hasMoreElements();) {
-            oneGroupName = (String) gl.nextElement();
+        for (Iterator iterator = getGroupsList().iterator(); iterator.hasNext();) {
+            oneGroupName = (String) iterator.next();
             oneGroup.clear();
             oneGroup.setField("GroupName", oneGroupName);
 
Index: MapBasedUserInfo.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/MapBasedUserInfo.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/MapBasedUserInfo.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/MapBasedUserInfo.java -u -r1.3 -r1.4
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/MapBasedUserInfo.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/MapBasedUserInfo.java
@@ -1,11 +1,13 @@
 package com.jcorporate.expresso.core.security;
 
 import com.jcorporate.expresso.core.db.DBException;
-import com.jcorporate.expresso.core.misc.ConfigManager;
 import com.jcorporate.expresso.core.misc.Base64;
+import com.jcorporate.expresso.core.misc.ConfigManager;
 
+import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Vector;
 
@@ -224,6 +226,17 @@
     public Vector getGroups()
             throws DBException {
         return new Vector();
+    }
+
+    /**
+     * Return a vector of the group names that this user belongs to
+     *
+     * @return Vector Group names that this user belongs to
+     * @throws com.jcorporate.expresso.core.db.DBException
+     *          If an error occurs when the group info is read
+     */
+    public List getGroupsList() throws DBException {
+        return new ArrayList(0);
     }
 
     /**
Index: UserInfo.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/UserInfo.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/UserInfo.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/UserInfo.java -u -r1.19 -r1.20
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/UserInfo.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/security/UserInfo.java
@@ -68,6 +68,7 @@
 import com.jcorporate.expresso.core.dbobj.LookupInterface;
 
 import java.util.Vector;
+import java.util.List;
 
 
 /**
@@ -162,8 +163,17 @@
      *
      * @return Vector Group names that this user belongs to
      * @throws DBException If an error occurs when the group info is read
+     * @deprecated 12/2004; v.5.6 use getGroupsList instead.
      */
     public Vector getGroups() throws DBException;
+
+    /**
+     * Return a vector of the group names that this user belongs to
+     *
+     * @return Vector Group names that this user belongs to
+     * @throws DBException If an error occurs when the group info is read
+     */
+    public List getGroupsList() throws DBException;
 
     /**
      * Returns the login name of this user
Index: DBToolTests.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/utility/DBToolTests.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/utility/DBToolTests.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/utility/DBToolTests.java -u -r1.19 -r1.20
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/utility/DBToolTests.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/utility/DBToolTests.java
@@ -70,8 +70,10 @@
 import com.jcorporate.expresso.core.dbobj.DBObject;
 import com.jcorporate.expresso.core.dbobj.Schema;
 import com.jcorporate.expresso.core.dbobj.SecuredDBObject;
+import com.jcorporate.expresso.ext.dbobj.SingleDBUserInfo;
 import com.jcorporate.expresso.kernel.ConsoleInstallLog;
 import com.jcorporate.expresso.kernel.InstallLog;
+import com.jcorporate.expresso.services.dbobj.DefaultUserInfo;
 import com.jcorporate.expresso.services.dbobj.SchemaList;
 import com.jcorporate.expresso.services.test.ExpressoTestCase;
 import com.jcorporate.expresso.services.test.SchemaDeleter;
@@ -324,10 +326,8 @@
                             //is a known duplicate table.  Under Normal Circumstances
                             //this should not be the case.
                             //
-                            if (oneObject.getClass().getName().equals(
-                                    com.jcorporate.expresso.services.dbobj.DefaultUserInfo.class.getName()) ||
-                                    oneObject.getClass().getName().equals(
-                                            com.jcorporate.expresso.ext.dbobj.SingleDBUserInfo.class.getName())) {
+                            if (oneObject.getClass().getName().equals(DefaultUserInfo.class.getName()) ||
+                                    oneObject.getClass().getName().equals( SingleDBUserInfo.class.getName())) {
                             } else {
                                 fail("Table name: " +
                                         oneObject.getJDBCMetaData().getTargetTable() +
Index: Download.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/controller/Download.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/ext/controller/Download.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/ext/controller/Download.java -u -r1.26 -r1.27
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/controller/Download.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/controller/Download.java
@@ -96,10 +96,9 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
-import java.util.Enumeration;
 import java.util.Iterator;
+import java.util.List;
 import java.util.StringTokenizer;
-import java.util.Vector;
 
 
 /**
@@ -648,15 +647,15 @@
                                 DownloadFiles oneFile, User myUser)
             throws DBException {
         boolean foundGroupName = false;
-        Vector groupList = myUser.getGroups();
+        List groupList = myUser.getGroupsList();
         String allowedGroup = oneFile.getField("GroupName");
 
         if (allowedGroup == null || allowedGroup.length() == 0) {
             throw new DBException("No allowed download groups for this file");
         }
         /* now see if the user is allowed to get to that file */
-        for (Enumeration e = groupList.elements(); e.hasMoreElements();) {
-            String oneGroup = (String) e.nextElement();
+        for (Iterator iterator = groupList.iterator(); iterator.hasNext();) {
+            String oneGroup = (String) iterator.next();
 
             if (oneGroup.equalsIgnoreCase(oneFile.getField("GroupName"))) {
                 foundGroupName = true;
Index: SingleDBUserInfo.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/dbobj/SingleDBUserInfo.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/ext/dbobj/SingleDBUserInfo.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/ext/dbobj/SingleDBUserInfo.java -u -r1.23 -r1.24
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/dbobj/SingleDBUserInfo.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/dbobj/SingleDBUserInfo.java
@@ -92,6 +92,9 @@
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.Vector;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Collections;
 
 
 /**
@@ -381,6 +384,17 @@
         return myGroups;
     } /* getGroups() */
 
+    /**
+     * Return a vector of the group names that this user belongs to
+     *
+     * @return Vector Group names that this user belongs to
+     * @throws com.jcorporate.expresso.core.db.DBException
+     *          If an error occurs when the group info is read
+     */
+    public List getGroupsList() throws DBException {
+        return Collections.unmodifiableList(getGroups());
+    }
+
 
     public String getLoginName()
             throws DBException {
@@ -539,7 +553,7 @@
 
         try {
             EMailSender ems = new EMailSender();
-            ems.setDBName(getDataContext());
+            ems.setDataContext(getDataContext());
             ems.send(sendToUser, subject, message);
         } catch (Exception e) {
             throw new DBException(myName +
@@ -862,7 +876,7 @@
 
         try { // create some properties and get the default Session
             EMailSender ems = new EMailSender();
-            ems.setDBName(getDataContext());
+            ems.setDataContext(getDataContext());
             ems.addFileAttachments(fileNames);
             ems.send(sendToUser, subject, message);
         } catch (Exception e) {
Index: UserLDAP.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/ldap/UserLDAP.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/ext/ldap/UserLDAP.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/ext/ldap/UserLDAP.java -u -r1.16 -r1.17
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/ldap/UserLDAP.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/ext/ldap/UserLDAP.java
@@ -70,13 +70,13 @@
 
 import com.jcorporate.expresso.core.db.DBConnection;
 import com.jcorporate.expresso.core.db.DBException;
+import com.jcorporate.expresso.core.misc.Base64;
 import com.jcorporate.expresso.core.misc.ConfigManager;
 import com.jcorporate.expresso.core.misc.ConfigurationException;
 import com.jcorporate.expresso.core.misc.EMailSender;
 import com.jcorporate.expresso.core.misc.StringUtil;
-import com.jcorporate.expresso.core.misc.Base64;
-import com.jcorporate.expresso.core.security.UserInfo;
 import com.jcorporate.expresso.core.security.CryptoManager;
+import com.jcorporate.expresso.core.security.UserInfo;
 import com.jcorporate.expresso.services.dbobj.DefaultUserInfo;
 import com.jcorporate.expresso.services.dbobj.Setup;
 import org.apache.log4j.Logger;
@@ -91,9 +91,11 @@
 import javax.naming.directory.InitialDirContext;
 import javax.naming.directory.SearchControls;
 import javax.naming.directory.SearchResult;
+import java.util.Collections;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.List;
 import java.util.Vector;
 
 
@@ -114,7 +116,7 @@
  */
 public class UserLDAP
         implements UserInfo {
-    private String dbName = "default";
+    private String dbName = DBConnection.DEFAULT_DB_CONTEXT_NAME;
 
     /* Hashtable containing the environment for the JNDI call */
     private Hashtable env = null;
@@ -297,7 +299,7 @@
         Vector v = new Vector();
 
         try {
-            setDBName("default");
+            setDBName(DBConnection.DEFAULT_DB_CONTEXT_NAME);
 
             NamingEnumeration results = ctx.search("o=" + ldapRoot,
                     "(uniquemember=" + name +
@@ -327,6 +329,17 @@
         return v;
     } /* getGroups() */
 
+    /**
+     * Return a vector of the group names that this user belongs to
+     *
+     * @return Vector Group names that this user belongs to
+     * @throws com.jcorporate.expresso.core.db.DBException
+     *          If an error occurs when the group info is read
+     */
+    public List getGroupsList() throws DBException {
+        return Collections.unmodifiableList(getGroups());
+    }
+
 
     public String getLoginName()
             throws DBException {
@@ -347,7 +360,7 @@
 
     public String getRegistrationDomain()
             throws DBException {
-        return "default";
+        return DBConnection.DEFAULT_DB_CONTEXT_NAME;
     }
 
     public String getRoot() {
@@ -385,7 +398,7 @@
 
         try {
             EMailSender ems = new EMailSender();
-            ems.setDBName("default");
+            ems.setDataContext(DBConnection.DEFAULT_DB_CONTEXT_NAME);
             ems.send(sendToUser, subject, message);
         } catch (Exception e) {
             throw new DBException(myName +
@@ -541,7 +554,7 @@
                     ":UserName must be specified before retrieve");
         }
         try {
-            setDBName("default");
+            setDBName(DBConnection.DEFAULT_DB_CONTEXT_NAME);
 
             NamingEnumeration results = ctx.search("o=" + ldapRoot,
                     "(uid=" + userName + ")",
@@ -613,7 +626,7 @@
     public void sendAuthEmail()
             throws DBException {
         try {
-            String dbContext = "default";
+            String dbContext = DBConnection.DEFAULT_DB_CONTEXT_NAME;
             String authURL = Setup.getValue(dbContext, "EmailValidateURL");
             String emailAuthCode = getEmailAuthCode();
             this.setEmailValCode(emailAuthCode);
@@ -715,7 +728,7 @@
             throws DBException {
         try {
             String subject = "New Registration Complete - Welcome!";
-            String dbContext = "default";
+            String dbContext = DBConnection.DEFAULT_DB_CONTEXT_NAME;
 
             // We can't retrieve the passsword in plain text to transmit to the user
             // So we just create and set a new passord and send that over.
Index: DefaultUserInfo.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj/DefaultUserInfo.java,v
retrieving revision 1.50
retrieving revision 1.51
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj/DefaultUserInfo.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj/DefaultUserInfo.java -u -r1.50 -r1.51
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj/DefaultUserInfo.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/services/dbobj/DefaultUserInfo.java
@@ -86,6 +86,7 @@
 import com.jcorporate.expresso.core.security.CryptoManager;
 import com.jcorporate.expresso.core.security.User;
 import com.jcorporate.expresso.core.security.UserInfo;
+import com.jcorporate.expresso.core.dataobjects.jdbc.JDBCDataObject;
 import com.jcorporate.expresso.kernel.exception.ChainedException;
 import com.jcorporate.expresso.kernel.util.FastStringBuffer;
 import org.apache.log4j.Logger;
@@ -95,6 +96,10 @@
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.Vector;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.ArrayList;
 
 
 /**
@@ -440,8 +445,87 @@
 
 
     /**
-     * Get the groups that below to this user
+     * Get the groups that this user is a member of.
      *
+     * @return list of strings which are names of groups; never null. List is unmodifiable
+     * @throws DBException upon database access error
+     */
+    public List getGroupsList()
+            throws DBException {
+
+        //
+        //Attempt Cache retrieval first.
+        //
+        CacheSystem cs = CacheManager.getCacheSystem(this.getDataContext());
+        String cacheName = THIS_CLASS + ".groups";
+        String key = Integer.toString(this.getUid());
+        Cache cache = cs.getCache(cacheName);
+        if (cache == null) {
+            try {
+                cache = cs.createCache(cacheName, false, 200);
+                cs.addListener(cacheName, GroupMembers.class.getName());
+            } catch (CacheException ex) {
+                log.error("Error creating cache: " + cacheName);
+            }
+        }
+
+        if (cache != null) {
+            CachedObject c = (CachedObject) cache.getItem(key);
+            if (c != null) {
+                return Collections.unmodifiableList((List) c.getValue());
+            }
+        }
+
+        ArrayList myGroups = new ArrayList(3);
+
+        GroupMembers memberList = new GroupMembers();
+        memberList.setDataContext(getDataContext());
+        memberList.setField(GroupMembers.EXPUID, getUid());
+
+
+        if (log.isDebugEnabled()) {
+            log.debug("Getting groups for uid " + getUid() + ", login name " +
+                    getLoginName());
+        }
+        for (Iterator e = memberList.searchAndRetrieveList().iterator();
+             e.hasNext();) {
+            GroupMembers oneMember = null;
+            oneMember = (GroupMembers) e.next();
+            myGroups.add(oneMember.getField("GroupName"));
+
+            if (log.isDebugEnabled()) {
+                log.debug("" + getUid() + " is a Member of group " +
+                        oneMember.getField("GroupName"));
+            }
+        }
+
+        /**
+         * we manually add the UserGroup.UNKNOWN_USERS_GROUP so that
+         * it appears as though everyone was a member of this group.  sigh.
+         */
+        myGroups.add(UserGroup.UNKNOWN_USERS_GROUP);
+
+
+        if (log.isDebugEnabled()) {
+            log.debug("" + getUid() + " is a member of " + myGroups.size() +
+                    " groups");
+        }
+
+        if (cache != null) {
+            CachedObject co = new CachedObject(key, myGroups);
+            try {
+                cs.addItem(cacheName, co, 1000 * 60 * 10);  //10 minute cache;
+            } catch (CacheException ex) {
+                log.error("Error adding group list to cache", ex);
+            }
+        }
+
+        return Collections.unmodifiableList(myGroups);
+    }
+
+    /**
+     * Get the groups that this user is a member of.
+     * @deprecated 12/2004; v.5.6 use getGroupsList instead. This method passes out actual vector object from cache--modifications affect cache
      * @return Vector of strings
      * @throws DBException upon database access error
      */
@@ -468,7 +552,7 @@
         if (cache != null) {
             CachedObject c = (CachedObject) cache.getItem(key);
             if (c != null) {
-                return (Vector) c.getValue();
+                return new Vector((Vector) c.getValue());
             }
         }
 
@@ -792,8 +876,8 @@
         Hashtable allEvents = new Hashtable(1);
         String oneGroupName = null;
 
-        for (Enumeration gl = getGroups().elements(); gl.hasMoreElements();) {
-            oneGroupName = (String) gl.nextElement();
+        for (Iterator iterator = getGroupsList().iterator(); iterator.hasNext();) {
+            oneGroupName = (String) iterator.next();
             oneGroup.clear();
             oneGroup.setField("GroupName", oneGroupName);
 
@@ -1468,7 +1552,7 @@
         if (!pref.find()) {
 
             // if none marked as primary, use first group in membership list
-            Vector groupNames = user.getGroups();
+            List groupNames = user.getGroupsList();
             if (groupNames.size() > 0) {
                 primary = new UserGroup();
                 primary.setDataContext(user.getDataContext());


More information about the cvs mailing list