X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fusermgt%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthentication%2FUserMgtException.java;fp=security%2Fusermgt%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthentication%2FUserMgtException.java;h=744c0d8a717aa46ddab20c70f7b9600e27736eea;hb=9449ea0f360f6e9c14057db57f3ee0bfba947ab4;hp=0000000000000000000000000000000000000000;hpb=e8b988e92306a4aea2f047af1b48588147288831;p=utils diff --git a/security/usermgt/src/main/java/org/wamblee/security/authentication/UserMgtException.java b/security/usermgt/src/main/java/org/wamblee/security/authentication/UserMgtException.java new file mode 100644 index 00000000..744c0d8a --- /dev/null +++ b/security/usermgt/src/main/java/org/wamblee/security/authentication/UserMgtException.java @@ -0,0 +1,136 @@ +/* + * Copyright 2005-2010 the original author or authors. + * + * Licensed 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.wamblee.security.authentication; + +import java.util.EnumMap; + +/** + * User management exception. + * + * @author Erik Brakkee + */ +public class UserMgtException extends RuntimeException { + static final long serialVersionUID = 5585349754997507529L; + + /** + * Mapping of enum to exception message text. + */ + private static final EnumMap MESSAGES = new EnumMap( + Reason.class); + + static { + MESSAGES.put(Reason.UNKNOWN_USER, "Unknown user"); + MESSAGES.put(Reason.UNKNOWN_GROUP, "Unknown group"); + MESSAGES.put(Reason.DUPLICATE_USER, "Duplicate user"); + MESSAGES.put(Reason.DUPLICATE_GROUP, "Duplicate group"); + MESSAGES.put(Reason.USER_ALREADY_IN_GROUP, "User already in group"); + MESSAGES.put(Reason.USER_NOT_IN_GROUP, "User not in group"); + MESSAGES.put(Reason.INVALID_PASSWORD, "Invalid password"); + MESSAGES.put(Reason.GROUP_STILL_OCCUPIED, "Group still occupied"); + MESSAGES.put(Reason.USER_MUST_BE_IN_A_GROUP, + "User must be in at least one group"); + MESSAGES.put(Reason.INVALID_USERNAME, "Invalid user name"); + MESSAGES.put(Reason.INVALID_GROUPNAME, "Invalid group name"); + } + + /** + * Cause of the exception. + */ + private Reason cause; + + /** + * User or null if no user is relevant for the problem. + */ + private User user; + + /** + * Group or null if no group is relevant for the problem. + */ + private Group group; + + /** + * Creates a new UserMgtException object. + * + */ + public UserMgtException(Reason aCause, String aMessage) { + super(MESSAGES.get(aCause) + ": " + aMessage); + cause = aCause; + } + + /** + * Creates a new UserMgtException object. + * + */ + public UserMgtException(Reason aCause, User aUser) { + this(aCause, "for user '" + aUser.getName() + "'"); + user = aUser; + } + + /** + * Creates a new UserMgtException object. + * + */ + public UserMgtException(Reason aCause, Group aGroup) { + this(aCause, "for group '" + aGroup.getName() + "'"); + group = aGroup; + } + + /** + * Creates a new UserMgtException object. + * + */ + public UserMgtException(Reason aCause, User aUser, Group aGroup) { + this(aCause, "for user '" + aUser.getName() + "' and group '" + + aGroup.getName() + "'"); + user = aUser; + group = aGroup; + } + + /** + * Gets the cause of the problem. + * + * @return Cause. + */ + public Reason getReason() { + return cause; + } + + /** + * Gets the user for which the problem occurred. + * + * @return User or null if not applicable. + */ + public User getUser() { + return user; + } + + /** + * Gets the group for which the problem occured. + * + * @return Group or null if not applicable. + */ + public Group getGroup() { + return group; + } + + /** + * Possible causes for the exception. + * + */ + public enum Reason { + UNKNOWN_USER, UNKNOWN_GROUP, DUPLICATE_USER, DUPLICATE_GROUP, USER_ALREADY_IN_GROUP, USER_NOT_IN_GROUP, INVALID_PASSWORD, GROUP_STILL_OCCUPIED, USER_MUST_BE_IN_A_GROUP, INVALID_USERNAME, INVALID_GROUPNAME; + } +}