/**
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2005 Sun Microsystems Inc. All Rights Reserved
*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the License at
* See the License for the specific language governing
* permission and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* Header Notice in each file and include the License file
* at opensso/legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* your own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* $Id: SMSException.java,v 1.7 2009/01/28 05:35:03 ww203982 Exp $
*
* Portions Copyrighted 2011-2015 ForgeRock AS.
*/
/**
* The exception class whose instance is thrown if there is any error during the
* operation of objects of the <code>com.sun.identity.sms</code> package. This
* class maps the exception that occurred at a lower level to a high level
* error. Using the exception status code <code>getExceptionCode()</code> the
* errors are categorized as a <code>ABORT</code>, <code>RETRY</code>,
* <code>CONFIG_PROBLEM</code> or <code>LDAP_OP_FAILED</code> (typically a
* bug).
*
* @supported.all.api
*/
/**
* Default constructor for <code> SMSException </code>
*/
public SMSException() {
super();
}
/**
* @param status
* The exception status code.
* @param errorCode
* Key to resource bundle.
*/
super();
}
/**
* @param status
* The Exception status code.
* @param exMessage
* The message provided by the object which is throwing the
* exception
* @param errorCode
* Key to resource bundle.
*/
}
/**
* @param msg
* The message provided by the object which is throwing the
* exception
*/
}
/**
* @param msg
* The message provided by the object which is throwing the
* exception
* @param errorCode
* Key to resource bundle.
*/
}
/**
* Constructs an <code>SMSException</code>.
*
* @param t
* The <code>Throwable</code> object provided by the object
* which is throwing the exception
* @param errorCode
* Key to resource bundle.
*/
super(t);
rootCause = t;
}
/**
* Constructs an <code>SMSException</code>.
*
* @param message
* exception message.
* @param t
* The <code>Throwable</code> object provided by the object
* which is throwing the exception.
* @param errorCode
* Key to resource bundle.
*/
super(message, t);
rootCause = t;
}
/**
* Constructs an <code>SMSException</code>.
*
* @param rbName
* Resource bundle Name to be used for getting localized error
* message.
* @param message
* exception message.
* @param t
* The <code>Throwable</code> object provided by the object
* which is throwing the exception.
* @param errorCode
* Key to resource bundle.
*/
super(message, t);
rootCause = t;
this.bundleName = rbName;
}
}
/**
* This constructor is used to pass the localized error message At this
* level, the locale of the caller is not known and it is not possible to
* throw localized error message at this level. Instead this constructor
* provides Resource Bundle name and error code for correctly locating the
* error message. The default <code>getMessage()</code> will always return
* English messages only. This is in consistent with current JRE.
*
* @param rbName
* Resource bundle Name to be used for getting localized error
* message.
* @param errorCode
* Key to resource bundle. You can use <code>ResourceBundle rb =
* ResourceBunde.getBundle(rbName,locale);
* String localizedStr = rb.getString(errorCode)</code>.
* @param args
* arguments to message. If it is not present pass the as null.
*/
this.bundleName = rbName;
}
/**
* Returns a localized error message
*
* @param locale
* Uses the locale object to create the appropriate localized
* error message
* @return localized error message.
* @see #SMSException(String, String, Object[])
*/
} else {
}
}
return result;
}
/**
* Returns <code>ResourceBundle</code> Name associated with this error
* message.
*
* @return <code>ResourceBundle</code> name associated with this error
* message.
* @see #SMSException(String, String, Object[])
*/
return bundleName;
}
/**
* Returns error code associated with this error message.
*
* @return Error code associated with this error message.
* @see #SMSException(String, String, Object[])
*/
return errorCode;
}
/**
* Returns arguments for formatting this error message.
*
* @return arguments for formatting this error message. You need to use
* <code>MessageFormat</code> class to format the message It can
* be null.
* @see #SMSException(String, String, Object[])
*/
return args;
}
/**
* Returns the status code for this exception.
*
* @return Integer representing the exception status code
*/
public int getExceptionCode() {
return exceptionStatus;
}
/**
* The this package can set the exception code.
*
* @param status
* The exception status code.
*/
}
if (exceptionStatus != -1) {
}
}
}
}
/**
* Returns the error message of this exception.
*
* @return String representing the error message
*/
return message;
}
if (bundleName != null) {
}
}
private void exceptionMapper() {
return;
}
if (rootCause instanceof LdapException) {
} else if (rootCause instanceof LDAPServiceException) {
// do nothing
} else if (rootCause instanceof XMLException) {
} else if (rootCause instanceof InvalidAuthContextException) {
} else if (rootCause instanceof SSOException) {
} else {
}
}
// ////////////////////////////////
// Errors that need to be handled
// ////////////////////////////////
// Helpless errors
// All errors are helpless situations
// but some are more helpless than the others.
// These errors are either problems in connection
// or configuration. So, some can be retired and
// some are already busted.
} else {
}
return message;
}
// Error codes
/** No status code is set */
/** Retry connection to data store */
/** Repeated retry to data store failed */
/** Status to abort operation */
/**
* If root LDAP cause is <code>LDAP_PARTIAL_RESULTS </code> then this
* status is set
*/
/**
* If root LDAP cause is an LDAP exception with one of the following error
* codes then this status is set.
* <p>
*
* <PRE>
*
* NO_SUCH_OBJECT OBJECT_CLASS_VIOLATION NAMING_VIOLATION
* CONSTRAINT_VIOLATION INVALID_DN_SYNTAX ENTRY_ALREADY_EXISTS
* ATTRIBUTE_OR_VALUE_EXISTS PROTOCOL_ERROR UNDEFINED_ATTRIBUTE_TYPE
*
* </PRE>
*/
/**
* If the root LDAP exception is <code> INVALID_CREDENTIALS </code> or
* <code> REFERRAL </code> then this status is set
*/
/** If root cause is other than any of those listed in other status codes */
/** If the root LDAP cause is <code> INSUFFICIENT_ACCESS_RIGHTS </code> */
/** the operation is not allowed. */
}