package lux;
import java.util.ArrayList;
import javax.xml.transform.ErrorListener;
import javax.xml.transform.TransformerException;
/**
* Captures errors produced by Saxon during compilation and evaluation of queries.
* Maintains a list of TransformerExceptions.
*/
public class TransformErrorListener implements ErrorListener {
public TransformErrorListener () {
errors = new ArrayList<TransformerException>();
}
private Object userData;
private ArrayList<TransformerException> errors;
public ArrayList<TransformerException> getErrors() {
return errors;
}
public void clear () {
errors.clear();
}
@Override
public void error(TransformerException exception) throws TransformerException {
errors.add(exception);
}
@Override
public void fatalError(TransformerException exception) throws TransformerException {
while (exception != exception.getCause() && exception.getCause() != null
&& exception.getCause() instanceof TransformerException) {
exception = (TransformerException) exception.getCause();
}
errors.add(exception);
}
@Override
public void warning(TransformerException exception) throws TransformerException {
errors.add(exception);
}
/**
* @return the user-data
*/
public Object getUserData() {
return userData;
}
/**
* Provided as a conduit for passing lux internal data through a Saxon evaluation episode
* into a function call.
* @param userData any object
*/
public void setUserData(Object userData) {
this.userData = userData;
}
}
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */