From cd66c877b706b1f5b3418301e7e3aed651036bce Mon Sep 17 00:00:00 2001 From: m-hogue Date: Tue, 27 Jun 2017 16:19:10 -0400 Subject: [PATCH 1/7] NIFI-3193: added ability to authenticate using cert common names --- .../nifi/amqp/processors/AMQPPublisher.java | 8 +-- .../processors/AbstractAMQPProcessor.java | 62 +++++++++++-------- .../additionalDetails.html | 3 + .../additionalDetails.html | 3 + .../processors/AbstractAMQPProcessorTest.java | 18 +++++- 5 files changed, 62 insertions(+), 32 deletions(-) diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java index 6f2fddc41d0e..bb06d0d8ed4b 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java @@ -16,14 +16,14 @@ */ package org.apache.nifi.amqp.processors; -import java.io.IOException; - -import org.apache.nifi.logging.ComponentLog; - import com.rabbitmq.client.AMQP.BasicProperties; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ReturnListener; +import org.apache.nifi.logging.ComponentLog; + +import java.io.IOException; + /** * Generic publisher of messages to AMQP-based messaging system. It is based on * RabbitMQ client API (https://www.rabbitmq.com/api-guide.html) diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java index af24cb7cd723..eaadbfaac038 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java @@ -16,11 +16,9 @@ */ package org.apache.nifi.amqp.processors; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import javax.net.ssl.SSLContext; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; +import com.rabbitmq.client.DefaultSaslConfig; import org.apache.commons.lang3.StringUtils; import org.apache.nifi.annotation.lifecycle.OnStopped; @@ -35,16 +33,19 @@ import org.apache.nifi.security.util.SslContextFactory; import org.apache.nifi.ssl.SSLContextService; -import com.rabbitmq.client.Connection; -import com.rabbitmq.client.ConnectionFactory; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.net.ssl.SSLContext; /** * Base processor that uses RabbitMQ client API * (https://www.rabbitmq.com/api-guide.html) to rendezvous with AMQP-based * messaging systems version 0.9.1 * - * @param the type of {@link AMQPWorker}. Please see {@link AMQPPublisher} - * and {@link AMQPConsumer} + * @param the type of {@link AMQPWorker}. Please see {@link AMQPPublisher} and {@link + * AMQPConsumer} */ abstract class AbstractAMQPProcessor extends AbstractProcessor { @@ -97,6 +98,14 @@ abstract class AbstractAMQPProcessor extends AbstractProce .required(false) .identifiesControllerService(SSLContextService.class) .build(); + public static final PropertyDescriptor USE_CERT_AUTHENTICATION = new PropertyDescriptor.Builder() + .name("Cert Authentication") + .description("Authenticate using the SSL certificate rather than username/password.") + .required(false) + .defaultValue("false") + .allowableValues("true", "false") + .addValidator(StandardValidators.BOOLEAN_VALIDATOR) + .build(); public static final PropertyDescriptor CLIENT_AUTH = new PropertyDescriptor.Builder() .name("ssl-client-auth") .displayName("Client Auth") @@ -122,6 +131,7 @@ abstract class AbstractAMQPProcessor extends AbstractProce descriptors.add(PASSWORD); descriptors.add(AMQP_VERSION); descriptors.add(SSL_CONTEXT_SERVICE); + descriptors.add(USE_CERT_AUTHENTICATION); descriptors.add(CLIENT_AUTH); } @@ -171,10 +181,8 @@ public void close() { * {@link #onTrigger(ProcessContext, ProcessSession)}. It is implemented by * sub-classes to perform {@link Processor} specific functionality. * - * @param context - * instance of {@link ProcessContext} - * @param session - * instance of {@link ProcessSession} + * @param context instance of {@link ProcessContext} + * @param session instance of {@link ProcessSession} */ protected abstract void rendezvousWithAmqp(ProcessContext context, ProcessSession session) throws ProcessException; @@ -183,8 +191,7 @@ public void close() { * {@link AMQPPublisher} or {@link AMQPConsumer}) and is implemented by * sub-classes. * - * @param context - * instance of {@link ProcessContext} + * @param context instance of {@link ProcessContext} * @return new instance of {@link AMQPWorker} */ protected abstract T finishBuildingTargetResource(ProcessContext context); @@ -208,19 +215,24 @@ private void buildTargetResource(ProcessContext context) { */ private Connection createConnection(ProcessContext context) { ConnectionFactory cf = new ConnectionFactory(); - cf.setHost(context.getProperty(HOST).getValue()); - cf.setPort(Integer.parseInt(context.getProperty(PORT).getValue())); cf.setUsername(context.getProperty(USER).getValue()); cf.setPassword(context.getProperty(PASSWORD).getValue()); + cf.setHost(context.getProperty(HOST).getValue()); + cf.setPort(Integer.parseInt(context.getProperty(PORT).getValue())); String vHost = context.getProperty(V_HOST).getValue(); if (vHost != null) { cf.setVirtualHost(vHost); } // handles TLS/SSL aspects + final Boolean useCertAuthentication = context.getProperty(USE_CERT_AUTHENTICATION).asBoolean(); final SSLContextService sslService = context.getProperty(SSL_CONTEXT_SERVICE).asControllerService(SSLContextService.class); + // if the property to use cert authentication is set but the SSL service hasn't been configured, throw an exception. + if (useCertAuthentication && sslService == null) { + throw new ProviderCreationException("This processor is configured to use cert authentication, " + + "but the SSL Context Service hasn't been configured. You need to configure the SSL Context Service."); + } final String rawClientAuth = context.getProperty(CLIENT_AUTH).getValue(); - final SSLContext sslContext; if (sslService != null) { final SSLContextService.ClientAuth clientAuth; @@ -234,14 +246,14 @@ private Connection createConnection(ProcessContext context) { rawClientAuth, StringUtils.join(SslContextFactory.ClientAuth.values(), ", "))); } } - sslContext = sslService.createSSLContext(clientAuth); - } else { - sslContext = null; - } - - // check if the ssl context is set and add it to the factory if so - if (sslContext != null) { + final SSLContext sslContext = sslService.createSSLContext(clientAuth); cf.useSslProtocol(sslContext); + + if (useCertAuthentication) { + // this tells the factory to use the cert common name for authentication and not user name and password + // REF: https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl + cf.setSaslConfig(DefaultSaslConfig.EXTERNAL); + } } try { diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html index f276eeb59a87..4df48cd16c93 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html @@ -63,6 +63,9 @@

Configuration Details

  • Password - [REQUIRED] password to use with user name to connect to AMQP broker. Usually provided by the administrator. Defaults to 'guest'.
  • +
  • Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate for authentication rather than user name and password. + This can only be used in conjunction with SSL. Defaults to 'false'. +
  • Virtual Host - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security. Please refer to this blog for more details on Virtual Host.
  • diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html index 73453b69a402..7c45738db937 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html @@ -84,6 +84,9 @@

    Configuration Details

  • Password - [REQUIRED] password to use with user name to connect to AMQP broker. Usually provided by the administrator. Defaults to 'guest'.
  • +
  • Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate for authentication rather than user name and password. + This can only be used in conjunction with SSL. Defaults to 'false'. +
  • Virtual Host - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security. Please refer to this blog for more details on Virtual Host.
  • diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/test/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessorTest.java b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/test/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessorTest.java index be709b3eed4d..f61d7518d9f1 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/test/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessorTest.java +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/test/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessorTest.java @@ -16,9 +16,6 @@ */ package org.apache.nifi.amqp.processors; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - import org.apache.nifi.authentication.exception.ProviderCreationException; import org.apache.nifi.processor.ProcessContext; import org.apache.nifi.processor.ProcessSession; @@ -29,6 +26,9 @@ import org.junit.Before; import org.junit.Test; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + /** * Unit tests for the AbstractAMQPProcessor class */ @@ -50,6 +50,7 @@ public void testConnectToCassandraWithSSLBadClientAuth() throws Exception { testRunner.addControllerService("ssl-context", sslService); testRunner.enableControllerService(sslService); testRunner.setProperty(AbstractAMQPProcessor.SSL_CONTEXT_SERVICE, "ssl-context"); + testRunner.setProperty(AbstractAMQPProcessor.USE_CERT_AUTHENTICATION, "false"); testRunner.setProperty(AbstractAMQPProcessor.HOST, "test"); testRunner.setProperty(AbstractAMQPProcessor.PORT, "9999"); testRunner.setProperty(AbstractAMQPProcessor.USER, "test"); @@ -59,6 +60,17 @@ public void testConnectToCassandraWithSSLBadClientAuth() throws Exception { processor.onTrigger(testRunner.getProcessContext(), testRunner.getProcessSessionFactory()); } + @Test(expected = ProviderCreationException.class) + public void testInvalidSSLConfiguration() throws Exception { + // it's invalid to have use_cert_auth enabled and not have the SSL Context Service configured + testRunner.setProperty(AbstractAMQPProcessor.USE_CERT_AUTHENTICATION, "true"); + testRunner.setProperty(AbstractAMQPProcessor.HOST, "test"); + testRunner.setProperty(AbstractAMQPProcessor.PORT, "9999"); + testRunner.setProperty(AbstractAMQPProcessor.USER, "test"); + testRunner.setProperty(AbstractAMQPProcessor.PASSWORD, "test"); + processor.onTrigger(testRunner.getProcessContext(), testRunner.getProcessSessionFactory()); + } + /** * Provides a stubbed processor instance for testing */ From 5e033b82e6a8e0fc5c95d1e5a64c1904adce2a20 Mon Sep 17 00:00:00 2001 From: m-hogue Date: Tue, 4 Jul 2017 12:12:26 -0400 Subject: [PATCH 2/7] NIFI-3193: added displayName to new property --- .../apache/nifi/amqp/processors/AbstractAMQPProcessor.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java index eaadbfaac038..8966d8df3e32 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java @@ -99,8 +99,9 @@ abstract class AbstractAMQPProcessor extends AbstractProce .identifiesControllerService(SSLContextService.class) .build(); public static final PropertyDescriptor USE_CERT_AUTHENTICATION = new PropertyDescriptor.Builder() - .name("Cert Authentication") - .description("Authenticate using the SSL certificate rather than username/password.") + .name("cert-authentication") + .displayName("Use Certificate Authentication") + .description("Authenticate using the SSL certificate common name rather than username/password.") .required(false) .defaultValue("false") .allowableValues("true", "false") From 3910b974c3c825bb3987227d97552d2e58c722b3 Mon Sep 17 00:00:00 2001 From: m-hogue Date: Wed, 5 Jul 2017 10:35:42 -0400 Subject: [PATCH 3/7] NIFI-3193: fixed import formatting NIFI-3193: final tweaks to formatter --- .../nifi/amqp/processors/AMQPPublisher.java | 22 +++++++-------- .../processors/AbstractAMQPProcessor.java | 28 +++++++++++-------- .../processors/AbstractAMQPProcessorTest.java | 6 ++-- 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java index bb06d0d8ed4b..edf631f8f1bf 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java @@ -16,13 +16,13 @@ */ package org.apache.nifi.amqp.processors; -import com.rabbitmq.client.AMQP.BasicProperties; -import com.rabbitmq.client.Connection; -import com.rabbitmq.client.ReturnListener; +import java.io.IOException; import org.apache.nifi.logging.ComponentLog; -import java.io.IOException; +import com.rabbitmq.client.AMQP.BasicProperties; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ReturnListener; /** * Generic publisher of messages to AMQP-based messaging system. It is based on @@ -38,7 +38,7 @@ final class AMQPPublisher extends AMQPWorker { * Creates an instance of this publisher * * @param connection - * instance of AMQP {@link Connection} + * instance of AMQP {@link Connection} */ AMQPPublisher(Connection connection, ComponentLog processLog) { super(connection); @@ -52,15 +52,15 @@ final class AMQPPublisher extends AMQPWorker { * {@link BasicProperties}) to a pre-defined AMQP Exchange. * * @param bytes - * bytes representing a message. + * bytes representing a message. * @param properties - * instance of {@link BasicProperties} + * instance of {@link BasicProperties} * @param exchange - * the name of AMQP exchange to which messages will be published. - * If not provided 'default' exchange will be used. + * the name of AMQP exchange to which messages will be published. If not + * provided 'default' exchange will be used. * @param routingKey - * (required) the name of the routingKey to be used by AMQP-based - * system to route messages to its final destination (queue). + * (required) the name of the routingKey to be used by AMQP-based system to + * route messages to its final destination (queue). */ void publish(byte[] bytes, BasicProperties properties, String routingKey, String exchange) { this.validateStringProperty("routingKey", routingKey); diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java index 8966d8df3e32..2a3ea11706aa 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java @@ -16,9 +16,11 @@ */ package org.apache.nifi.amqp.processors; -import com.rabbitmq.client.Connection; -import com.rabbitmq.client.ConnectionFactory; -import com.rabbitmq.client.DefaultSaslConfig; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.net.ssl.SSLContext; import org.apache.commons.lang3.StringUtils; import org.apache.nifi.annotation.lifecycle.OnStopped; @@ -33,19 +35,18 @@ import org.apache.nifi.security.util.SslContextFactory; import org.apache.nifi.ssl.SSLContextService; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; +import com.rabbitmq.client.DefaultSaslConfig; -import javax.net.ssl.SSLContext; /** * Base processor that uses RabbitMQ client API * (https://www.rabbitmq.com/api-guide.html) to rendezvous with AMQP-based * messaging systems version 0.9.1 * - * @param the type of {@link AMQPWorker}. Please see {@link AMQPPublisher} and {@link - * AMQPConsumer} + * @param the type of {@link AMQPWorker}. Please see {@link AMQPPublisher} + * and {@link AMQPConsumer} */ abstract class AbstractAMQPProcessor extends AbstractProcessor { @@ -182,8 +183,10 @@ public void close() { * {@link #onTrigger(ProcessContext, ProcessSession)}. It is implemented by * sub-classes to perform {@link Processor} specific functionality. * - * @param context instance of {@link ProcessContext} - * @param session instance of {@link ProcessSession} + * @param context + * instance of {@link ProcessContext} + * @param session + * instance of {@link ProcessSession} */ protected abstract void rendezvousWithAmqp(ProcessContext context, ProcessSession session) throws ProcessException; @@ -192,7 +195,8 @@ public void close() { * {@link AMQPPublisher} or {@link AMQPConsumer}) and is implemented by * sub-classes. * - * @param context instance of {@link ProcessContext} + * @param context + * instance of {@link ProcessContext} * @return new instance of {@link AMQPWorker} */ protected abstract T finishBuildingTargetResource(ProcessContext context); diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/test/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessorTest.java b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/test/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessorTest.java index f61d7518d9f1..662e0e5d4cfb 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/test/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessorTest.java +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/test/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessorTest.java @@ -16,6 +16,9 @@ */ package org.apache.nifi.amqp.processors; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import org.apache.nifi.authentication.exception.ProviderCreationException; import org.apache.nifi.processor.ProcessContext; import org.apache.nifi.processor.ProcessSession; @@ -26,8 +29,6 @@ import org.junit.Before; import org.junit.Test; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; /** * Unit tests for the AbstractAMQPProcessor class @@ -79,6 +80,7 @@ public static class MockAbstractAMQPProcessor extends AbstractAMQPProcessor Date: Wed, 5 Jul 2017 10:49:23 -0400 Subject: [PATCH 4/7] NIFI-3193: final style tweaks --- .../apache/nifi/amqp/processors/AMQPPublisher.java | 14 +++++++------- .../amqp/processors/AbstractAMQPProcessor.java | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java index edf631f8f1bf..6f2fddc41d0e 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AMQPPublisher.java @@ -38,7 +38,7 @@ final class AMQPPublisher extends AMQPWorker { * Creates an instance of this publisher * * @param connection - * instance of AMQP {@link Connection} + * instance of AMQP {@link Connection} */ AMQPPublisher(Connection connection, ComponentLog processLog) { super(connection); @@ -52,15 +52,15 @@ final class AMQPPublisher extends AMQPWorker { * {@link BasicProperties}) to a pre-defined AMQP Exchange. * * @param bytes - * bytes representing a message. + * bytes representing a message. * @param properties - * instance of {@link BasicProperties} + * instance of {@link BasicProperties} * @param exchange - * the name of AMQP exchange to which messages will be published. If not - * provided 'default' exchange will be used. + * the name of AMQP exchange to which messages will be published. + * If not provided 'default' exchange will be used. * @param routingKey - * (required) the name of the routingKey to be used by AMQP-based system to - * route messages to its final destination (queue). + * (required) the name of the routingKey to be used by AMQP-based + * system to route messages to its final destination (queue). */ void publish(byte[] bytes, BasicProperties properties, String routingKey, String exchange) { this.validateStringProperty("routingKey", routingKey); diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java index 2a3ea11706aa..460bddf5f2b9 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java @@ -46,7 +46,7 @@ * messaging systems version 0.9.1 * * @param the type of {@link AMQPWorker}. Please see {@link AMQPPublisher} - * and {@link AMQPConsumer} + * and {@link AMQPConsumer} */ abstract class AbstractAMQPProcessor extends AbstractProcessor { @@ -184,9 +184,9 @@ public void close() { * sub-classes to perform {@link Processor} specific functionality. * * @param context - * instance of {@link ProcessContext} + * instance of {@link ProcessContext} * @param session - * instance of {@link ProcessSession} + * instance of {@link ProcessSession} */ protected abstract void rendezvousWithAmqp(ProcessContext context, ProcessSession session) throws ProcessException; @@ -196,7 +196,7 @@ public void close() { * sub-classes. * * @param context - * instance of {@link ProcessContext} + * instance of {@link ProcessContext} * @return new instance of {@link AMQPWorker} */ protected abstract T finishBuildingTargetResource(ProcessContext context); From 02956f8bda6af5fb043ab4b32a885a48357b5780 Mon Sep 17 00:00:00 2001 From: m-hogue Date: Wed, 5 Jul 2017 11:15:06 -0400 Subject: [PATCH 5/7] NIFI-3193: changed USE_CERT_AUTHORIZATION property displayName and UI additional details to have similar wording --- .../apache/nifi/amqp/processors/AbstractAMQPProcessor.java | 6 +++--- .../additionalDetails.html | 2 +- .../additionalDetails.html | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java index 460bddf5f2b9..efd1be55ed2e 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/java/org/apache/nifi/amqp/processors/AbstractAMQPProcessor.java @@ -102,7 +102,7 @@ abstract class AbstractAMQPProcessor extends AbstractProce public static final PropertyDescriptor USE_CERT_AUTHENTICATION = new PropertyDescriptor.Builder() .name("cert-authentication") .displayName("Use Certificate Authentication") - .description("Authenticate using the SSL certificate common name rather than username/password.") + .description("Authenticate using the SSL certificate common name rather than user name/password.") .required(false) .defaultValue("false") .allowableValues("true", "false") @@ -220,10 +220,10 @@ private void buildTargetResource(ProcessContext context) { */ private Connection createConnection(ProcessContext context) { ConnectionFactory cf = new ConnectionFactory(); - cf.setUsername(context.getProperty(USER).getValue()); - cf.setPassword(context.getProperty(PASSWORD).getValue()); cf.setHost(context.getProperty(HOST).getValue()); cf.setPort(Integer.parseInt(context.getProperty(PORT).getValue())); + cf.setUsername(context.getProperty(USER).getValue()); + cf.setPassword(context.getProperty(PASSWORD).getValue()); String vHost = context.getProperty(V_HOST).getValue(); if (vHost != null) { cf.setVirtualHost(vHost); diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html index 4df48cd16c93..44e058cf5ba0 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html @@ -63,7 +63,7 @@

    Configuration Details

  • Password - [REQUIRED] password to use with user name to connect to AMQP broker. Usually provided by the administrator. Defaults to 'guest'.
  • -
  • Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate for authentication rather than user name and password. +
  • Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password. This can only be used in conjunction with SSL. Defaults to 'false'.
  • Virtual Host - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security. diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html index 7c45738db937..475f812b9af6 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html @@ -84,7 +84,7 @@

    Configuration Details

  • Password - [REQUIRED] password to use with user name to connect to AMQP broker. Usually provided by the administrator. Defaults to 'guest'.
  • -
  • Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate for authentication rather than user name and password. +
  • Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password. This can only be used in conjunction with SSL. Defaults to 'false'.
  • Virtual Host - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security. From e96e1e6d8e9312948e5c12ebf09e3261b3825d2d Mon Sep 17 00:00:00 2001 From: m-hogue Date: Wed, 5 Jul 2017 13:38:54 -0400 Subject: [PATCH 6/7] NIFI-3193: match property names between html and property desc --- .../additionalDetails.html | 2 +- .../additionalDetails.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html index 44e058cf5ba0..8cfd10e13664 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html @@ -63,7 +63,7 @@

    Configuration Details

  • Password - [REQUIRED] password to use with user name to connect to AMQP broker. Usually provided by the administrator. Defaults to 'guest'.
  • -
  • Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password. +
  • Use Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password. This can only be used in conjunction with SSL. Defaults to 'false'.
  • Virtual Host - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security. diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html index 475f812b9af6..3cea884b3532 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html @@ -84,7 +84,7 @@

    Configuration Details

  • Password - [REQUIRED] password to use with user name to connect to AMQP broker. Usually provided by the administrator. Defaults to 'guest'.
  • -
  • Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password. +
  • Use Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password. This can only be used in conjunction with SSL. Defaults to 'false'.
  • Virtual Host - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security. From f3a1af84b875bdd94b0e827c5613740ccd4ed360 Mon Sep 17 00:00:00 2001 From: m-hogue Date: Wed, 5 Jul 2017 13:41:25 -0400 Subject: [PATCH 7/7] NIFI-3193: fixed property names for real this time --- .../additionalDetails.html | 2 +- .../additionalDetails.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html index 8cfd10e13664..8ae8a0f3888f 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html @@ -63,7 +63,7 @@

    Configuration Details

  • Password - [REQUIRED] password to use with user name to connect to AMQP broker. Usually provided by the administrator. Defaults to 'guest'.
  • -
  • Use Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password. +
  • Use Certificate Authentication - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password. This can only be used in conjunction with SSL. Defaults to 'false'.
  • Virtual Host - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security. diff --git a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html index 3cea884b3532..7391b390b23a 100644 --- a/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html +++ b/nifi-nar-bundles/nifi-amqp-bundle/nifi-amqp-processors/src/main/resources/docs/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html @@ -84,7 +84,7 @@

    Configuration Details

  • Password - [REQUIRED] password to use with user name to connect to AMQP broker. Usually provided by the administrator. Defaults to 'guest'.
  • -
  • Use Cert Authentication - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password. +
  • Use Certificate Authentication - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password. This can only be used in conjunction with SSL. Defaults to 'false'.
  • Virtual Host - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security.