Repository: nifi
Updated Branches:
  refs/heads/master 2760b0777 -> 235463af7


allow expression language in Schema File property

Update ValidateXml.java

Update ValidateXml.java

NIFI-5192: Added evaluateAttributeExpressions call, error handling, and unit 
tests


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/235463af
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/235463af
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/235463af

Branch: refs/heads/master
Commit: 235463af7b24914271fc6e2d0263f23d3ea15843
Parents: 2760b07
Author: Bartlomiej Tartanus <[email protected]>
Authored: Mon May 14 16:24:52 2018 +0200
Committer: Matthew Burgess <[email protected]>
Committed: Tue Jun 19 16:12:52 2018 -0400

----------------------------------------------------------------------
 .../nifi/processors/standard/ValidateXml.java   |  9 +++++++-
 .../processors/standard/TestValidateXml.java    | 24 ++++++++++++++++++++
 2 files changed, 32 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/235463af/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ValidateXml.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ValidateXml.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ValidateXml.java
index 1c38dfd..279d9f2 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ValidateXml.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ValidateXml.java
@@ -17,6 +17,7 @@
 package org.apache.nifi.processors.standard;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -44,6 +45,7 @@ import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.annotation.lifecycle.OnScheduled;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.flowfile.FlowFile;
+import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.logging.ComponentLog;
 import org.apache.nifi.processor.AbstractProcessor;
 import org.apache.nifi.processor.ProcessContext;
@@ -72,6 +74,7 @@ public class ValidateXml extends AbstractProcessor {
             .name("Schema File")
             .description("The path to the Schema file that is to be used for 
validation")
             .required(true)
+            
.expressionLanguageSupported(ExpressionLanguageScope.VARIABLE_REGISTRY)
             .addValidator(StandardValidators.FILE_EXISTS_VALIDATOR)
             .build();
 
@@ -115,7 +118,11 @@ public class ValidateXml extends AbstractProcessor {
     @OnScheduled
     public void parseSchema(final ProcessContext context) throws IOException, 
SAXException {
         try {
-            final File file = new 
File(context.getProperty(SCHEMA_FILE).getValue());
+            final File file = new 
File(context.getProperty(SCHEMA_FILE).evaluateAttributeExpressions().getValue());
+            // Ensure the file exists
+            if (!file.exists()) {
+                throw new FileNotFoundException("Schema file not found at 
specified location: " + file.getAbsolutePath());
+            }
             final SchemaFactory schemaFactory = 
SchemaFactory.newInstance(SCHEMA_LANGUAGE);
             final Schema schema = schemaFactory.newSchema(file);
             this.schemaRef.set(schema);

http://git-wip-us.apache.org/repos/asf/nifi/blob/235463af/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestValidateXml.java
----------------------------------------------------------------------
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 d7b2e39..b41f869 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
@@ -49,4 +49,28 @@ public class TestValidateXml {
         runner.assertAllFlowFilesContainAttribute(ValidateXml.REL_INVALID, 
ValidateXml.ERROR_ATTRIBUTE_KEY);
     }
 
+    @Test
+    public void testValidEL() throws IOException, SAXException {
+        final TestRunner runner = TestRunners.newTestRunner(new ValidateXml());
+        runner.setProperty(ValidateXml.SCHEMA_FILE, "${my.schema}");
+        runner.setVariable("my.schema", 
"src/test/resources/TestXml/XmlBundle.xsd");
+
+        
runner.enqueue(Paths.get("src/test/resources/TestXml/xml-snippet.xml"));
+        runner.run();
+
+        runner.assertAllFlowFilesTransferred(ValidateXml.REL_VALID, 1);
+    }
+
+    @Test(expected = AssertionError.class)
+    public void testInvalidEL() throws IOException, SAXException {
+        final TestRunner runner = TestRunners.newTestRunner(new ValidateXml());
+        runner.setProperty(ValidateXml.SCHEMA_FILE, "${my.schema}");
+
+        runner.enqueue("<this>is an invalid</xml>");
+        runner.run();
+
+        runner.assertAllFlowFilesTransferred(ValidateXml.REL_INVALID, 1);
+        runner.assertAllFlowFilesContainAttribute(ValidateXml.REL_INVALID, 
ValidateXml.ERROR_ATTRIBUTE_KEY);
+    }
+
 }

Reply via email to