You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@apache.org on 2002/01/23 00:22:24 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users MemoryGroup.java MemoryUser.java MemoryUserDatabase.java MemoryUserDatabaseFactory.java

craigmcc    02/01/22 15:22:24

  Modified:    catalina/src/share/org/apache/catalina Group.java User.java
                        UserDatabase.java
               catalina/src/share/org/apache/catalina/mbeans
                        MBeanUtils.java mbeans-descriptors.xml
               catalina/src/share/org/apache/catalina/users
                        MemoryGroup.java MemoryUser.java
                        MemoryUserDatabase.java
                        MemoryUserDatabaseFactory.java
  Added:       catalina/src/share/org/apache/catalina/mbeans
                        GroupMBean.java MemoryUserDatabaseMBean.java
                        UserMBean.java
  Log:
  Initial checkin of the MBean implementations to support live administration
  of the user database.
  
  Revision  Changes    Path
  1.2       +10 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Group.java
  
  Index: Group.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Group.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Group.java	20 Jan 2002 03:00:56 -0000	1.1
  +++ Group.java	22 Jan 2002 23:22:23 -0000	1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Group.java,v 1.1 2002/01/20 03:00:56 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2002/01/20 03:00:56 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Group.java,v 1.2 2002/01/22 23:22:23 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2002/01/22 23:22:23 $
    *
    * ====================================================================
    * The Apache Software License, Version 1.1
  @@ -73,7 +73,7 @@
    * inherits the security roles assigned to the group.</p>
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2002/01/20 03:00:56 $
  + * @version $Revision: 1.2 $ $Date: 2002/01/22 23:22:23 $
    * @since 4.1
    */
   
  @@ -118,6 +118,12 @@
        * as Strings.
        */
       public Iterator getRoles();
  +
  +
  +    /**
  +     * Return the {@link UserDatabase} within which this Group is defined.
  +     */
  +    public UserDatabase getUserDatabase();
   
   
       /**
  
  
  
  1.2       +10 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/User.java
  
  Index: User.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/User.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- User.java	20 Jan 2002 03:00:56 -0000	1.1
  +++ User.java	22 Jan 2002 23:22:23 -0000	1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/User.java,v 1.1 2002/01/20 03:00:56 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2002/01/20 03:00:56 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/User.java,v 1.2 2002/01/22 23:22:23 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2002/01/22 23:22:23 $
    *
    * ====================================================================
    * The Apache Software License, Version 1.1
  @@ -74,7 +74,7 @@
    * of specific security roles.</p>
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2002/01/20 03:00:56 $
  + * @version $Revision: 1.2 $ $Date: 2002/01/22 23:22:23 $
    * @since 4.1
    */
   
  @@ -127,6 +127,12 @@
        * as Strings.
        */
       public Iterator getRoles();
  +
  +
  +    /**
  +     * Return the {@link UserDatabase} within which this User is defined.
  +     */
  +    public UserDatabase getUserDatabase();
   
   
       /**
  
  
  
  1.2       +10 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/UserDatabase.java
  
  Index: UserDatabase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/UserDatabase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- UserDatabase.java	20 Jan 2002 03:00:56 -0000	1.1
  +++ UserDatabase.java	22 Jan 2002 23:22:23 -0000	1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/UserDatabase.java,v 1.1 2002/01/20 03:00:56 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2002/01/20 03:00:56 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/UserDatabase.java,v 1.2 2002/01/22 23:22:23 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2002/01/22 23:22:23 $
    *
    * ====================================================================
    * The Apache Software License, Version 1.1
  @@ -73,7 +73,7 @@
    * referenced by a {@link Realm} for authentication and access control.</p>
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2002/01/20 03:00:56 $
  + * @version $Revision: 1.2 $ $Date: 2002/01/22 23:22:23 $
    * @since 4.1
    */
   
  @@ -87,6 +87,12 @@
        * Return the set of {@link Group}s defined in this user database.
        */
       public Iterator getGroups();
  +
  +
  +    /**
  +     * Return the unique global identifier of this user database.
  +     */
  +    public String getId();
   
   
       /**
  
  
  
  1.12      +232 -4    jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanUtils.java
  
  Index: MBeanUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanUtils.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- MBeanUtils.java	22 Jan 2002 18:16:57 -0000	1.11
  +++ MBeanUtils.java	22 Jan 2002 23:22:23 -0000	1.12
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanUtils.java,v 1.11 2002/01/22 18:16:57 remm Exp $
  - * $Revision: 1.11 $
  - * $Date: 2002/01/22 18:16:57 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MBeanUtils.java,v 1.12 2002/01/22 23:22:23 craigmcc Exp $
  + * $Revision: 1.12 $
  + * $Date: 2002/01/22 23:22:23 $
    *
    * ====================================================================
    *
  @@ -80,6 +80,7 @@
   import org.apache.catalina.Container;
   import org.apache.catalina.Context;
   import org.apache.catalina.Engine;
  +import org.apache.catalina.Group;
   import org.apache.catalina.Host;
   import org.apache.catalina.LifecycleEvent;
   import org.apache.catalina.LifecycleListener;
  @@ -90,6 +91,8 @@
   import org.apache.catalina.Server;
   import org.apache.catalina.ServerFactory;
   import org.apache.catalina.Service;
  +import org.apache.catalina.User;
  +import org.apache.catalina.UserDatabase;
   import org.apache.catalina.Valve;
   import org.apache.catalina.connector.http.HttpConnector;
   import org.apache.catalina.connector.warp.WarpConnector;
  @@ -103,7 +106,7 @@
    *
    * @author Craig R. McClanahan
    * @author Amy Roh
  - * @version $Revision: 1.11 $ $Date: 2002/01/22 18:16:57 $
  + * @version $Revision: 1.12 $ $Date: 2002/01/22 23:22:23 $
    */
   
   public class MBeanUtils {
  @@ -122,6 +125,10 @@
             "Http10Connector" },
           { "org.apache.catalina.connector.http.HttpConnector",
             "Http11Connector" },
  +        { "org.apache.catalina.users.MemoryGroup",
  +          "Group" },
  +        { "org.apache.catalina.users.MemoryUser",
  +          "User" },
       };
   
   
  @@ -249,6 +256,33 @@
   
       /**
        * Create, register, and return an MBean for this
  +     * <code>Group</code> object.
  +     *
  +     * @param group The Group to be managed
  +     *
  +     * @exception Exception if an MBean cannot be created or registered
  +     */
  +    public static ModelMBean createMBean(Group group)
  +        throws Exception {
  +
  +        String mname = createManagedName(group);
  +        ManagedBean managed = registry.findManagedBean(mname);
  +        if (managed == null) {
  +            return null;
  +        }
  +        String domain = managed.getDomain();
  +        if (domain == null)
  +            domain = mserver.getDefaultDomain();
  +        ModelMBean mbean = managed.createMBean(group);
  +        ObjectName oname = createObjectName(domain, group);
  +        mserver.registerMBean(mbean, oname);
  +        return (mbean);
  +
  +    }
  +
  +
  +    /**
  +     * Create, register, and return an MBean for this
        * <code>Host</code> object.
        *
        * @param host The Host to be managed
  @@ -434,6 +468,60 @@
   
       /**
        * Create, register, and return an MBean for this
  +     * <code>User</code> object.
  +     *
  +     * @param user The User to be managed
  +     *
  +     * @exception Exception if an MBean cannot be created or registered
  +     */
  +    public static ModelMBean createMBean(User user)
  +        throws Exception {
  +
  +        String mname = createManagedName(user);
  +        ManagedBean managed = registry.findManagedBean(mname);
  +        if (managed == null) {
  +            return null;
  +        }
  +        String domain = managed.getDomain();
  +        if (domain == null)
  +            domain = mserver.getDefaultDomain();
  +        ModelMBean mbean = managed.createMBean(user);
  +        ObjectName oname = createObjectName(domain, user);
  +        mserver.registerMBean(mbean, oname);
  +        return (mbean);
  +
  +    }
  +
  +
  +    /**
  +     * Create, register, and return an MBean for this
  +     * <code>UserDatabase</code> object.
  +     *
  +     * @param userDatabase The UserDatabase to be managed
  +     *
  +     * @exception Exception if an MBean cannot be created or registered
  +     */
  +    public static ModelMBean createMBean(UserDatabase userDatabase)
  +        throws Exception {
  +
  +        String mname = createManagedName(userDatabase);
  +        ManagedBean managed = registry.findManagedBean(mname);
  +        if (managed == null) {
  +            return null;
  +        }
  +        String domain = managed.getDomain();
  +        if (domain == null)
  +            domain = mserver.getDefaultDomain();
  +        ModelMBean mbean = managed.createMBean(userDatabase);
  +        ObjectName oname = createObjectName(domain, userDatabase);
  +        mserver.registerMBean(mbean, oname);
  +        return (mbean);
  +
  +    }
  +
  +
  +    /**
  +     * Create, register, and return an MBean for this
        * <code>Valve</code> object.
        *
        * @param valve The Valve to be managed
  @@ -556,6 +644,28 @@
   
       /**
        * Create an <code>ObjectName</code> for this
  +     * <code>Group</code> object.
  +     *
  +     * @param domain Domain in which this name is to be created
  +     * @param group The Group to be named
  +     *
  +     * @exception MalformedObjectNameException if a name cannot be created
  +     */
  +    public static ObjectName createObjectName(String domain,
  +                                              Group group)
  +        throws MalformedObjectNameException {
  +
  +        ObjectName name = null;
  +        name = new ObjectName(domain + ":type=Group,groupname=" +
  +                              group.getGroupname() + ",database=" +
  +                              group.getUserDatabase().getId());
  +        return (name);
  +
  +    }
  +
  +
  +    /**
  +     * Create an <code>ObjectName</code> for this
        * <code>Host</code> object.
        *
        * @param domain Domain in which this name is to be created
  @@ -778,6 +888,49 @@
   
       /**
        * Create an <code>ObjectName</code> for this
  +     * <code>User</code> object.
  +     *
  +     * @param domain Domain in which this name is to be created
  +     * @param user The User to be named
  +     *
  +     * @exception MalformedObjectNameException if a name cannot be created
  +     */
  +    public static ObjectName createObjectName(String domain,
  +                                              User user)
  +        throws MalformedObjectNameException {
  +
  +        ObjectName name = null;
  +        name = new ObjectName(domain + ":type=User,username=" +
  +                              user.getUsername() + ",database=" +
  +                              user.getUserDatabase().getId());
  +        return (name);
  +
  +    }
  +
  +
  +    /**
  +     * Create an <code>ObjectName</code> for this
  +     * <code>UserDatabase</code> object.
  +     *
  +     * @param domain Domain in which this name is to be created
  +     * @param userDatabase The UserDatabase to be named
  +     *
  +     * @exception MalformedObjectNameException if a name cannot be created
  +     */
  +    public static ObjectName createObjectName(String domain,
  +                                              UserDatabase userDatabase)
  +        throws MalformedObjectNameException {
  +
  +        ObjectName name = null;
  +        name = new ObjectName(domain + ":type=UserDatabase,database=" +
  +                              userDatabase.getId());
  +        return (name);
  +
  +    }
  +
  +
  +    /**
  +     * Create an <code>ObjectName</code> for this
        * <code>Valve</code> object.
        *
        * @param domain Domain in which this name is to be created
  @@ -938,6 +1091,31 @@
   
       /**
        * Deregister the MBean for this
  +     * <code>Group</code> object.
  +     *
  +     * @param group The Group to be managed
  +     *
  +     * @exception Exception if an MBean cannot be deregistered
  +     */
  +    public static void destroyMBean(Group group)
  +        throws Exception {
  +
  +        String mname = createManagedName(group);
  +        ManagedBean managed = registry.findManagedBean(mname);
  +        if (managed == null) {
  +            return;
  +        }
  +        String domain = managed.getDomain();
  +        if (domain == null)
  +            domain = mserver.getDefaultDomain();
  +        ObjectName oname = createObjectName(domain, group);
  +        mserver.unregisterMBean(oname);
  +
  +    }
  +
  +
  +    /**
  +     * Deregister the MBean for this
        * <code>Host</code> object.
        *
        * @param host The Host to be managed
  @@ -1105,6 +1283,56 @@
           if (domain == null)
               domain = mserver.getDefaultDomain();
           ObjectName oname = createObjectName(domain, service);
  +        mserver.unregisterMBean(oname);
  +
  +    }
  +
  +
  +    /**
  +     * Deregister the MBean for this
  +     * <code>User</code> object.
  +     *
  +     * @param user The User to be managed
  +     *
  +     * @exception Exception if an MBean cannot be deregistered
  +     */
  +    public static void destroyMBean(User user)
  +        throws Exception {
  +
  +        String mname = createManagedName(user);
  +        ManagedBean managed = registry.findManagedBean(mname);
  +        if (managed == null) {
  +            return;
  +        }
  +        String domain = managed.getDomain();
  +        if (domain == null)
  +            domain = mserver.getDefaultDomain();
  +        ObjectName oname = createObjectName(domain, user);
  +        mserver.unregisterMBean(oname);
  +
  +    }
  +
  +
  +    /**
  +     * Deregister the MBean for this
  +     * <code>UserDatabase</code> object.
  +     *
  +     * @param userDatabase The UserDatabase to be managed
  +     *
  +     * @exception Exception if an MBean cannot be deregistered
  +     */
  +    public static void destroyMBean(UserDatabase userDatabase)
  +        throws Exception {
  +
  +        String mname = createManagedName(userDatabase);
  +        ManagedBean managed = registry.findManagedBean(mname);
  +        if (managed == null) {
  +            return;
  +        }
  +        String domain = managed.getDomain();
  +        if (domain == null)
  +            domain = mserver.getDefaultDomain();
  +        ObjectName oname = createObjectName(domain, userDatabase);
           mserver.unregisterMBean(oname);
   
       }
  
  
  
  1.18      +26 -8     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/mbeans-descriptors.xml
  
  Index: mbeans-descriptors.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/mbeans-descriptors.xml,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- mbeans-descriptors.xml	22 Jan 2002 21:20:48 -0000	1.17
  +++ mbeans-descriptors.xml	22 Jan 2002 23:22:24 -0000	1.18
  @@ -6,7 +6,7 @@
   <!--
        Descriptions of JMX MBeans for Catalina
   
  -     $Id: mbeans-descriptors.xml,v 1.17 2002/01/22 21:20:48 craigmcc Exp $
  +     $Id: mbeans-descriptors.xml,v 1.18 2002/01/22 23:22:24 craigmcc Exp $
    -->
   
   <mbeans-descriptors>
  @@ -108,7 +108,7 @@
     <mbean         name="Group"
               className="org.apache.catalina.mbeans.GroupMBean"
             description="Group from a user database"
  -               domain="Catalina"
  +               domain="Users"
                   group="Group"
                    type="org.apache.catalina.Group">
   
  @@ -598,7 +598,7 @@
     <mbean         name="MemoryUserDatabase"
               className="org.apache.catalina.mbeans.MemoryUserDatabaseMBean"
             description="In-memory user and group database"
  -               domain="Catalina"
  +               domain="Users"
                   group="UserDatabase"
                    type="org.apache.catalina.users.MemoryUserDatabase">
   
  @@ -671,6 +671,24 @@
                    type="java.lang.String"/>
       </operation>
   
  +    <operation   name="removeGroup"
  +          description="Remove existing group (and all user memberships)"
  +               impact="ACTION"
  +           returnType="void">
  +      <parameter name="groupname"
  +          description="Group name of the group to remove"
  +                 type="java.lang.String"/>
  +    </operation>
  +
  +    <operation   name="removeUser"
  +          description="Remove existing user (and all group memberships)"
  +               impact="ACTION"
  +           returnType="void">
  +      <parameter name="username"
  +          description="User name of the user to remove"
  +                 type="java.lang.String"/>
  +    </operation>
  +
     </mbean>
   
   
  @@ -1187,7 +1205,7 @@
     <mbean         name="User"
               className="org.apache.catalina.mbeans.UserMBean"
             description="User from a user database"
  -               domain="Catalina"
  +               domain="Users"
                   group="User"
                    type="org.apache.catalina.User">
   
  @@ -1216,8 +1234,8 @@
             description="Add a new group membership for this user"
                  impact="ACTION"
              returnType="void">
  -      <parameter name="group"
  -          description="MBean Name of the new group"
  +      <parameter name="groupname"
  +          description="Group name of the new group"
                    type="java.lang.String"/>
       </operation>
   
  @@ -1234,8 +1252,8 @@
             description="Remove an old group membership for this user"
                  impact="ACTION"
              returnType="void">
  -      <parameter name="group"
  -          description="MBean Name of the old group"
  +      <parameter name="groupname"
  +          description="Group name of the old group"
                    type="java.lang.String"/>
       </operation>
   
  
  
  
  1.1                  jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/GroupMBean.java
  
  Index: GroupMBean.java
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/GroupMBean.java,v 1.1 2002/01/22 23:22:23 craigmcc Exp $
   * $Revision: 1.1 $
   * $Date: 2002/01/22 23:22:23 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * [Additional notices, if required by prior licensing conditions]
   *
   */
  
  package org.apache.catalina.mbeans;
  
  
  import java.util.ArrayList;
  import java.util.Iterator;
  import javax.management.MalformedObjectNameException;
  import javax.management.MBeanException;
  import javax.management.MBeanServer;
  import javax.management.ObjectName;
  import javax.management.RuntimeOperationsException;
  import org.apache.catalina.Group;
  import org.apache.catalina.User;
  import org.apache.catalina.UserDatabase;
  import org.apache.commons.modeler.BaseModelMBean;
  import org.apache.commons.modeler.ManagedBean;
  import org.apache.commons.modeler.Registry;
  
  
  /**
   * <p>A <strong>ModelMBean</strong> implementation for the
   * <code>org.apache.catalina.Group</code> component.</p>
   *
   * @author Craig R. McClanahan
   * @version $Revision: 1.1 $ $Date: 2002/01/22 23:22:23 $
   */
  
  public class GroupMBean extends BaseModelMBean {
  
  
      // ----------------------------------------------------------- Constructors
  
  
      /**
       * Construct a <code>ModelMBean</code> with default
       * <code>ModelMBeanInfo</code> information.
       *
       * @exception MBeanException if the initializer of an object
       *  throws an exception
       * @exception RuntimeOperationsException if an IllegalArgumentException
       *  occurs
       */
      public GroupMBean()
          throws MBeanException, RuntimeOperationsException {
  
          super();
  
      }
  
  
      // ----------------------------------------------------- Instance Variables
  
  
      /**
       * The configuration information registry for our managed beans.
       */
      protected Registry registry = MBeanUtils.createRegistry();
  
  
      /**
       * The <code>MBeanServer</code> in which we are registered.
       */
      protected MBeanServer mserver = MBeanUtils.createServer();
  
  
      /**
       * The <code>ManagedBean</code> information describing this MBean.
       */
      protected ManagedBean managed =
          registry.findManagedBean("Group");
  
  
      // ------------------------------------------------------------- Attributes
  
  
      /**
       * Return the set of authorized roles for this group.
       */
      public String[] getRoles() {
  
          Group group = (Group) this.resource;
          ArrayList results = new ArrayList();
          Iterator roles = group.getRoles();
          while (roles.hasNext()) {
              results.add(roles.next());
          }
          return ((String[]) results.toArray(new String[results.size()]));
  
      }
  
  
      /**
       * Return the MBean Names of all users that are members of this group.
       */
      public String[] getUsers() {
  
          Group group = (Group) this.resource;
          ArrayList results = new ArrayList();
          Iterator users = group.getUsers();
          while (users.hasNext()) {
              User user = null;
              try {
                  user = (User) users.next();
                  ObjectName oname =
                      MBeanUtils.createObjectName(managed.getDomain(), user);
                  results.add(oname.toString());
              } catch (MalformedObjectNameException e) {
                  throw new IllegalArgumentException
                      ("Cannot create object name for user " + user);
              }
          }
          return ((String[]) results.toArray(new String[results.size()]));
  
      }
  
  
      // ------------------------------------------------------------- Operations
  
  
  }
  
  
  
  1.1                  jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MemoryUserDatabaseMBean.java
  
  Index: MemoryUserDatabaseMBean.java
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/MemoryUserDatabaseMBean.java,v 1.1 2002/01/22 23:22:24 craigmcc Exp $
   * $Revision: 1.1 $
   * $Date: 2002/01/22 23:22:24 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * [Additional notices, if required by prior licensing conditions]
   *
   */
  
  package org.apache.catalina.mbeans;
  
  
  import java.util.ArrayList;
  import java.util.Iterator;
  import javax.management.MalformedObjectNameException;
  import javax.management.MBeanException;
  import javax.management.MBeanServer;
  import javax.management.ObjectName;
  import javax.management.RuntimeOperationsException;
  import org.apache.catalina.Group;
  import org.apache.catalina.User;
  import org.apache.catalina.UserDatabase;
  import org.apache.commons.modeler.BaseModelMBean;
  import org.apache.commons.modeler.ManagedBean;
  import org.apache.commons.modeler.Registry;
  
  
  /**
   * <p>A <strong>ModelMBean</strong> implementation for the
   * <code>org.apache.catalina.users.MemoryUserDatabase</code> component.</p>
   *
   * @author Craig R. McClanahan
   * @version $Revision: 1.1 $ $Date: 2002/01/22 23:22:24 $
   */
  
  public class MemoryUserDatabaseMBean extends BaseModelMBean {
  
  
      // ----------------------------------------------------------- Constructors
  
  
      /**
       * Construct a <code>ModelMBean</code> with default
       * <code>ModelMBeanInfo</code> information.
       *
       * @exception MBeanException if the initializer of an object
       *  throws an exception
       * @exception RuntimeOperationsException if an IllegalArgumentException
       *  occurs
       */
      public MemoryUserDatabaseMBean()
          throws MBeanException, RuntimeOperationsException {
  
          super();
  
      }
  
  
      // ----------------------------------------------------- Instance Variables
  
  
      /**
       * The configuration information registry for our managed beans.
       */
      protected Registry registry = MBeanUtils.createRegistry();
  
  
      /**
       * The <code>MBeanServer</code> in which we are registered.
       */
      protected MBeanServer mserver = MBeanUtils.createServer();
  
  
      /**
       * The <code>ManagedBean</code> information describing this MBean.
       */
      protected ManagedBean managed =
          registry.findManagedBean("MemoryUserDatabase");
  
  
      /**
       * The <code>ManagedBean</code> information describing Group MBeans.
       */
      protected ManagedBean managedGroup =
          registry.findManagedBean("Group");
  
  
      /**
       * The <code>ManagedBean</code> information describing User MBeans.
       */
      protected ManagedBean managedUser =
          registry.findManagedBean("User");
  
  
      // ------------------------------------------------------------- Attributes
  
  
      /**
       * Return the MBean Names of all groups defined in this database.
       */
      public String[] getGroups() {
  
          UserDatabase database = (UserDatabase) this.resource;
          ArrayList results = new ArrayList();
          Iterator groups = database.getGroups();
          while (groups.hasNext()) {
              Group group = (Group) groups.next();
              results.add(findGroup(group.getGroupname()));
          }
          return ((String[]) results.toArray(new String[results.size()]));
  
      }
  
  
      /**
       * Return the MBean Names of all users defined in this database.
       */
      public String[] getUsers() {
  
          UserDatabase database = (UserDatabase) this.resource;
          ArrayList results = new ArrayList();
          Iterator users = database.getUsers();
          while (users.hasNext()) {
              User user = (User) users.next();
              results.add(findUser(user.getUsername()));
          }
          return ((String[]) results.toArray(new String[results.size()]));
                                              
      }
  
  
      // ------------------------------------------------------------- Operations
  
  
      /**
       * Create a new Group and return the corresponding MBean Name.
       *
       * @param groupname Group name of the new group
       * @param description Description of the new group
       * @param roles Roles list for the new group
       */
      public String createGroup(String groupname, String description,
                                String roles[]) {
  
          UserDatabase database = (UserDatabase) this.resource;
          Group group = database.createGroup(groupname, description);
          if (roles != null) {
              for (int i = 0; i < roles.length; i++) {
                  group.addRole(roles[i]);
              }
          }
          try {
              MBeanUtils.createMBean(group);
          } catch (Exception e) {
              throw new IllegalArgumentException("Exception creating group " +
                                                 group + " MBean: " + e);
          }
          return (findGroup(groupname));
  
      }
  
  
      /**
       * Create a new User and return the corresponding MBean Name.
       *
       * @param username User name of the new user
       * @param password Password for the new user
       * @param fullName Full name for the new user
       * @param roles Roles list for the new user
       */
      public String createUser(String username, String password,
                               String fullName, String roles[]) {
  
          UserDatabase database = (UserDatabase) this.resource;
          User user = database.createUser(username, password, fullName);
          if (roles != null) {
              for (int i = 0; i < roles.length; i++) {
                  user.addRole(roles[i]);
              }
          }
          try {
              MBeanUtils.createMBean(user);
          } catch (Exception e) {
              throw new IllegalArgumentException("Exception creating user " +
                                                 user + " MBean: " + e);
          }
          return (findUser(username));
  
      }
  
  
      /**
       * Return the MBean Name for the specified group name (if any);
       * otherwise return <code>null</code>.
       *
       * @param groupname Group name to look up
       */
      public String findGroup(String groupname) {
  
          UserDatabase database = (UserDatabase) this.resource;
          Group group = database.findGroup(groupname);
          if (group == null) {
              return (null);
          }
          try {
              ObjectName oname =
                  MBeanUtils.createObjectName(managedGroup.getDomain(), group);
              return (oname.toString());
          } catch (MalformedObjectNameException e) {
              throw new IllegalArgumentException
                  ("Cannot create object name for group " + group);
          }
  
      }
  
  
      /**
       * Return the MBean Name for the specified user name (if any);
       * otherwise return <code>null</code>.
       *
       * @param username User name to look up
       */
      public String findUser(String username) {
  
          UserDatabase database = (UserDatabase) this.resource;
          User user = database.findUser(username);
          if (user == null) {
              return (null);
          }
          try {
              ObjectName oname =
                  MBeanUtils.createObjectName(managedUser.getDomain(), user);
              return (oname.toString());
          } catch (MalformedObjectNameException e) {
              throw new IllegalArgumentException
                  ("Cannot create object name for user " + user);
          }
  
      }
  
  
      /**
       * Remove an existing group and destroy the corresponding MBean.
       *
       * @param groupname Group name to remove
       */
      public void removeGroup(String groupname) {
  
          UserDatabase database = (UserDatabase) this.resource;
          Group group = database.findGroup(groupname);
          if (group == null) {
              return;
          }
          try {
              MBeanUtils.destroyMBean(group);
          } catch (Exception e) {
              throw new IllegalArgumentException("Exception destroying group " +
                                                 group + " MBean: " + e);
          }
  
      }
  
  
      /**
       * Remove an existing user and destroy the corresponding MBean.
       *
       * @param username User name to remove
       */
      public void removeUser(String username) {
  
          UserDatabase database = (UserDatabase) this.resource;
          User user = database.findUser(username);
          if (user == null) {
              return;
          }
          try {
              MBeanUtils.destroyMBean(user);
          } catch (Exception e) {
              throw new IllegalArgumentException("Exception destroying user " +
                                                 user + " MBean: " + e);
          }
  
      }
  
  
  }
  
  
  
  1.1                  jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/UserMBean.java
  
  Index: UserMBean.java
  ===================================================================
  /*
   * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/UserMBean.java,v 1.1 2002/01/22 23:22:24 craigmcc Exp $
   * $Revision: 1.1 $
   * $Date: 2002/01/22 23:22:24 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * [Additional notices, if required by prior licensing conditions]
   *
   */
  
  package org.apache.catalina.mbeans;
  
  
  import java.util.ArrayList;
  import java.util.Iterator;
  import javax.management.MalformedObjectNameException;
  import javax.management.MBeanException;
  import javax.management.MBeanServer;
  import javax.management.ObjectName;
  import javax.management.RuntimeOperationsException;
  import org.apache.catalina.Group;
  import org.apache.catalina.User;
  import org.apache.catalina.UserDatabase;
  import org.apache.commons.modeler.BaseModelMBean;
  import org.apache.commons.modeler.ManagedBean;
  import org.apache.commons.modeler.Registry;
  
  
  /**
   * <p>A <strong>ModelMBean</strong> implementation for the
   * <code>org.apache.catalina.User</code> component.</p>
   *
   * @author Craig R. McClanahan
   * @version $Revision: 1.1 $ $Date: 2002/01/22 23:22:24 $
   */
  
  public class UserMBean extends BaseModelMBean {
  
  
      // ----------------------------------------------------------- Constructors
  
  
      /**
       * Construct a <code>ModelMBean</code> with default
       * <code>ModelMBeanInfo</code> information.
       *
       * @exception MBeanException if the initializer of an object
       *  throws an exception
       * @exception RuntimeOperationsException if an IllegalArgumentException
       *  occurs
       */
      public UserMBean()
          throws MBeanException, RuntimeOperationsException {
  
          super();
  
      }
  
  
      // ----------------------------------------------------- Instance Variables
  
  
      /**
       * The configuration information registry for our managed beans.
       */
      protected Registry registry = MBeanUtils.createRegistry();
  
  
      /**
       * The <code>MBeanServer</code> in which we are registered.
       */
      protected MBeanServer mserver = MBeanUtils.createServer();
  
  
      /**
       * The <code>ManagedBean</code> information describing this MBean.
       */
      protected ManagedBean managed =
          registry.findManagedBean("User");
  
  
      // ------------------------------------------------------------- Attributes
  
  
      /**
       * Return the MBean Names of all groups this user is a member of
       */
      public String[] getGroups() {
  
          User user = (User) this.resource;
          ArrayList results = new ArrayList();
          Iterator groups = user.getGroups();
          while (groups.hasNext()) {
              Group group = null;
              try {
                  group = (Group) groups.next();
                  ObjectName oname =
                      MBeanUtils.createObjectName(managed.getDomain(), group);
                  results.add(oname.toString());
              } catch (MalformedObjectNameException e) {
                  throw new IllegalArgumentException
                      ("Cannot create object name for group " + group);
              }
          }
          return ((String[]) results.toArray(new String[results.size()]));
  
      }
  
  
      /**
       * Return the set of authorized roles for this user.
       */
      public String[] getRoles() {
  
          User user = (User) this.resource;
          ArrayList results = new ArrayList();
          Iterator roles = user.getRoles();
          while (roles.hasNext()) {
              results.add(roles.next());
          }
          return ((String[]) results.toArray(new String[results.size()]));
  
      }
  
  
      // ------------------------------------------------------------- Operations
  
  
      /**
       * Add a new {@link Group} to those this user belongs to.
       *
       * @param groupname Group name of the new group
       */
      public void addGroup(String groupname) {
  
          User user = (User) this.resource;
          if (user == null) {
              return;
          }
          Group group = user.getUserDatabase().findGroup(groupname);
          if (group == null) {
              throw new IllegalArgumentException
                  ("Invalid group name '" + groupname + "'");
          }
          user.addGroup(group);
  
      }
  
  
      /**
       * Remove a {@link Group} from those this user belongs to.
       *
       * @param groupname Group name of the old group
       */
      public void removeGroup(String groupname) {
  
          User user = (User) this.resource;
          if (user == null) {
              return;
          }
          Group group = user.getUserDatabase().findGroup(groupname);
          if (group == null) {
              throw new IllegalArgumentException
                  ("Invalid group name '" + groupname + "'");
          }
          user.removeGroup(group);
  
      }
  
  
  
  }
  
  
  
  1.2       +14 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryGroup.java
  
  Index: MemoryGroup.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryGroup.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MemoryGroup.java	20 Jan 2002 03:00:57 -0000	1.1
  +++ MemoryGroup.java	22 Jan 2002 23:22:24 -0000	1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryGroup.java,v 1.1 2002/01/20 03:00:57 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2002/01/20 03:00:57 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryGroup.java,v 1.2 2002/01/22 23:22:24 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2002/01/22 23:22:24 $
    *
    * ====================================================================
    * The Apache Software License, Version 1.1
  @@ -76,7 +76,7 @@
    * {@link MemoryUserDatabase} implementation of {@link UserDatabase}.</p>
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2002/01/20 03:00:57 $
  + * @version $Revision: 1.2 $ $Date: 2002/01/22 23:22:24 $
    * @since 4.1
    */
   
  @@ -115,6 +115,16 @@
   
   
       // --------------------------------------------------------- Public Methods
  +
  +
  +    /**
  +     * Return the {@link UserDatabase} within which this Group is defined.
  +     */
  +    public UserDatabase getUserDatabase() {
  +
  +        return (this.database);
  +
  +    }
   
   
       /**
  
  
  
  1.2       +14 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUser.java
  
  Index: MemoryUser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUser.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MemoryUser.java	20 Jan 2002 03:00:57 -0000	1.1
  +++ MemoryUser.java	22 Jan 2002 23:22:24 -0000	1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUser.java,v 1.1 2002/01/20 03:00:57 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2002/01/20 03:00:57 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUser.java,v 1.2 2002/01/22 23:22:24 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2002/01/22 23:22:24 $
    *
    * ====================================================================
    * The Apache Software License, Version 1.1
  @@ -76,7 +76,7 @@
    * {@link MemoryUserDatabase} implementation of {@link UserDatabase}.</p>
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2002/01/20 03:00:57 $
  + * @version $Revision: 1.2 $ $Date: 2002/01/22 23:22:24 $
    * @since 4.1
    */
   
  @@ -133,6 +133,16 @@
           synchronized (groups) {
               return (groups.iterator());
           }
  +
  +    }
  +
  +
  +    /**
  +     * Return the {@link UserDatabase} within which this User is defined.
  +     */
  +    public UserDatabase getUserDatabase() {
  +
  +        return (this.database);
   
       }
   
  
  
  
  1.2       +46 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUserDatabase.java
  
  Index: MemoryUserDatabase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUserDatabase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MemoryUserDatabase.java	20 Jan 2002 03:00:57 -0000	1.1
  +++ MemoryUserDatabase.java	22 Jan 2002 23:22:24 -0000	1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUserDatabase.java,v 1.1 2002/01/20 03:00:57 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2002/01/20 03:00:57 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUserDatabase.java,v 1.2 2002/01/22 23:22:24 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2002/01/22 23:22:24 $
    *
    * ====================================================================
    * The Apache Software License, Version 1.1
  @@ -87,13 +87,39 @@
    * a specified XML file for its persistent storage.</p>
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2002/01/20 03:00:57 $
  + * @version $Revision: 1.2 $ $Date: 2002/01/22 23:22:24 $
    * @since 4.1
    */
   
   public class MemoryUserDatabase implements UserDatabase {
   
   
  +    // ----------------------------------------------------------- Constructors
  +
  +
  +    /**
  +     * Create a new instance with default values.
  +     */
  +    public MemoryUserDatabase() {
  +
  +        super();
  +
  +    }
  +
  +
  +    /**
  +     * Create a new instance with the specified values.
  +     *
  +     * @param id Unique global identifier of this user database
  +     */
  +    public MemoryUserDatabase(String id) {
  +
  +        super();
  +        this.id = id;
  +
  +    }
  +
  +
       // ----------------------------------------------------- Instance Variables
   
   
  @@ -113,6 +139,12 @@
   
   
       /**
  +     * The unique global identifier of this user database.
  +     */
  +    protected String id = null;
  +
  +
  +    /**
        * The relative (to <code>catalina.base</code>) or absolute pathname to
        * the XML file in which we will save our persistent information.
        */
  @@ -180,6 +212,16 @@
           synchronized (groups) {
               return (groups.values().iterator());
           }
  +
  +    }
  +
  +
  +    /**
  +     * Return the unique global identifier of this user database.
  +     */
  +    public String getId() {
  +
  +        return (this.id);
   
       }
   
  
  
  
  1.2       +5 -5      jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUserDatabaseFactory.java
  
  Index: MemoryUserDatabaseFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUserDatabaseFactory.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MemoryUserDatabaseFactory.java	20 Jan 2002 03:00:57 -0000	1.1
  +++ MemoryUserDatabaseFactory.java	22 Jan 2002 23:22:24 -0000	1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUserDatabaseFactory.java,v 1.1 2002/01/20 03:00:57 craigmcc Exp $
  - * $Revision: 1.1 $
  - * $Date: 2002/01/20 03:00:57 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/MemoryUserDatabaseFactory.java,v 1.2 2002/01/22 23:22:24 craigmcc Exp $
  + * $Revision: 1.2 $
  + * $Date: 2002/01/22 23:22:24 $
    *
    * ====================================================================
    * The Apache Software License, Version 1.1
  @@ -94,7 +94,7 @@
    * </ul>
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.1 $ $Date: 2002/01/20 03:00:57 $
  + * @version $Revision: 1.2 $ $Date: 2002/01/22 23:22:24 $
    * @since 4.1
    */
   
  @@ -135,7 +135,7 @@
   
           // Create and configure a MemoryUserDatabase instance based on the
           // RefAddr values associated with this Reference
  -        MemoryUserDatabase database = new MemoryUserDatabase();
  +        MemoryUserDatabase database = new MemoryUserDatabase(name.toString());
           RefAddr ra = null;
   
           ra = ref.get("encoding");
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>