/*
* 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);
/**
* Signal the specified { @ link Group } from this user database has been
* modified .
*
* @ param group The group that has been modified
*/
default void modifiedGroup(Group group) {}
/**
* Signal the specified { @ link Role } from this user database has been
* modified .
*
* @ param role The role that has been modified
*/
default void modifiedRole(Role role) {}
/**
* Signal the specified { @ link User } from this user database has been
* modified .
*
* @ param user The user that has been modified
*/
default void modifiedUser(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;
/**
* Perform any background processing ( e . g . checking for changes in persisted
* storage ) required for the user database .
*/
default void backgroundProcess() {
// NO-OP by default
}
/**
* Is the database available .
*
* @ return true
*/
default boolean isAvailable() {
return true ;
}
/**
* Is the database data loaded on demand . This is used to avoid eager
* loading of the full database data , for example for JMX registration of
* all objects .
*
* @ return false
*/
default boolean isSparse() {
return false ;
}
}
Messung V0.5 in Prozent C=96 H=88 G=91
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland