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 +}