ExecutionStateException.java
package edu.udel.cis.vsl.tass.semantics.IF;
import edu.udel.cis.vsl.tass.dynamic.IF.DynamicException;
import edu.udel.cis.vsl.tass.model.IF.location.LocationIF;
import edu.udel.cis.vsl.tass.util.Source;
public class ExecutionStateException extends ExecutionProblem {
private static final long serialVersionUID = -741658455672274523L;
private LocationIF[] locations;
public ExecutionStateException(LocationIF[] locations, ErrorKind kind,
Certainty certainty, String message) {
super(kind, certainty, message);
assert locations != null;
this.locations = locations;
}
public ExecutionStateException(LocationIF[] locations,
DynamicException dynamicException, Certainty certainty) {
super(dynamicException, certainty);
assert locations != null;
this.locations = locations;
}
public ExecutionStateException(LocationIF[] locations,
ExecutionProblem problem) {
this(locations, problem.kind(), problem.certainty(), problem
.getMessage());
}
public LocationIF[] locations() {
return locations;
}
public String toString() {
String result = super.toString();
result += "\n with:\n";
for (int i = 0; i < locations.length; i++) {
LocationIF location = locations[i];
result += " Process " + i;
if (location == null) {
result += ": <terminated>";
} else {
Source source = location.getSource();
result += " at location " + location.id();
if (source == null) {
result += " (unknown source)";
} else {
result += ": " + source.toString();
}
}
result += "\n";
}
return result;
}
}