blob: 709a0ef1b8d53472ba9e868202183786b38321f7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.html.core.tests.utils;
/**
* The SourceEditingRuntimeException is often thrown by Source Editor methods when
* a service we use throws a checked exception, but we want to convert and treat
* as a runtime exception. (Such as BadLocationException is a common example).
*/
public class TestRuntimeException extends RuntimeException {
/**
* Default <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 1L;
private Throwable originalException;
public TestRuntimeException() {
super();
}
public TestRuntimeException(String s) {
super(s);
}
/**
* This form of the constructor is used to wrapper another exception.
*/
public TestRuntimeException(Throwable t) {
super();
originalException = t;
}
/**
* This form of the constructor is used to wrapper another exception, but still
* provide a new descriptive message.
*/
public TestRuntimeException(Throwable t, String s) {
super(s);
originalException = t;
}
public String getMessage() {
String result = super.getMessage();
if ((result != null) && (!result.endsWith("."))) //$NON-NLS-1$
result = result + "."; //$NON-NLS-1$
if (originalException != null) {
String embeddedMessage = originalException.getMessage();
// not all exceptions (e.g. many NullPointer exception) have messages
String originalError = "Original error:"; //$NON-NLS-1$
if (embeddedMessage != null)
result = result + " " + originalError + " " + embeddedMessage;//$NON-NLS-2$//$NON-NLS-1$
else
result = result + " " + originalError + " " + originalException.toString();//$NON-NLS-2$//$NON-NLS-1$
}
return result;
}
public Throwable getOriginalException() {
return originalException;
}
public String toString() {
// we don't put super.toString or getClass to "hide" that it was a
// SourceEditing exception (otherwise, focus goes on that,
// instead of original exception.
String message = getMessage();
// message should never be null ... but just in case
return (message != null) ? message : super.toString();
}
}