Repository: nifi
Updated Branches:
  refs/heads/master 8ce2a1b3a -> 816034bd0


NIFI-3543 This closes #1548. Added support for using EL when defining brokerURL 
in jms-cf-service

Signed-off-by: joewitt <[email protected]>


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

Branch: refs/heads/master
Commit: 816034bd01c2ac2ee480f6a82aca146e250c2101
Parents: 8ce2a1b
Author: ShellyLC <[email protected]>
Authored: Wed Mar 1 00:36:47 2017 -0800
Committer: joewitt <[email protected]>
Committed: Wed Apr 19 22:50:48 2017 -0700

----------------------------------------------------------------------
 .../jms/cf/JMSConnectionFactoryProvider.java     |  9 +++++----
 .../JMSConnectionFactoryProviderDefinition.java  | 19 +++++++++++++++++--
 2 files changed, 22 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/816034bd/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProvider.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProvider.java
 
b/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProvider.java
index 32ff78c..d21b0be 100644
--- 
a/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProvider.java
+++ 
b/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProvider.java
@@ -177,17 +177,18 @@ public class JMSConnectionFactoryProvider extends 
AbstractControllerService impl
                 this.setProperty(propertyName, entry.getValue());
             } else {
                 if (propertyName.equals(BROKER)) {
+                    String brokerValue = 
context.getProperty(descriptor).evaluateAttributeExpressions().getValue();
                     if 
(context.getProperty(CONNECTION_FACTORY_IMPL).evaluateAttributeExpressions().getValue().startsWith("org.apache.activemq"))
 {
-                        this.setProperty("brokerURL", entry.getValue());
+                        this.setProperty("brokerURL", brokerValue);
                     } else {
-                        String[] hostPort = entry.getValue().split(":");
+                        String[] hostPort = brokerValue.split(":");
                         if (hostPort.length == 2) {
                             this.setProperty("hostName", hostPort[0]);
                             this.setProperty("port", hostPort[1]);
                         } else if (hostPort.length != 2) {
-                            this.setProperty("serverUrl", entry.getValue()); 
// for tibco
+                            this.setProperty("serverUrl", brokerValue); // for 
tibco
                         } else {
-                            throw new IllegalArgumentException("Failed to 
parse broker url: " + entry.getValue());
+                            throw new IllegalArgumentException("Failed to 
parse broker url: " + brokerValue);
                         }
                     }
                     SSLContextService sc = 
context.getProperty(SSL_CONTEXT_SERVICE).asControllerService(SSLContextService.class);

http://git-wip-us.apache.org/repos/asf/nifi/blob/816034bd/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProviderDefinition.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProviderDefinition.java
 
b/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProviderDefinition.java
index 3057ec6..c3afd32 100644
--- 
a/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProviderDefinition.java
+++ 
b/nifi-nar-bundles/nifi-jms-bundle/nifi-jms-cf-service/src/main/java/org/apache/nifi/jms/cf/JMSConnectionFactoryProviderDefinition.java
@@ -63,7 +63,7 @@ public interface JMSConnectionFactoryProviderDefinition 
extends ControllerServic
             .displayName("Broker URI")
             .description("URI pointing to the network location of the JMS 
Message broker. For example, "
                       + "'tcp://myhost:61616' for ActiveMQ or 'myhost:1414' 
for IBM MQ")
-            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .addValidator(new NonEmptyBrokerURIValidator())
             .required(true)
             .expressionLanguageSupported(true)
             .build();
@@ -87,12 +87,27 @@ public interface JMSConnectionFactoryProviderDefinition 
extends ControllerServic
     ConnectionFactory getConnectionFactory();
 
     /**
+     * {@link Validator} that ensures that brokerURI's length > 0 after EL 
evaluation
+     */
+    static class NonEmptyBrokerURIValidator implements Validator {
+
+        @Override
+        public ValidationResult validate(String subject, String input, 
ValidationContext context) {
+            String value = input;
+            if (context.isExpressionLanguageSupported(subject) && 
context.isExpressionLanguagePresent(input)) {
+                value = 
context.getProperty(BROKER_URI).evaluateAttributeExpressions().getValue();
+            }
+            return StandardValidators.NON_EMPTY_VALIDATOR.validate(subject, 
value, context);
+        }
+    }
+
+    /**
      *
      */
     static class ClientLibValidator implements Validator {
         @Override
         public ValidationResult validate(String subject, String input, 
ValidationContext context) {
-            String libDirPath = 
context.getProperty(CLIENT_LIB_DIR_PATH).getValue();
+            String libDirPath = 
context.getProperty(CLIENT_LIB_DIR_PATH).evaluateAttributeExpressions().getValue();
             StringBuilder invalidationMessageBuilder = new StringBuilder();
             if (libDirPath != null) {
                 File file = new File(libDirPath);

Reply via email to