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