Repository: incubator-nifi Updated Branches: refs/heads/develop 74c794048 -> 2bcd1e657
NIFI-132: Log to Processor's logger Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/2bcd1e65 Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/2bcd1e65 Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/2bcd1e65 Branch: refs/heads/develop Commit: 2bcd1e657a5a959fad6572b011924f07d995abe8 Parents: 74c7940 Author: Mark Payne <[email protected]> Authored: Thu Dec 11 09:45:24 2014 -0500 Committer: Mark Payne <[email protected]> Committed: Thu Dec 11 09:45:24 2014 -0500 ---------------------------------------------------------------------- .../nifi/processors/standard/EvaluateXPath.java | 31 ++++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/2bcd1e65/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXPath.java ---------------------------------------------------------------------- diff --git a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXPath.java b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXPath.java index 056f4fc..2f3f34b 100644 --- a/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXPath.java +++ b/nar-bundles/standard-bundle/standard-processors/src/main/java/org/apache/nifi/processors/standard/EvaluateXPath.java @@ -36,6 +36,7 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicReference; import javax.xml.namespace.QName; +import javax.xml.transform.ErrorListener; import javax.xml.transform.OutputKeys; import javax.xml.transform.Source; import javax.xml.transform.Transformer; @@ -50,6 +51,7 @@ import javax.xml.xpath.XPathFactoryConfigurationException; import net.sf.saxon.lib.NamespaceConstant; import net.sf.saxon.xpath.XPathEvaluator; + import org.apache.nifi.components.PropertyDescriptor; import org.apache.nifi.components.ValidationContext; import org.apache.nifi.components.ValidationResult; @@ -73,7 +75,6 @@ import org.apache.nifi.processor.exception.ProcessException; import org.apache.nifi.processor.io.InputStreamCallback; import org.apache.nifi.processor.io.OutputStreamCallback; import org.apache.nifi.util.ObjectHolder; - import org.xml.sax.InputSource; @EventDriven @@ -356,8 +357,7 @@ public class EvaluateXPath extends AbstractProcessor { session.getProvenanceReporter().modifyContent(flowFile); } } else { - logger.error("Failed to write XPath result for {} due to {}; routing original to 'failure'", new Object[]{ - flowFile, error.get()}); + logger.error("Failed to write XPath result for {} due to {}; routing original to 'failure'", new Object[]{flowFile, error.get()}); session.transfer(flowFile, REL_FAILURE); } } @@ -377,7 +377,32 @@ public class EvaluateXPath extends AbstractProcessor { props.setProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); transformer.setOutputProperties(props); + final ProcessorLog logger = getLogger(); + + final ObjectHolder<TransformerException> error = new ObjectHolder<>(null); + transformer.setErrorListener(new ErrorListener() { + @Override + public void warning(final TransformerException exception) throws TransformerException { + logger.warn("Encountered warning from XPath Engine: ", new Object[] {exception.toString(), exception}); + } + + @Override + public void error(final TransformerException exception) throws TransformerException { + logger.error("Encountered error from XPath Engine: ", new Object[] {exception.toString(), exception}); + error.set(exception); + } + + @Override + public void fatalError(final TransformerException exception) throws TransformerException { + logger.error("Encountered warning from XPath Engine: ", new Object[] {exception.toString(), exception}); + error.set(exception); + } + }); + transformer.transform(sourceNode, new StreamResult(out)); + if ( error.get() != null ) { + throw error.get(); + } } private static class XPathValidator implements Validator {
