blob: c6055eaab0407512d014055f643fa55f715621e4 [file] [log] [blame]
/****************************************************************************
* Copyright (c) 2008 Versant Corp.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* Markus Kuppe (mkuppe <at> versant <dot> com) - initial API and implementation
*
* SPDX-License-Identifier: EPL-2.0
*****************************************************************************/
package org.eclipse.ecf.core.util;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.ecf.internal.core.identity.Activator;
/**
* @since 3.0
*/
public class ECFRuntimeException extends RuntimeException {
private static final long serialVersionUID = 456677468837349011L;
/** Status object. */
private IStatus status;
public ECFRuntimeException() {
super();
}
/**
* @param message
* message associated with exception
*/
public ECFRuntimeException(String message) {
this(message, null);
}
/**
* @param cause
* the cause of the new exception
*/
public ECFRuntimeException(Throwable cause) {
this(cause.getMessage(), cause);
}
/**
* @param message
* @param cause
*/
public ECFRuntimeException(String message, Throwable cause) {
this(new Status(IStatus.ERROR, Activator.PLUGIN_ID, 0,
((message == null) ? "" : message), cause)); //$NON-NLS-1$
}
/**
* Creates a new exception with the given status object. The message of the
* given status is used as the exception message.
*
* @param status
* the status object to be associated with this exception
*/
public ECFRuntimeException(IStatus status) {
super(status.getMessage());
initCause(status.getException());
this.status = status;
}
/**
* Returns the status object for this exception.
* <p>
* <b>IMPORTANT:</b><br>
* The result must NOT be used to log a <code>CoreException</code> (e.g.,
* using <code>yourPlugin.getLog().log(status);</code>), since that code
* pattern hides the original stacktrace. Instead, create a new
* {@link Status} with your plug-in ID and this <code>CoreException</code>,
* and log that new status.
* </p>
*
* @return a status object
*/
public IStatus getStatus() {
return status;
}
}