Repository: nifi
Updated Branches:
  refs/heads/master 4f7a4e83b -> 0c68e2c3a


NIFI-1378 added validator to ensure the JMS URI has a scheme set

Signed-off-by: Aldrin Piri <ald...@apache.org>


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

Branch: refs/heads/master
Commit: 0c68e2c3a8a81f1ef48fd72061fed4302ec399ef
Parents: 4f7a4e8
Author: joewitt <joew...@apache.org>
Authored: Sat Jan 9 22:08:44 2016 -0500
Committer: Aldrin Piri <ald...@apache.org>
Committed: Sun Jan 10 16:07:56 2016 -0500

----------------------------------------------------------------------
 .../processors/standard/util/JmsProperties.java | 25 ++++++++++++++++++++
 .../processors/standard/TestGetJMSQueue.java    | 11 +++++++++
 .../nifi/processors/standard/TestPutJMS.java    | 14 +++++++++--
 3 files changed, 48 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/0c68e2c3/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JmsProperties.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JmsProperties.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JmsProperties.java
index f538624..522493b 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JmsProperties.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JmsProperties.java
@@ -16,7 +16,11 @@
  */
 package org.apache.nifi.processors.standard.util;
 
+import java.net.URI;
+import java.net.URISyntaxException;
 import org.apache.nifi.components.PropertyDescriptor;
+import org.apache.nifi.components.ValidationContext;
+import org.apache.nifi.components.ValidationResult;
 import org.apache.nifi.components.Validator;
 import org.apache.nifi.processor.util.StandardValidators;
 import org.apache.nifi.ssl.SSLContextService;
@@ -49,6 +53,27 @@ public class JmsProperties {
             .name("URL")
             .description("The URL of the JMS Server")
             .addValidator(StandardValidators.URI_VALIDATOR)
+            .addValidator(new Validator() {
+                @Override
+                public ValidationResult validate(String subject, String input, 
ValidationContext context) {
+                    if (context.isExpressionLanguageSupported(subject) && 
context.isExpressionLanguagePresent(input)) {
+                        return new 
ValidationResult.Builder().subject(subject).input(input).explanation("Expression
 Language Present").valid(true).build();
+                    }
+                    final ValidationResult.Builder builder = new 
ValidationResult.Builder();
+                    builder.subject(subject).input(input).explanation("Valid 
URL").valid(true);
+                    try {
+                        final String evaluatedInput = 
context.newPropertyValue(input).evaluateAttributeExpressions().getValue();
+                        final URI uri = new URI(evaluatedInput);
+                        if (uri.getScheme() == null) {
+                            builder.explanation("JMS URI must have a scheme 
set such as 'jms','ssl','tcp','vm',etc..").valid(false);
+                        }
+                    } catch (final URISyntaxException urie) {
+                        builder.explanation("JMS URI not valid").valid(false);
+                    }
+                    return builder.build();
+                }
+            }
+            )
             .required(true)
             .build();
     public static final PropertyDescriptor TIMEOUT = new 
PropertyDescriptor.Builder()

http://git-wip-us.apache.org/repos/asf/nifi/blob/0c68e2c3/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestGetJMSQueue.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestGetJMSQueue.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestGetJMSQueue.java
index 3d1447d..4a729dc 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestGetJMSQueue.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestGetJMSQueue.java
@@ -41,6 +41,17 @@ import org.junit.Test;
 public class TestGetJMSQueue {
 
     @Test
+    public void testInvalidURL() throws Exception {
+        GetJMSQueue getJmsQueue = new GetJMSQueue();
+        TestRunner runner = TestRunners.newTestRunner(getJmsQueue);
+        runner.setProperty(JmsProperties.JMS_PROVIDER, 
JmsProperties.ACTIVEMQ_PROVIDER);
+        runner.setProperty(JmsProperties.URL, "localhost");
+        runner.setProperty(JmsProperties.DESTINATION_NAME, "queue.testing");
+        runner.setProperty(JmsProperties.ACKNOWLEDGEMENT_MODE, 
JmsProperties.ACK_MODE_AUTO);
+        runner.assertNotValid();
+    }
+
+    @Test
     public void testSendTextToQueue() throws Exception {
         PutJMS putJms = new PutJMS();
         TestRunner putRunner = TestRunners.newTestRunner(putJms);

http://git-wip-us.apache.org/repos/asf/nifi/blob/0c68e2c3/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutJMS.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutJMS.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutJMS.java
index acba96c..b6c4bed 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutJMS.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutJMS.java
@@ -79,6 +79,17 @@ public class TestPutJMS {
     }
 
     @Test
+    public void testInvalidURL() throws Exception {
+        PutJMS putJms = new PutJMS();
+        TestRunner runner = TestRunners.newTestRunner(putJms);
+        runner.setProperty(JmsProperties.JMS_PROVIDER, TEST_PROVIDER);
+        runner.setProperty(JmsProperties.URL, "localhost");
+        runner.setProperty(JmsProperties.DESTINATION_NAME, TEST_DEST_TYPE);
+        runner.setProperty(JmsProperties.DESTINATION_NAME, TEST_DEST_NAME + 
testQueueSuffix());
+        runner.assertNotValid();
+    }
+
+    @Test
     public void testCleanupResources() throws JMSException, 
NoSuchFieldException, IllegalAccessException {
         final PutJMS putJMS = new PutJMS();
         final TestRunner runnerPut = TestRunners.newTestRunner(putJMS);
@@ -98,7 +109,6 @@ public class TestPutJMS {
         assertNull(wrappedMessageProducerQueue.peek());
     }
 
-
     @Test
     public void testCreateMessageDirectly() throws JMSException {
         final PutJMS putJMS = new PutJMS();
@@ -562,4 +572,4 @@ public class TestPutJMS {
         final List<MockFlowFile> flowFilesFail = 
runnerPut.getFlowFilesForRelationship(PutJMS.REL_FAILURE);
         assertEquals(1, flowFilesFail.size());
     }
-}
\ No newline at end of file
+}

Reply via email to