AuthenticatorException.java
/*
* This software was designed and created by Jason Carroll.
* Copyright (c) 2002, 2003, 2004 Jason Carroll.
* The author can be reached at jcarroll@cowsultants.com
* ITracker website: http://www.cowsultants.com
* ITracker forums: http://www.cowsultants.com/phpBB/index.php
*
* This program is free software; you can redistribute it and/or modify
* it only under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
package org.itracker.services.exceptions;
/**
* This class encapsulates the errors that may occur during a login
* or other types of actions typically performed by a pluggable
* authentication module.<br><br>
* A pluggable authentication module should set the type of error generated
* using the setType method, or the appropriate constructor. If the type
* of error does not match one of the existing types and the error should
* be returned to the user, the module should use the CUSTOM_ERROR type,
* and then also populate the the messageKey attribute with a key that would
* be suitable for display to the user.<br><br>
* This class can also be used to send the user to a custom error page in the
* event of a failure. If this is required, the page type should be set using
* the setErrorPageType method, and the appropriate value for the type is set
* using setErrorPageValue. The currently supported types are either a URL
* or a Struts forward action mapping..
*/
public class AuthenticatorException extends RuntimeException {
/**
*
*/
private static final long serialVersionUID = -7799413588815903874L;
public static final int INVALID_DATA = -1;
public static final int UNKNOWN_USER = -2;
public static final int INVALID_PASSWORD = -3;
public static final int INACTIVE_ACCOUNT = -4;
public static final int SYSTEM_ERROR = -5;
public static final int INVALID_AUTHENTICATION_TYPE = -6;
public static final int CUSTOM_ERROR = -7;
public static final int ERRORPAGE_TYPE_UNDEFINED = -1;
public static final int ERRORPAGE_TYPE_FORWARD = 1;
public static final int ERRORPAGE_TYPE_URL = 2;
private int type = 0;
private String messageKey = "itracker.web.error.login.system";
private int errorPageType = ERRORPAGE_TYPE_UNDEFINED;
private String errorPageValue = null;
public AuthenticatorException() {
}
public AuthenticatorException(int type) {
this.type = type;
}
public AuthenticatorException(int type, String messageKey) {
this(type);
this.messageKey = messageKey;
}
public AuthenticatorException(String message, int type) {
super(message);
this.type = type;
}
public AuthenticatorException(String message, int type, Throwable cause) {
super(message, cause);
this.type = type;
}
public AuthenticatorException(String message, int type, String messageKey) {
this(message, type);
this.messageKey = messageKey;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getMessage() {
String message = super.getMessage();
if (message == null || message.equals("")) {
message = "Empty message, type: " + getTypeString();
}
return message;
}
/**
* Returns a key that contains a custom error message to display to the user.
*
* @return a resource key that can be used to look up the custom error
* message for this exception.
*/
public String getMessageKey() {
return messageKey;
}
/**
* Sets a key that contains a custom error message to display to the user.
*
* @param messageKey a resource key that can be used to look up the custom error
* message for this exception.
*/
public void setMessageKey(String messageKey) {
this.messageKey = messageKey;
}
/**
* Returns the type of error page that is has been set.
* Supported values are urls and Struts forward action mappings.
*
* @see AuthenticatorException#ERRORPAGE_TYPE_FORWARD
* @see AuthenticatorException#ERRORPAGE_TYPE_URL
*/
public int getErrorPageType() {
return errorPageType;
}
/**
* Sets the type of error page that should be used to display this exception.
* Supported values are urls and Struts forward action mappings.
*
* @param value the type of error page that has been set
* @see AuthenticatorException#ERRORPAGE_TYPE_FORWARD
* @see AuthenticatorException#ERRORPAGE_TYPE_URL
*/
public void setErrorPageType(int value) {
errorPageType = value;
}
/**
* Returns the error page that should be used to display this exception
* Supported values are urls and Struts forward action mappings. The type that
* has been set must be identified using the setErrorPageType method.
*
* @see AuthenticatorException#setErrorPageType
*/
public String getErrorPageValue() {
return errorPageValue;
}
/**
* Returns the error page that should be used to display this exception
* Supported values are urls and Struts forward action mappings. The type that
* has been set must be identified using the setErrorPageType method.
*
* @param value the error page that should be used to display this message
* @see AuthenticatorException#setErrorPageType
*/
public void setErrorPageValue(String value) {
errorPageValue = value;
}
private String getTypeString() {
if (type == INVALID_DATA) {
return "Invalid Data";
} else if (type == UNKNOWN_USER) {
return "Unknown User";
} else if (type == INVALID_PASSWORD) {
return "Invalid Password";
} else if (type == INACTIVE_ACCOUNT) {
return "Inactive Account";
} else if (type == SYSTEM_ERROR) {
return "System Error";
} else if (type == INVALID_AUTHENTICATION_TYPE) {
return "Invalid Authentication Type";
} else if (type == CUSTOM_ERROR) {
return "Custom Error. Check message key.";
}
return "Unknown Type";
}
}