You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ex...@apache.org on 2023/02/18 16:29:19 UTC

[nifi] branch main updated: NIFI-11156 Updated SchemaValidator to include error message for ValidateXml

This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 22a4bce1ed NIFI-11156 Updated SchemaValidator to include error message for ValidateXml
22a4bce1ed is described below

commit 22a4bce1ed19204c95de98b3962a045557f04226
Author: dan-s1 <ds...@gmail.com>
AuthorDate: Fri Feb 17 16:08:08 2023 +0000

    NIFI-11156 Updated SchemaValidator to include error message for ValidateXml
    
    - Restores behavior so that XML parsing failure details will be included in FlowFile error attribute from ValidateXml
    
    This closes #6970
    
    Signed-off-by: David Handermann <ex...@apache.org>
---
 .../xml/processing/validation/StandardSchemaValidator.java     |  2 +-
 .../org/apache/nifi/processors/standard/TestValidateXml.java   | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/nifi-commons/nifi-xml-processing/src/main/java/org/apache/nifi/xml/processing/validation/StandardSchemaValidator.java b/nifi-commons/nifi-xml-processing/src/main/java/org/apache/nifi/xml/processing/validation/StandardSchemaValidator.java
index 940d7f8cea..0a592c9708 100644
--- a/nifi-commons/nifi-xml-processing/src/main/java/org/apache/nifi/xml/processing/validation/StandardSchemaValidator.java
+++ b/nifi-commons/nifi-xml-processing/src/main/java/org/apache/nifi/xml/processing/validation/StandardSchemaValidator.java
@@ -53,7 +53,7 @@ public class StandardSchemaValidator implements SchemaValidator {
         try {
             validator.validate(source);
         } catch (final SAXException|IOException e) {
-            throw new ProcessingException("Validation failed", e);
+            throw new ProcessingException(String.format("Validation failed: %s", e.getMessage()), e);
         }
     }
 }
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestValidateXml.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestValidateXml.java
index a4a66e1287..38be007caf 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestValidateXml.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestValidateXml.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class TestValidateXml {
 
@@ -57,6 +58,7 @@ public class TestValidateXml {
 
         runner.assertAllFlowFilesTransferred(ValidateXml.REL_INVALID, 1);
         runner.assertAllFlowFilesContainAttribute(ValidateXml.REL_INVALID, ValidateXml.ERROR_ATTRIBUTE_KEY);
+        assertErrorAttributeContainsStableErrorKeyword(runner);
 
         runner.clearTransferState();
         runner.enqueue(NONCOMPLIANT_XML);
@@ -65,6 +67,12 @@ public class TestValidateXml {
 
         runner.assertAllFlowFilesTransferred(ValidateXml.REL_INVALID, 1);
         runner.assertAllFlowFilesContainAttribute(ValidateXml.REL_INVALID, ValidateXml.ERROR_ATTRIBUTE_KEY);
+        assertErrorAttributeContainsStableErrorKeyword(runner);
+    }
+
+    private void assertErrorAttributeContainsStableErrorKeyword(TestRunner runner) {
+        String errorAttribute = runner.getFlowFilesForRelationship(ValidateXml.REL_INVALID).get(0).getAttribute(ValidateXml.ERROR_ATTRIBUTE_KEY);
+        assertTrue(errorAttribute.contains("lineNumber"));
     }
 
     @Test
@@ -119,6 +127,7 @@ public class TestValidateXml {
 
         runner.assertAllFlowFilesTransferred(ValidateXml.REL_INVALID, 1);
         runner.assertAllFlowFilesContainAttribute(ValidateXml.REL_INVALID, ValidateXml.ERROR_ATTRIBUTE_KEY);
+        assertErrorAttributeContainsStableErrorKeyword(runner);
 
         runner.clearTransferState();
         attributes.clear();
@@ -129,6 +138,7 @@ public class TestValidateXml {
 
         runner.assertAllFlowFilesTransferred(ValidateXml.REL_INVALID, 1);
         runner.assertAllFlowFilesContainAttribute(ValidateXml.REL_INVALID, ValidateXml.ERROR_ATTRIBUTE_KEY);
+        assertErrorAttributeContainsStableErrorKeyword(runner);
     }
 
     @Test