| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.catalina; |
| |
| import java.util.Iterator; |
| |
| /** |
| * Abstract representation of a database of {@link User}s and {@link Group}s |
| * that can be maintained by an application, along with definitions of |
| * corresponding {@link Role}s, and referenced by a {@link Realm} for |
| * authentication and access control. |
| * |
| * @author Craig R. McClanahan |
| * @since 4.1 |
| */ |
| public interface UserDatabase { |
| |
| // ------------------------------------------------------------- Properties |
| |
| /** |
| * @return the set of {@link Group}s defined in this user database. |
| */ |
| Iterator<Group> getGroups(); |
| |
| |
| /** |
| * @return the unique global identifier of this user database. |
| */ |
| String getId(); |
| |
| |
| /** |
| * @return the set of {@link Role}s defined in this user database. |
| */ |
| Iterator<Role> getRoles(); |
| |
| |
| /** |
| * @return the set of {@link User}s defined in this user database. |
| */ |
| Iterator<User> getUsers(); |
| |
| |
| // --------------------------------------------------------- Public Methods |
| |
| /** |
| * Finalize access to this user database. |
| * |
| * @exception Exception if any exception is thrown during closing |
| */ |
| void close() throws Exception; |
| |
| |
| /** |
| * Create and return a new {@link Group} defined in this user database. |
| * |
| * @param groupname The group name of the new group (must be unique) |
| * @param description The description of this group |
| * @return The new group |
| */ |
| Group createGroup(String groupname, String description); |
| |
| |
| /** |
| * Create and return a new {@link Role} defined in this user database. |
| * |
| * @param rolename The role name of the new role (must be unique) |
| * @param description The description of this role |
| * @return The new role |
| */ |
| Role createRole(String rolename, String description); |
| |
| |
| /** |
| * Create and return a new {@link User} defined in this user database. |
| * |
| * @param username The logon username of the new user (must be unique) |
| * @param password The logon password of the new user |
| * @param fullName The full name of the new user |
| * @return The new user |
| */ |
| User createUser(String username, String password, String fullName); |
| |
| |
| /** |
| * @return the {@link Group} with the specified group name, if any; |
| * otherwise return <code>null</code>. |
| * |
| * @param groupname Name of the group to return |
| */ |
| Group findGroup(String groupname); |
| |
| |
| /** |
| * @return the {@link Role} with the specified role name, if any; otherwise |
| * return <code>null</code>. |
| * |
| * @param rolename Name of the role to return |
| */ |
| Role findRole(String rolename); |
| |
| |
| /** |
| * @return the {@link User} with the specified user name, if any; otherwise |
| * return <code>null</code>. |
| * |
| * @param username Name of the user to return |
| */ |
| User findUser(String username); |
| |
| |
| /** |
| * Initialize access to this user database. |
| * |
| * @exception Exception if any exception is thrown during opening |
| */ |
| void open() throws Exception; |
| |
| |
| /** |
| * Remove the specified {@link Group} from this user database. |
| * |
| * @param group The group to be removed |
| */ |
| void removeGroup(Group group); |
| |
| |
| /** |
| * Remove the specified {@link Role} from this user database. |
| * |
| * @param role The role to be removed |
| */ |
| void removeRole(Role role); |
| |
| |
| /** |
| * Remove the specified {@link User} from this user database. |
| * |
| * @param user The user to be removed |
| */ |
| void removeUser(User user); |
| |
| |
| /** |
| * Save any updated information to the persistent storage location for this |
| * user database. |
| * |
| * @exception Exception if any exception is thrown during saving |
| */ |
| void save() throws Exception; |
| |
| |
| } |