pero        2005/08/17 03:40:37

  Modified:    catalina/src/share/org/apache/catalina/realm
                        UserDatabaseRealm.java
  Log:
  Create GenericPrincipal  instead MemoryUser to eaisier cluster replication 
handling and compatibilty with all other
  standard implementation.
  
  MemoryUser can be found at userPrincipal.
  
  Revision  Changes    Path
  1.13      +27 -3     
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/realm/UserDatabaseRealm.java
  
  Index: UserDatabaseRealm.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/realm/UserDatabaseRealm.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- UserDatabaseRealm.java    23 Feb 2005 19:27:56 -0000      1.12
  +++ UserDatabaseRealm.java    17 Aug 2005 10:40:33 -0000      1.13
  @@ -19,7 +19,9 @@
   
   
   import java.security.Principal;
  +import java.util.ArrayList;
   import java.util.Iterator;
  +import java.util.List;
   
   import javax.naming.Context;
   
  @@ -30,6 +32,7 @@
   import org.apache.catalina.User;
   import org.apache.catalina.UserDatabase;
   import org.apache.catalina.core.StandardServer;
  +import org.apache.catalina.users.MemoryUser;
   import org.apache.catalina.util.StringManager;
   
   
  @@ -200,8 +203,29 @@
        */
       protected Principal getPrincipal(String username) {
   
  -        return (database.findUser(username));
  -
  +        Principal principal = database.findUser(username);
  +        if(principal instanceof GenericPrincipal)
  +            return principal ;
  +        
  +        List roles = new ArrayList();
  +        if(principal instanceof MemoryUser) {
  +            MemoryUser user = (MemoryUser)principal;
  +            Iterator uroles = user.getRoles();
  +            while(uroles.hasNext()) {
  +                Role role = (Role)uroles.next();
  +                roles.add(role.getName());
  +            }
  +            Iterator groups = user.getGroups();
  +            while(groups.hasNext()) {
  +                Group group = (Group)groups.next();
  +                uroles = user.getRoles();
  +                while(uroles.hasNext()) {
  +                    Role role = (Role)uroles.next();
  +                    roles.add(role.getName());
  +                }
  +            }
  +        }
  +        return new GenericPrincipal(this, username, getPassword(username), 
roles, principal);
       }
   
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to