| BootstrapException.java |
/*
* $Id: BootstrapException.java,v 1.29 2012/02/28 18:10:54 agoubard Exp $
*
* See the COPYRIGHT file for redistribution and use restrictions.
*/
package org.xins.common.manageable;
import org.xins.common.text.TextUtils;
/**
* Exception thrown when the bootstrapping of a <code>Manageable</code>
* object failed.
*
* @version $Revision: 1.29 $ $Date: 2012/02/28 18:10:54 $
* @author <a href="mailto:ernst@ernstdehaan.com">Ernst de Haan</a>
*
* @since XINS 1.0.0
*
* @see Manageable#bootstrap(Map)
*/
public final class BootstrapException extends Exception {
/**
* Constructs a new <code>BootstrapException</code> with the specified
* message.
*
* @param message
* the detail message, or <code>null</code>.
*/
public BootstrapException(String message) {
this(message, null);
}
/**
* Constructs a new <code>BootstrapException</code> with the specified
* cause exception.
*
* @param cause
* the cause exception, cannot be <code>null</code>.
*
* @throws IllegalArgumentException
* if <code>cause == null</code>.
*/
public BootstrapException(Throwable cause)
throws IllegalArgumentException {
this(null, cause);
}
/**
* Constructs a new <code>BootstrapException</code> with the specified
* detail message and cause exception.
*
* @param detail
* the detail message, or <code>null</code>.
*
* @param cause
* the cause exception, or <code>null</code>.
*
* @since XINS 2.1
*/
public BootstrapException(String detail, Throwable cause) {
super(createMessage(detail, cause), cause);
}
/**
* Creates a message based on the specified constructor arguments.
*
* @param detail
* the detail message passed to the constructor, or <code>null</code>.
*
* @param cause
* the cause exception, or <code>null</code>.
*
* @return
* the message, never <code>null</code>.
*/
private static String createMessage(String detail, Throwable cause) {
String message = "Bootstrap failed";
if (detail != null) {
message += ": \"" + detail + '"';
}
if (cause != null) {
message += ". Caught " +cause.getClass().getName();
String causeMessage = TextUtils.trim(cause.getMessage(), null);
if (causeMessage != null) {
message += " with message \"" + causeMessage + '"';
}
}
message += '.';
return message;
}
}