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 {

Reply via email to