You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by he...@apache.org on 2004/10/08 14:09:44 UTC
cvs commit: jakarta-turbine-2/src/java/org/apache/turbine/services/security/torque TorqueUserManager.java
henning 2004/10/08 05:09:44
Modified: src/test/org/apache/turbine/services/security Tag:
TURBINE_2_3_BRANCH TestSecurityUser.java
TestSecurityUserManager.java
src/java/org/apache/turbine/services/security Tag:
TURBINE_2_3_BRANCH UserManager.java
src/java/org/apache/turbine/services/security/db Tag:
TURBINE_2_3_BRANCH DBUserManager.java
src/java/org/apache/turbine/services/security/ldap Tag:
TURBINE_2_3_BRANCH LDAPUserManager.java
src/java/org/apache/turbine/services/security/passive Tag:
TURBINE_2_3_BRANCH PassiveUserManager.java
src/java/org/apache/turbine/services/security/torque Tag:
TURBINE_2_3_BRANCH TorqueUserManager.java
Log:
We should be able to retrieve an user by Id, too. Not only by name.
Add some tests verifying the function of this.
Revision Changes Path
No revision
No revision
1.1.2.3 +16 -0 jakarta-turbine-2/src/test/org/apache/turbine/services/security/Attic/TestSecurityUser.java
Index: TestSecurityUser.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-2/src/test/org/apache/turbine/services/security/Attic/TestSecurityUser.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- TestSecurityUser.java 14 Aug 2004 20:57:57 -0000 1.1.2.2
+++ TestSecurityUser.java 8 Oct 2004 12:09:43 -0000 1.1.2.3
@@ -177,5 +177,21 @@
checkUserList();
}
+ public void testRetrieve()
+ throws Exception
+ {
+ SecurityService ss = TurbineSecurity.getService();
+ UserManager um = ss.getUserManager();
+
+ User u = um.retrieve("admin");
+ assertNotNull("No Admin found!", u);
+ assertEquals("Admin Id wrong!", u.getId(), 1);
+
+ User u2 = um.retrieveById(new Integer(1));
+ assertNotNull("No Admin found!", u2);
+ assertEquals("Admin Name wrong!", u.getName(), "admin");
+
+ assertEquals("Two different User objects retrieved!", u, u2);
+ }
}
1.1.2.3 +21 -0 jakarta-turbine-2/src/test/org/apache/turbine/services/security/Attic/TestSecurityUserManager.java
Index: TestSecurityUserManager.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-2/src/test/org/apache/turbine/services/security/Attic/TestSecurityUserManager.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- TestSecurityUserManager.java 14 Aug 2004 20:57:57 -0000 1.1.2.2
+++ TestSecurityUserManager.java 8 Oct 2004 12:09:43 -0000 1.1.2.3
@@ -180,6 +180,27 @@
checkUserList();
}
+ public void testUserManager7()
+ throws Exception
+ {
+ SecurityService ss = TurbineSecurity.getService();
+ UserManager um = ss.getUserManager();
+
+ User admin = um.retrieveById(new Integer(1));
+
+ try
+ {
+ User doesNotExist = um.retrieveById(new Integer(667));
+ fail("Non existing Account was retrieved");
+ }
+ catch (Exception e)
+ {
+ assertEquals("Wrong Exception thrown: " + e.getClass().getName(), e.getClass(), UnknownEntityException.class);
+ }
+
+ checkUserList();
+ }
+
public void testAddUser()
throws Exception
{
No revision
No revision
1.12.2.3 +14 -1 jakarta-turbine-2/src/java/org/apache/turbine/services/security/UserManager.java
Index: UserManager.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/security/UserManager.java,v
retrieving revision 1.12.2.2
retrieving revision 1.12.2.3
diff -u -r1.12.2.2 -r1.12.2.3
--- UserManager.java 20 May 2004 03:06:48 -0000 1.12.2.2
+++ UserManager.java 8 Oct 2004 12:09:43 -0000 1.12.2.3
@@ -96,6 +96,19 @@
throws UnknownEntityException, DataBackendException;
/**
+ * Retrieve a user from persistent storage using the primary key
+ *
+ * @param key The primary key object
+ * @return an User object.
+ * @throws UnknownEntityException if the user's record does not
+ * exist in the database.
+ * @throws DataBackendException if there is a problem accessing the
+ * storage.
+ */
+ User retrieveById(Object key)
+ throws UnknownEntityException, DataBackendException;
+
+ /**
* Retrieve a set of users that meet the specified criteria.
*
* As the keys for the criteria, you should use the constants that
No revision
No revision
1.16.2.3 +35 -14 jakarta-turbine-2/src/java/org/apache/turbine/services/security/db/DBUserManager.java
Index: DBUserManager.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/security/db/DBUserManager.java,v
retrieving revision 1.16.2.2
retrieving revision 1.16.2.3
diff -u -r1.16.2.2 -r1.16.2.3
--- DBUserManager.java 20 May 2004 03:06:49 -0000 1.16.2.2
+++ DBUserManager.java 8 Oct 2004 12:09:43 -0000 1.16.2.3
@@ -142,26 +142,49 @@
{
Criteria criteria = new Criteria();
criteria.add(TurbineUserPeer.USERNAME, userName);
- List users;
- try
+
+ List users = retrieveList(criteria);
+
+ if (users.size() > 1)
{
- users = TurbineUserPeer.doSelect(criteria);
+ throw new DataBackendException(
+ "Multiple Users with same username '" + userName + "'");
}
- catch (Exception e)
+ if (users.size() == 1)
{
- throw new DataBackendException("Failed to retrieve user '" +
- userName + "'", e);
+ return (User) users.get(0);
}
+ throw new UnknownEntityException("Unknown user '" + userName + "'");
+ }
+
+ /**
+ * Retrieve a user from persistent storage using the primary key
+ *
+ * @param key The primary key object
+ * @return an User object.
+ * @throws UnknownEntityException if the user's record does not
+ * exist in the database.
+ * @throws DataBackendException if there is a problem accessing the
+ * storage.
+ */
+ public User retrieveById(Object key)
+ throws UnknownEntityException, DataBackendException
+ {
+ Criteria criteria = new Criteria();
+ criteria.add(TurbineUserPeer.USER_ID, key);
+
+ List users = retrieveList(criteria);
+
if (users.size() > 1)
{
throw new DataBackendException(
- "Multiple Users with same username '" + userName + "'");
+ "Multiple Users with same unique Key '" + String.valueOf(key) + "'");
}
if (users.size() == 1)
{
return (User) users.get(0);
}
- throw new UnknownEntityException("Unknown user '" + userName + "'");
+ throw new UnknownEntityException("Unknown user with key '" + String.valueOf(key) + "'");
}
/**
@@ -181,8 +204,7 @@
public List retrieveList(Criteria criteria)
throws DataBackendException
{
- Iterator keys = criteria.keySet().iterator();
- while (keys.hasNext())
+ for (Iterator keys = criteria.keySet().iterator(); keys.hasNext(); )
{
String key = (String) keys.next();
@@ -192,14 +214,13 @@
for (int i = 0; i < criterion.length; i++)
{
- String table = criterion[i].getTable();
- if (table == null || "".equals(table))
+ if (StringUtils.isEmpty(criterion[i].getTable()))
{
criterion[i].setTable(TurbineUserPeer.getTableName());
}
}
}
- List users = new ArrayList(0);
+ List users = null;
try
{
users = TurbineUserPeer.doSelect(criteria);
No revision
No revision
1.14.2.3 +58 -1 jakarta-turbine-2/src/java/org/apache/turbine/services/security/ldap/LDAPUserManager.java
Index: LDAPUserManager.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/security/ldap/LDAPUserManager.java,v
retrieving revision 1.14.2.2
retrieving revision 1.14.2.3
diff -u -r1.14.2.2 -r1.14.2.3
--- LDAPUserManager.java 20 May 2004 03:06:48 -0000 1.14.2.2
+++ LDAPUserManager.java 8 Oct 2004 12:09:43 -0000 1.14.2.3
@@ -170,6 +170,63 @@
}
/**
+ * Retrieve a user from persistent storage using the primary key
+ *
+ * @param key The primary key object
+ * @return an User object.
+ * @throws UnknownEntityException if the user's record does not
+ * exist in the database.
+ * @throws DataBackendException if there is a problem accessing the
+ * storage.
+ */
+ public User retrieveById(Object key)
+ throws UnknownEntityException, DataBackendException
+ {
+ try
+ {
+ DirContext ctx = bindAsAdmin();
+
+ /*
+ * Define the search.
+ */
+ StringBuffer userBaseSearch = new StringBuffer();
+ userBaseSearch.append(LDAPSecurityConstants.getUserIdAttribute());
+ userBaseSearch.append("=");
+ userBaseSearch.append(String.valueOf(key));
+ userBaseSearch.append(",");
+ userBaseSearch.append(LDAPSecurityConstants.getBaseSearch());
+
+ /*
+ * Create the default search controls.
+ */
+ NamingEnumeration answer =
+ ctx.search(userBaseSearch.toString(), (Attributes)null);
+
+ if (answer.hasMore())
+ {
+ SearchResult sr = (SearchResult) answer.next();
+ Attributes attribs = sr.getAttributes();
+ LDAPUser ldapUser = createLDAPUser();
+
+ ldapUser.setLDAPAttributes(attribs);
+ ldapUser.setTemp("turbine.user", ldapUser);
+
+ return ldapUser;
+ }
+ else
+ {
+ throw new UnknownEntityException("No user exists for the key: "
+ + String.valueOf(key) + "\n");
+ }
+ }
+ catch (NamingException ex)
+ {
+ throw new DataBackendException(
+ "The LDAP server specified is unavailable", ex);
+ }
+ }
+
+ /**
* This is currently not implemented to behave as expected. It
* ignores the Criteria argument and returns all the users.
*
No revision
No revision
1.10.2.3 +17 -1 jakarta-turbine-2/src/java/org/apache/turbine/services/security/passive/PassiveUserManager.java
Index: PassiveUserManager.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/security/passive/PassiveUserManager.java,v
retrieving revision 1.10.2.2
retrieving revision 1.10.2.3
diff -u -r1.10.2.2 -r1.10.2.3
--- PassiveUserManager.java 20 May 2004 03:06:49 -0000 1.10.2.2
+++ PassiveUserManager.java 8 Oct 2004 12:09:43 -0000 1.10.2.3
@@ -100,6 +100,22 @@
}
/**
+ * Retrieve a user from persistent storage using the primary key
+ *
+ * @param key The primary key object
+ * @return an User object.
+ * @throws UnknownEntityException if the user's record does not
+ * exist in the database.
+ * @throws DataBackendException if there is a problem accessing the
+ * storage.
+ */
+ public User retrieveById(Object key)
+ throws UnknownEntityException, DataBackendException
+ {
+ throw new DataBackendException("PassiveUserManager knows no users");
+ }
+
+ /**
* Retrieve a set of users that meet the specified criteria.
*
* As the keys for the criteria, you should use the constants that
No revision
No revision
1.3.2.4 +35 -14 jakarta-turbine-2/src/java/org/apache/turbine/services/security/torque/Attic/TorqueUserManager.java
Index: TorqueUserManager.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/security/torque/Attic/TorqueUserManager.java,v
retrieving revision 1.3.2.3
retrieving revision 1.3.2.4
diff -u -r1.3.2.3 -r1.3.2.4
--- TorqueUserManager.java 14 Aug 2004 20:11:41 -0000 1.3.2.3
+++ TorqueUserManager.java 8 Oct 2004 12:09:44 -0000 1.3.2.4
@@ -140,26 +140,49 @@
{
Criteria criteria = new Criteria();
criteria.add(UserPeerManager.getNameColumn(), userName);
- List users;
- try
+
+ List users = retrieveList(criteria);;
+
+ if (users.size() > 1)
{
- users = UserPeerManager.doSelect(criteria);
+ throw new DataBackendException(
+ "Multiple Users with same username '" + userName + "'");
}
- catch (Exception e)
+ if (users.size() == 1)
{
- throw new DataBackendException("Failed to retrieve user '" +
- userName + "'", e);
+ return (User) users.get(0);
}
+ throw new UnknownEntityException("Unknown user '" + userName + "'");
+ }
+
+ /**
+ * Retrieve a user from persistent storage using the primary key
+ *
+ * @param key The primary key object
+ * @return an User object.
+ * @throws UnknownEntityException if the user's record does not
+ * exist in the database.
+ * @throws DataBackendException if there is a problem accessing the
+ * storage.
+ */
+ public User retrieveById(Object key)
+ throws UnknownEntityException, DataBackendException
+ {
+ Criteria criteria = new Criteria();
+ criteria.add(UserPeerManager.getIdColumn(), key);
+
+ List users = retrieveList(criteria);
+
if (users.size() > 1)
{
throw new DataBackendException(
- "Multiple Users with same username '" + userName + "'");
+ "Multiple Users with same unique Key '" + String.valueOf(key) + "'");
}
if (users.size() == 1)
{
return (User) users.get(0);
}
- throw new UnknownEntityException("Unknown user '" + userName + "'");
+ throw new UnknownEntityException("Unknown user with key '" + String.valueOf(key) + "'");
}
/**
@@ -193,8 +216,7 @@
public List retrieveList(Criteria criteria)
throws DataBackendException
{
- Iterator keys = criteria.keySet().iterator();
- while (keys.hasNext())
+ for (Iterator keys = criteria.keySet().iterator(); keys.hasNext(); )
{
String key = (String) keys.next();
@@ -204,14 +226,13 @@
for (int i = 0; i < criterion.length; i++)
{
- String table = criterion[i].getTable();
- if (table == null || "".equals(table))
+ if (StringUtils.isEmpty(criterion[i].getTable()))
{
criterion[i].setTable(UserPeerManager.getTableName());
}
}
}
- List users = new ArrayList(0);
+ List users = null;
try
{
users = UserPeerManager.doSelect(criteria);
---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org