Coverage Report - org.apache.turbine.services.security.UserManager
 
Classes in this File Line Coverage Branch Coverage Complexity
UserManager
N/A
N/A
1
 
 1  
 package org.apache.turbine.services.security;
 2  
 
 3  
 /*
 4  
  * Licensed to the Apache Software Foundation (ASF) under one
 5  
  * or more contributor license agreements.  See the NOTICE file
 6  
  * distributed with this work for additional information
 7  
  * regarding copyright ownership.  The ASF licenses this file
 8  
  * to you under the Apache License, Version 2.0 (the
 9  
  * "License"); you may not use this file except in compliance
 10  
  * with the License.  You may obtain a copy of the License at
 11  
  *
 12  
  *   http://www.apache.org/licenses/LICENSE-2.0
 13  
  *
 14  
  * Unless required by applicable law or agreed to in writing,
 15  
  * software distributed under the License is distributed on an
 16  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 17  
  * KIND, either express or implied.  See the License for the
 18  
  * specific language governing permissions and limitations
 19  
  * under the License.
 20  
  */
 21  
 
 22  
 import java.util.List;
 23  
 
 24  
 import org.apache.commons.configuration.Configuration;
 25  
 
 26  
 import org.apache.turbine.om.security.User;
 27  
 import org.apache.turbine.services.InitializationException;
 28  
 import org.apache.turbine.util.security.DataBackendException;
 29  
 import org.apache.turbine.util.security.EntityExistsException;
 30  
 import org.apache.turbine.util.security.PasswordMismatchException;
 31  
 import org.apache.turbine.util.security.UnknownEntityException;
 32  
 
 33  
 /**
 34  
  * An UserManager performs {@link org.apache.turbine.om.security.User} objects
 35  
  * related tasks on behalf of the
 36  
  * {@link org.apache.turbine.services.security.BaseSecurityService}.
 37  
  *
 38  
  * The responsibilities of this class include loading data of an user from the
 39  
  * storage and putting them into the
 40  
  * {@link org.apache.turbine.om.security.User} objects, saving those data
 41  
  * to the permanent storage, and authenticating users.
 42  
  *
 43  
  * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
 44  
  * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
 45  
  * @version $Id: UserManager.java 1096130 2011-04-23 10:37:19Z ludwig $
 46  
  */
 47  
 public interface UserManager
 48  
 {
 49  
     /**
 50  
      * Initializes the UserManager
 51  
      *
 52  
      * @param conf A Configuration object to init this Manager
 53  
      *
 54  
      * @throws InitializationException When something went wrong.
 55  
      */
 56  
     void init(Configuration conf)
 57  
         throws InitializationException;
 58  
 
 59  
     /**
 60  
      * Check whether a specified user's account exists.
 61  
      *
 62  
      * The login name is used for looking up the account.
 63  
      *
 64  
      * @param user The user to be checked.
 65  
      * @return true if the specified account exists
 66  
      * @throws DataBackendException if there was an error accessing the data
 67  
      *         backend.
 68  
      */
 69  
     boolean accountExists(User user)
 70  
             throws DataBackendException;
 71  
 
 72  
     /**
 73  
      * Check whether a specified user's account exists.
 74  
      *
 75  
      * The login name is used for looking up the account.
 76  
      *
 77  
      * @param userName The name of the user to be checked.
 78  
      * @return true if the specified account exists
 79  
      * @throws DataBackendException if there was an error accessing the data
 80  
      *         backend.
 81  
      */
 82  
     boolean accountExists(String userName)
 83  
             throws DataBackendException;
 84  
 
 85  
     /**
 86  
      * Retrieve a user from persistent storage using username as the
 87  
      * key.
 88  
      *
 89  
      * @param username the name of the user.
 90  
      * @return an User object.
 91  
      * @throws UnknownEntityException if the user's record does not
 92  
      *         exist in the database.
 93  
      * @throws DataBackendException if there is a problem accessing the
 94  
      *         storage.
 95  
      */
 96  
     User retrieve(String username)
 97  
             throws UnknownEntityException, DataBackendException;
 98  
 
 99  
     /**
 100  
      * Retrieve a set of users that meet the specified criteria.
 101  
      *
 102  
      * As the keys for the criteria, you should use the constants that
 103  
      * are defined in {@link User} interface, plus the names
 104  
      * of the custom attributes you added to your user representation
 105  
      * in the data storage. Use verbatim names of the attributes -
 106  
      * without table name prefix in case of DB implementation.
 107  
      *
 108  
      * @param criteria The criteria of selection.
 109  
      * @return a List of users meeting the criteria.
 110  
      * @throws DataBackendException if there is a problem accessing the
 111  
      *         storage.
 112  
      * @deprecated Use retrieveList(Criteria crit)
 113  
      */
 114  
     User[] retrieve(Object criteria) throws DataBackendException;
 115  
 
 116  
     /**
 117  
      * Retrieve a list of users that meet the specified criteria.
 118  
      *
 119  
      * As the keys for the criteria, you should use the constants that
 120  
      * are defined in {@link User} interface, plus the names
 121  
      * of the custom attributes you added to your user representation
 122  
      * in the data storage. Use verbatim names of the attributes -
 123  
      * without table name prefix in case of DB implementation.
 124  
      *
 125  
      * @param criteria The criteria of selection.
 126  
      * @return a List of users meeting the criteria.
 127  
      * @throws DataBackendException if there is a problem accessing the
 128  
      *         storage.
 129  
      */
 130  
     List retrieveList(Object criteria)
 131  
         throws DataBackendException;
 132  
 
 133  
     /**
 134  
      * Retrieve a user from persistent storage using username as the
 135  
      * key, and authenticate the user. The implementation may chose
 136  
      * to authenticate to the server as the user whose data is being
 137  
      * retrieved.
 138  
      *
 139  
      * @param username the name of the user.
 140  
      * @param password the user supplied password.
 141  
      * @return an User object.
 142  
      * @throws PasswordMismatchException if the supplied password was incorrect.
 143  
      * @throws UnknownEntityException if the user's record does not
 144  
      *         exist in the database.
 145  
      * @throws DataBackendException if there is a problem accessing the storage.
 146  
      */
 147  
     User retrieve(String username, String password)
 148  
             throws PasswordMismatchException, UnknownEntityException,
 149  
             DataBackendException;
 150  
 
 151  
     /**
 152  
      * Save an User object to persistent storage. User's record is
 153  
      * required to exist in the storage.
 154  
      *
 155  
      * @param user an User object to store.
 156  
      * @throws UnknownEntityException if the user's record does not
 157  
      *         exist in the database.
 158  
      * @throws DataBackendException if there is a problem accessing the storage.
 159  
      */
 160  
     void store(User user)
 161  
             throws UnknownEntityException, DataBackendException;
 162  
 
 163  
     /**
 164  
      * Saves User data when the session is unbound. The user account is required
 165  
      * to exist in the storage.
 166  
      *
 167  
      * LastLogin, AccessCounter, persistent pull tools, and any data stored
 168  
      * in the permData hashtable that is not mapped to a column will be saved.
 169  
      *
 170  
      * @exception UnknownEntityException if the user's account does not
 171  
      *            exist in the database.
 172  
      * @exception DataBackendException if there is a problem accessing the
 173  
      *            storage.
 174  
      */
 175  
     void saveOnSessionUnbind(User user)
 176  
             throws UnknownEntityException, DataBackendException;
 177  
 
 178  
     /**
 179  
      * Authenticate an User with the specified password. If authentication
 180  
      * is successful the method returns nothing. If there are any problems,
 181  
      * exception was thrown.
 182  
      *
 183  
      * @param user an User object to authenticate.
 184  
      * @param password the user supplied password.
 185  
      * @throws PasswordMismatchException if the supplied password was incorrect.
 186  
      * @throws UnknownEntityException if the user's record does not
 187  
      *         exist in the database.
 188  
      * @throws DataBackendException if there is a problem accessing the storage.
 189  
      */
 190  
     void authenticate(User user, String password)
 191  
             throws PasswordMismatchException, UnknownEntityException,
 192  
             DataBackendException;
 193  
 
 194  
     /**
 195  
      * Creates new user account with specified attributes.
 196  
      *
 197  
      * @param user the object describing account to be created.
 198  
      * @param initialPassword password for the new user
 199  
      * @throws DataBackendException if there was an error accessing the data
 200  
      *         backend.
 201  
      * @throws EntityExistsException if the user account already exists.
 202  
      */
 203  
     void createAccount(User user, String initialPassword)
 204  
             throws EntityExistsException, DataBackendException;
 205  
 
 206  
     /**
 207  
      * Removes an user account from the system.
 208  
      *
 209  
      * @param user the object describing the account to be removed.
 210  
      * @throws DataBackendException if there was an error accessing the data
 211  
      *         backend.
 212  
      * @throws UnknownEntityException if the user account is not present.
 213  
      */
 214  
     void removeAccount(User user)
 215  
             throws UnknownEntityException, DataBackendException;
 216  
 
 217  
     /**
 218  
      * Change the password for an User.
 219  
      *
 220  
      * @param user an User to change password for.
 221  
      * @param oldPassword the current password suplied by the user.
 222  
      * @param newPassword the current password requested by the user.
 223  
      * @throws PasswordMismatchException if the supplied password was incorrect.
 224  
      * @throws UnknownEntityException if the user's record does not
 225  
      *         exist in the database.
 226  
      * @throws DataBackendException if there is a problem accessing the storage.
 227  
      */
 228  
     void changePassword(User user, String oldPassword,
 229  
                         String newPassword)
 230  
             throws PasswordMismatchException, UnknownEntityException,
 231  
             DataBackendException;
 232  
 
 233  
     /**
 234  
      * Forcibly sets new password for an User.
 235  
      *
 236  
      * This is supposed by the administrator to change the forgotten or
 237  
      * compromised passwords. Certain implementatations of this feature
 238  
      * would require administrative level access to the authenticating
 239  
      * server / program.
 240  
      *
 241  
      * @param user an User to change password for.
 242  
      * @param password the new password.
 243  
      * @throws UnknownEntityException if the user's record does not
 244  
      *            exist in the database.
 245  
      * @throws DataBackendException if there is a problem accessing the storage.
 246  
      */
 247  
     void forcePassword(User user, String password)
 248  
             throws UnknownEntityException, DataBackendException;
 249  
 }