<?xml version="1.0"?>
<mbeans-descriptors>

  <mbean         name="JDBCUserDatabase"
            className="org.apache.catalina.mbeans.JDBCUserDatabaseMBean"
          description="JDBC based user and group database"
               domain="Users"
                group="UserDatabase"
                 type="org.apache.catalina.users.JDBCUserDatabase">

    <attribute   name="groups"
          description="MBean Names of all defined groups"
                 type="[Ljava.lang.String;"
            writeable="false"/>

    <attribute   name="roles"
          description="MBean Names of all defined roles"
                 type="[Ljava.lang.String;"
            writeable="false"/>

    <attribute   name="users"
          description="MBean Names of all defined users"
                 type="[Ljava.lang.String;"
            writeable="false"/>

    <operation   name="createGroup"
          description="Create new group and return MBean name"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="groupname"
          description="Group name of the new group"
                 type="java.lang.String"/>
      <parameter name="description"
          description="Description of the new group"
                 type="java.lang.String"/>
    </operation>

    <operation   name="createRole"
          description="Create new role and return MBean name"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="rolename"
          description="Role name of the new role"
                 type="java.lang.String"/>
      <parameter name="description"
          description="Description of the new role"
                 type="java.lang.String"/>
    </operation>

    <operation   name="createUser"
          description="Create new user and return MBean name"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="username"
          description="User name of the new user"
                 type="java.lang.String"/>
      <parameter name="password"
          description="Password of the new user"
                 type="java.lang.String"/>
      <parameter name="fullName"
          description="Full name of the new user"
                 type="java.lang.String"/>
    </operation>

    <operation   name="findGroup"
          description="Return MBean Name of the specified group (if any)"
               impact="INFO"
           returnType="java.lang.String">
      <parameter name="groupname"
          description="Group name of the requested group"
                 type="java.lang.String"/>
    </operation>

    <operation   name="findRole"
          description="Return MBean Name of the specified role (if any)"
               impact="INFO"
           returnType="java.lang.String">
      <parameter name="rolename"
          description="Role name of the requested role"
                 type="java.lang.String"/>
    </operation>

    <operation   name="findUser"
          description="Return MBean Name of the specified user (if any)"
               impact="INFO"
           returnType="java.lang.String">
      <parameter name="username"
          description="User name of the requested user"
                 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="removeRole"
          description="Remove existing role"
               impact="ACTION"
           returnType="void">
      <parameter name="rolename"
          description="Role name of the role 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>

    <operation   name="save"
          description="Save current users and groups to persistent storage"
               impact="ACTION"
           returnType="void">
    </operation>


    <operation name="start" description="Start" impact="ACTION" returnType="void" />
    <operation name="stop" description="Stop" impact="ACTION" returnType="void" />
    <operation name="init" description="Init" impact="ACTION" returnType="void" />
    <operation name="destroy" description="Destroy" impact="ACTION" returnType="void" />
  </mbean>

  <mbean         name="MemoryUserDatabase"
            className="org.apache.catalina.mbeans.MemoryUserDatabaseMBean"
          description="In-memory user and group database"
               domain="Users"
                group="UserDatabase"
                 type="org.apache.catalina.users.MemoryUserDatabase">

    <attribute   name="encoding"
          description="Character encoding to use when writing XML file"
                 type="java.lang.String"/>

    <attribute   name="groups"
          description="MBean Names of all defined groups"
                 type="[Ljava.lang.String;"
            writeable="false"/>

    <attribute   name="pathname"
          description="Relative or absolute pathname to database file"
                 type="java.lang.String"/>

    <attribute   name="roles"
          description="MBean Names of all defined roles"
                 type="[Ljava.lang.String;"
            writeable="false"/>

    <attribute   name="users"
          description="MBean Names of all defined users"
                 type="[Ljava.lang.String;"
            writeable="false"/>

    <attribute   name="readonly"
          description="No persistant save of the user database"
                 type="boolean"
            writeable="false"/>

    <attribute   name="writeable"
          description="Check if user database is writeable"
               impact="INFO"
                   is="true"
           writeable="false"/>

    <operation   name="createGroup"
          description="Create new group and return MBean name"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="groupname"
          description="Group name of the new group"
                 type="java.lang.String"/>
      <parameter name="description"
          description="Description of the new group"
                 type="java.lang.String"/>
    </operation>

    <operation   name="createRole"
          description="Create new role and return MBean name"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="rolename"
          description="Role name of the new role"
                 type="java.lang.String"/>
      <parameter name="description"
          description="Description of the new role"
                 type="java.lang.String"/>
    </operation>

    <operation   name="createUser"
          description="Create new user and return MBean name"
               impact="ACTION"
           returnType="java.lang.String">
      <parameter name="username"
          description="User name of the new user"
                 type="java.lang.String"/>
      <parameter name="password"
          description="Password of the new user"
                 type="java.lang.String"/>
      <parameter name="fullName"
          description="Full name of the new user"
                 type="java.lang.String"/>
    </operation>

    <operation   name="findGroup"
          description="Return MBean Name of the specified group (if any)"
               impact="INFO"
           returnType="java.lang.String">
      <parameter name="groupname"
          description="Group name of the requested group"
                 type="java.lang.String"/>
    </operation>

    <operation   name="findRole"
          description="Return MBean Name of the specified role (if any)"
               impact="INFO"
           returnType="java.lang.String">
      <parameter name="rolename"
          description="Role name of the requested role"
                 type="java.lang.String"/>
    </operation>

    <operation   name="findUser"
          description="Return MBean Name of the specified user (if any)"
               impact="INFO"
           returnType="java.lang.String">
      <parameter name="username"
          description="User name of the requested user"
                 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="removeRole"
          description="Remove existing role"
               impact="ACTION"
           returnType="void">
      <parameter name="rolename"
          description="Role name of the role 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>

    <operation   name="save"
          description="Save current users and groups to persistent storage"
               impact="ACTION"
           returnType="void">
    </operation>


    <operation name="start" description="Start" impact="ACTION" returnType="void" />
    <operation name="stop" description="Stop" impact="ACTION" returnType="void" />
    <operation name="init" description="Init" impact="ACTION" returnType="void" />
    <operation name="destroy" description="Destroy" impact="ACTION" returnType="void" />
  </mbean>


</mbeans-descriptors>
