Skip to content

Commit

Permalink
improved XML transformation logging (#428)
Browse files Browse the repository at this point in the history
Co-authored-by: Georgy Litvinov <[email protected]>
  • Loading branch information
litvinovg and litvinovg authored Nov 28, 2023
1 parent c9879cc commit 243fdf7
Showing 1 changed file with 28 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,35 @@

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.ErrorListener;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;

import edu.cornell.mannlib.vitro.webapp.dynapi.components.OperationResult;
import edu.cornell.mannlib.vitro.webapp.dynapi.components.Parameter;
import edu.cornell.mannlib.vitro.webapp.dynapi.data.Data;
import edu.cornell.mannlib.vitro.webapp.dynapi.data.DataStore;
import edu.cornell.mannlib.vitro.webapp.dynapi.data.ModelView;
import edu.cornell.mannlib.vitro.webapp.dynapi.data.SimpleDataView;
import edu.cornell.mannlib.vitro.webapp.dynapi.data.conversion.InitializationException;
import edu.cornell.mannlib.vitro.webapp.dynapi.data.implementation.DynapiInMemoryOntModel;
import edu.cornell.mannlib.vitro.webapp.utils.configuration.Property;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;

public class XMLTransformation extends AbstractOperation {

private static final Log log = LogFactory.getLog(XMLTransformation.class);
private static final ErrorListener errorListener = createXMLErrorListener();
private Parameter xsltParam;
private Parameter inputXmlParam;
private Parameter outputXmlParam;
Expand Down Expand Up @@ -96,6 +97,7 @@ private void prepareTransformTemplates() throws InitializationException{
InputStream styleInputStream = IOUtils.toInputStream(defaultValue, StandardCharsets.UTF_8);
Source stylesource = new StreamSource(styleInputStream);
TransformerFactory transformerFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", null);
transformerFactory.setErrorListener(errorListener);
transformTemplates = transformerFactory.newTemplates(stylesource);
}
}
Expand All @@ -112,6 +114,7 @@ private Transformer getTransformer(String styles)
InputStream styleInputStream = IOUtils.toInputStream(styles, StandardCharsets.UTF_8);
Source stylesource = new StreamSource(styleInputStream);
TransformerFactory transformerFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", null);
transformerFactory.setErrorListener(errorListener);
Transformer transformer = transformerFactory.newTransformer(stylesource);
if (transformer == null) {
throw new Exception("Failed to initialize transformer. Check styles.");
Expand Down Expand Up @@ -154,4 +157,23 @@ public boolean isValid() {

return result;
}

private static ErrorListener createXMLErrorListener() {
return new ErrorListener() {
@Override
public void warning(TransformerException e) throws TransformerException {
log.warn(e, e);
}

@Override
public void error(TransformerException e) throws TransformerException {
log.error(e, e);
}

@Override
public void fatalError(TransformerException e) throws TransformerException {
log.error(e, e);
}
};
}
}

0 comments on commit 243fdf7

Please sign in to comment.