/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.content.packager;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.apache.log4j.Logger;
/**
* This is a superclass for exceptions representing a failure when
* importing or exporting a package. E.g., unacceptable package format
* or contents. Implementations should throw one of the more specific
* exceptions. This class is intended for declarations and catch clauses.
*
* @author Larry Stone
* @version $Revision$
*/
public class PackageException extends Exception
{
/**
* Create a new exception with no message.
*/
public PackageException()
{
super();
}
/**
* Create a new exception with the given message.
* @param message - message text.
*/
public PackageException(String message)
{
super(message);
}
/**
* Create a new exception wrapping the given underlying cause.
* @param cause - exception specifying the cause of this failure.
*/
public PackageException(Throwable cause)
{
super(cause);
}
/**
* Create a new exception wrapping it around another exception.
* @param message - message text.
* @param cause - exception specifying the cause of this failure.
*/
public PackageException(String message, Throwable cause)
{
super(message, cause);
}
/**
* Write details of this exception to the indicated logger.
* Dump a stack trace to the log to aid in debugging.
*/
public void log(Logger log)
{
log.error(toString());
Throwable cause = getCause();
if (cause != null)
{
if (cause.getCause() != null)
{
cause = cause.getCause();
}
StringWriter sw = new StringWriter();
cause.printStackTrace(new PrintWriter(sw));
log.error(sw.toString());
}
}
public String toString()
{
String base = getClass().getName() + ": " + getMessage();
return (getCause() == null) ? base :
base + ", Reason: "+getCause().toString();
}
}