/******************************************************************************* | |
* Copyright (c) 2004-2009 Akos Horvath and Daniel Varro | |
* 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: | |
* Akos Horvath - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.viatra2.gtasm.interpreter.exception; | |
import org.eclipse.emf.ecore.EObject; | |
/** A common supertype for all GTASM exceptions | |
* @author Akos Horvath | |
* | |
*/ | |
public abstract class ViatraTransformationException extends Exception { | |
private static final long serialVersionUID = 3668689213176229953L; | |
// private ViatraTransformationException(String msg) { | |
// super(msg); | |
// } | |
/** Constructor for the common GTASM exception class | |
* @param msg The template of the exception message | |
* @param context The data elements to be used to instantiate the template. Can be null if no context parameter is defined | |
* | |
*/ | |
public ViatraTransformationException(String msg, String[] context) { | |
super(bind(msg,context)); | |
} | |
/** Constructor for the common GTASM exception class | |
* @param msg The template of the exception message | |
* @param context The data elements to be used to instantiate the template. Can be null if no context parameter is defined | |
* @param cause The internal exception identifiable as cause | |
*/ | |
public ViatraTransformationException(String msg, String[] context, Throwable cause) { | |
super(bind(msg,context), cause); | |
} | |
/** | |
* Binding the '{n}' (n = 1..N) strings to contextual conditions in 'context' | |
* @param context : array of context-sensitive Strings | |
*/ | |
private static String bind(String message, String[] context) { | |
String additionalError = ""; | |
if(context == null) return message; | |
for(int i = 0; i<context.length; i++){ | |
message = message.replace("{"+(i+1)+"}", context[i]!= null? context[i] : "<<null>>"); | |
//error handling in case there is a null value in the context array | |
if(context[i] == null) | |
additionalError = "[INTERNAL ERROR] A name value in the GTASM model is null. \n\n"; | |
} | |
return additionalError+message; | |
} | |
/**Tries to add a new element to the stack trace based on its input element | |
* @param element Element to be processed for source information | |
* @return | |
*/ | |
public ViatraTransformationException addNewStackElement(EObject element){ return null;} | |
} |