blob: 50467b7f282c8317bae5640eb99ed162a359649b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 The University of York.
* 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:
* Louis Rose - initial API and implementation
******************************************************************************/
package org.eclipse.epsilon.egl.exceptions;
import org.eclipse.epsilon.common.module.ModuleElement;
import org.eclipse.epsilon.eol.exceptions.EolInternalException;
import org.eclipse.epsilon.eol.exceptions.EolRuntimeException;
public class EglRuntimeException extends EolRuntimeException {
// Generated by Eclipse
private static final long serialVersionUID = 2370066735399525557L;
private final Throwable cause;
private final int line;
private final int column;
public EglRuntimeException (EolRuntimeException ex) {
super(ex.getReason(), ex.getAst());
reason = ex.getReason();
cause = ex;
line = ex.getAst().getRegion().getStart().getLine();
column = ex.getColumn();
ast = ex.getAst();
}
public EglRuntimeException (EolInternalException ex) {
super(ex.getReason(), ex.getAst());
final EglRuntimeException internal = (EglRuntimeException)ex.getInternal();
reason = internal.getReason();
cause = internal.getCause();
line = ex.getLine();
column = ex.getColumn();
ast = ex.getAst();
}
public EglRuntimeException(String reason, ModuleElement ast) {
this(reason, null, ast);
}
public EglRuntimeException(String reason, Throwable cause) {
this(reason, cause, 1, 1, null);
}
public EglRuntimeException(String reason, Throwable cause, ModuleElement ast) {
this(reason, cause, ast.getRegion().getStart().getLine(), ast.getRegion().getStart().getColumn(), ast);
}
private EglRuntimeException(String reason, Throwable cause, int line, int column, ModuleElement ast) {
this.reason = reason;
this.cause = cause;
this.line = line;
this.column = column;
this.ast = ast;
}
@Override
public Throwable getCause() {
return cause;
}
@Override
public int getLine() {
return line;
}
@Override
public int getColumn() {
return column;
}
@Override
public String getReason() {
return reason;
}
@Override
public String toString() {
String result = super.toString();
if (cause != null) {
result += "\n\tCause: " + cause.toString();
}
return result;
}
}