package jasext.jhplotserver;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaFileObject;
/**
* An exception thrown when trying to compile Java programs from strings
* containing source.
*
* @author David J. Biesack
*/
public class CharSequenceCompilerException extends Exception {
private static final long serialVersionUID = 1L;
/**
* The fully qualified name of the class that was being compiled.
*/
private Set classNames;
// Unfortunately, Diagnostic and Collector are not Serializable, so we can't
// serialize the collector.
transient private DiagnosticCollector diagnostics;
public CharSequenceCompilerException(String message,
Set qualifiedClassNames, Throwable cause,
DiagnosticCollector diagnostics) {
super(message, cause);
setClassNames(qualifiedClassNames);
setDiagnostics(diagnostics);
}
public CharSequenceCompilerException(String message,
Set qualifiedClassNames,
DiagnosticCollector diagnostics) {
super(message);
setClassNames(qualifiedClassNames);
setDiagnostics(diagnostics);
}
public CharSequenceCompilerException(Set qualifiedClassNames,
Throwable cause, DiagnosticCollector diagnostics) {
super(cause);
setClassNames(qualifiedClassNames);
setDiagnostics(diagnostics);
}
private void setClassNames(Set qualifiedClassNames) {
// create a new HashSet because the set passed in may not
// be Serializable. For example, Map.keySet() returns a non-Serializable
// set.
classNames = new HashSet(qualifiedClassNames);
}
private void setDiagnostics(DiagnosticCollector diagnostics) {
this.diagnostics = diagnostics;
}
/**
* Gets the diagnostics collected by this exception.
*
* @return this exception's diagnostics
*/
public DiagnosticCollector getDiagnostics() {
return diagnostics;
}
/**
* @return The name of the classes whose compilation caused the compile
* exception
*/
public Collection getClassNames() {
return Collections.unmodifiableSet(classNames);
}
}
Ads help maintain this website.