You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2016/07/13 14:27:39 UTC

[1/3] nifi git commit: NIFI-2214: Updated LICENSE / NOTICE files

Repository: nifi
Updated Branches:
  refs/heads/master 1e1630cc6 -> 97366d61b


NIFI-2214: Updated LICENSE / NOTICE files


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

Branch: refs/heads/master
Commit: 97366d61bc13892ac6da8bcea0efae575dfac49e
Parents: e88c0d2
Author: Mark Payne <ma...@hotmail.com>
Authored: Wed Jul 13 10:21:57 2016 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Wed Jul 13 10:25:02 2016 -0400

----------------------------------------------------------------------
 nifi-assembly/LICENSE                           |  25 ++
 nifi-assembly/NOTICE                            |  18 --
 .../src/main/resources/META-INF/LICENSE         | 251 +++++++++++++++++++
 .../src/main/resources/META-INF/NOTICE          |  29 +--
 4 files changed, 291 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/97366d61/nifi-assembly/LICENSE
----------------------------------------------------------------------
diff --git a/nifi-assembly/LICENSE b/nifi-assembly/LICENSE
index fa3e2ef..7687752 100644
--- a/nifi-assembly/LICENSE
+++ b/nifi-assembly/LICENSE
@@ -1082,6 +1082,31 @@ This product bundles HexViewJS available under an MIT License
     OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
     WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
+
+  The binary distribution of this product bundles 'Microsoft Azure IoT Device Libraries' under an MIT style
+  license.
+  
+	Copyright (c) Microsoft Corporation
+	
+	All rights reserved. 
+	
+	MIT License
+	
+	Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 
+	associated documentation files (the Software), to deal in the Software without restriction, including 
+	without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 
+	sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject 
+	to the following conditions:
+	
+	The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+	
+	THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 
+	LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 
+	NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
+	WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
+	SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
   The binary distribution of this product bundles 'Jcodings' under an MIT style
   license.
 

http://git-wip-us.apache.org/repos/asf/nifi/blob/97366d61/nifi-assembly/NOTICE
----------------------------------------------------------------------
diff --git a/nifi-assembly/NOTICE b/nifi-assembly/NOTICE
index 2c03d4c..67deaa3 100644
--- a/nifi-assembly/NOTICE
+++ b/nifi-assembly/NOTICE
@@ -944,21 +944,3 @@ SIL OFL 1.1
 
 The following binary components are provided under the SIL Open Font License 1.1
   (SIL OFL 1.1) FontAwesome (4.6.1 - http://fortawesome.github.io/Font-Awesome/license/)
-
-
-************************
-MIT License
-************************
-The following binary components are provided under the MIT License
-
-    (MIT) Microsoft Azure IoT Device Libraries (com.microsoft.azure:azure-eventhubs:0.7.1 -- https://github.com/Azure/azure-event-hubs/)
-        This product includes software developed by Apache
-            Apache Qpid Proton 0.13.0
-            (Apache 2.0 license)
-                The following NOTICE information applies:
-                Copyright 2006-2015 The Apache Software Foundation
-
-        The product includes software developed by The Legion of the Bouncy Castle Inc. License (https://www.bouncycastle.org/licence.html)
-            (Bouncy Castle) Crytography library BCPKIX  (org.bouncycastle:bcpkix-jdk15on:1.47 -- https://www.bouncycastle.org/java.html)
-                The following NOTICE information applies:
-                Copyright (c) 2000 - 2016 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/97366d61/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/LICENSE
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/LICENSE b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/LICENSE
new file mode 100644
index 0000000..38a42cd
--- /dev/null
+++ b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/LICENSE
@@ -0,0 +1,251 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+
+  The binary distribution of this product bundles source from 'Microsoft Azure IoT Device Libraries'.
+  The source is available under an MIT LICENSE.
+
+	Copyright (c) Microsoft Corporation
+	
+	All rights reserved. 
+	
+	MIT License
+	
+	Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 
+	associated documentation files (the Software), to deal in the Software without restriction, including 
+	without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 
+	sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject 
+	to the following conditions:
+	
+	The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+	
+	THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 
+	LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 
+	NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
+	WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
+	SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+  The binary distribution of this product bundles 'Bouncy Castle JDK 1.5 Provider'
+  under an MIT style license.
+
+    Copyright (c) 2000 - 2015 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org)
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+    THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/nifi/blob/97366d61/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/NOTICE b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/NOTICE
index b8ebc67..f539055 100644
--- a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/NOTICE
+++ b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/NOTICE
@@ -4,20 +4,21 @@ Copyright 2015-2016 The Apache Software Foundation
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
 
+******************
+Apache Software License v2
+******************
 
-************************
-MIT License
-************************
-The following binary components are provided under the MIT License
+The following binary components are provided under the Apache Software License v2
 
-    (MIT) Microsoft Azure IoT Device Libraries (com.microsoft.azure:azure-eventhubs:0.7.1 -- https://github.com/Azure/azure-event-hubs/)
-        This product includes software developed by Apache
-            Apache Qpid Proton 0.13.0
-            (Apache 2.0 license)
-                The following NOTICE information applies:
-                Copyright 2006-2015 The Apache Software Foundation
+  (ASLv2) Apache Commons Lang
+    The following NOTICE information applies:
+      Apache Commons Lang
+      Copyright 2001-2014 The Apache Software Foundation
 
-        The product includes software developed by The Legion of the Bouncy Castle Inc. License (https://www.bouncycastle.org/licence.html)
-            (Bouncy Castle) Crytography library BCPKIX  (org.bouncycastle:bcpkix-jdk15on:1.47 -- https://www.bouncycastle.org/java.html)
-                The following NOTICE information applies:
-                Copyright (c) 2000 - 2016 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org)
\ No newline at end of file
+      This product includes software from the Spring Framework,
+      under the Apache License 2.0 (see: StringUtils.containsWhitespace())
+
+  (ASLv2) Apache Commons IO
+    The following NOTICE information applies:
+      Apache Commons IO
+      Copyright 2002-2012 The Apache Software Foundation


[3/3] nifi git commit: NIFI-2214 updated the both of the Azure Event Hub processors to use the latest Azure Event Hub libraries. Also added test cases for each of the processors

Posted by ma...@apache.org.
NIFI-2214 updated the both of the Azure Event Hub processors to use the latest Azure Event Hub libraries. Also added test cases for each of the processors


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

Branch: refs/heads/master
Commit: 317918a9bbe40bf201a02daa1b147e8b624f7242
Parents: 1e1630c
Author: Andrew Psaltis <ps...@gmail.com>
Authored: Sun Jul 10 13:00:56 2016 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Wed Jul 13 10:25:02 2016 -0400

----------------------------------------------------------------------
 .../nifi-azure-bundle/nifi-azure-nar/pom.xml    |   1 -
 .../nifi-azure-processors/pom.xml               |  17 +-
 .../azure/eventhub/GetAzureEventHub.java        | 317 +++++++++++--------
 .../azure/eventhub/PutAzureEventHub.java        | 201 ++++++------
 .../azure/eventhub/GetAzureEventHubTest.java    | 176 ++++++++++
 .../azure/eventhub/PutAzureEventHubTest.java    | 134 ++++++++
 nifi-nar-bundles/nifi-azure-bundle/pom.xml      |   2 -
 7 files changed, 619 insertions(+), 229 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/317918a9/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/pom.xml b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/pom.xml
index da513f1..3d1b131 100644
--- a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/pom.xml
+++ b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/pom.xml
@@ -23,7 +23,6 @@
     </parent>
 
     <artifactId>nifi-azure-nar</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
     <packaging>nar</packaging>
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>

http://git-wip-us.apache.org/repos/asf/nifi/blob/317918a9/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
index 8562515..8abf52f 100644
--- a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
+++ b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
@@ -20,7 +20,9 @@
 
 	<artifactId>nifi-azure-processors</artifactId>
 	<packaging>jar</packaging>
-
+	<properties>
+		<powermock.version>1.6.5</powermock.version>
+	</properties>
 	<dependencies>
 		<dependency>
 			<groupId>org.apache.nifi</groupId>
@@ -35,11 +37,10 @@
 			<artifactId>javax.jms-api</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>com.microsoft.eventhubs.client</groupId>
-			<artifactId>eventhubs-client</artifactId>
-			<version>0.9.1</version>
+			<groupId>com.microsoft.azure</groupId>
+			<artifactId>azure-eventhubs</artifactId>
+			<version>0.7.1</version>
 		</dependency>
-
 		<dependency>
 			<groupId>org.apache.nifi</groupId>
 			<artifactId>nifi-mock</artifactId>
@@ -55,5 +56,11 @@
 			<artifactId>junit</artifactId>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.powermock</groupId>
+			<artifactId>powermock-module-junit4</artifactId>
+			<version>${powermock.version}</version>
+			<scope>test</scope>
+		</dependency>
 	</dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/nifi/blob/317918a9/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/eventhub/GetAzureEventHub.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/eventhub/GetAzureEventHub.java b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/eventhub/GetAzureEventHub.java
index ffd0bab..97f1c92 100644
--- a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/eventhub/GetAzureEventHub.java
+++ b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/eventhub/GetAzureEventHub.java
@@ -16,20 +16,11 @@
  */
 package org.apache.nifi.processors.azure.eventhub;
 
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-
+import com.microsoft.azure.eventhubs.EventData;
+import com.microsoft.azure.eventhubs.EventHubClient;
+import com.microsoft.azure.eventhubs.PartitionReceiver;
+import com.microsoft.azure.servicebus.ConnectionStringBuilder;
+import com.microsoft.azure.servicebus.ServiceBusException;
 import org.apache.nifi.annotation.behavior.InputRequirement;
 import org.apache.nifi.annotation.behavior.InputRequirement.Requirement;
 import org.apache.nifi.annotation.behavior.WritesAttribute;
@@ -45,110 +36,136 @@ import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.ProcessSession;
 import org.apache.nifi.processor.Relationship;
 import org.apache.nifi.processor.exception.ProcessException;
-import org.apache.nifi.processor.io.OutputStreamCallback;
 import org.apache.nifi.processor.util.StandardValidators;
 import org.apache.nifi.util.StopWatch;
 
-import com.microsoft.eventhubs.client.ConnectionStringBuilder;
-import com.microsoft.eventhubs.client.EventHubEnqueueTimeFilter;
-import com.microsoft.eventhubs.client.EventHubException;
-import com.microsoft.eventhubs.client.EventHubMessage;
-import com.microsoft.eventhubs.client.IEventHubFilter;
-import com.microsoft.eventhubs.client.ResilientEventHubReceiver;
+import java.io.IOException;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
 
-@Tags({ "azure", "microsoft", "cloud", "eventhub", "events", "streaming", "streams" })
+@Tags({"azure", "microsoft", "cloud", "eventhub", "events", "streaming", "streams"})
 @CapabilityDescription("Receives messages from a Microsoft Azure Event Hub, writing the contents of the Azure message to the content of the FlowFile")
 @InputRequirement(Requirement.INPUT_FORBIDDEN)
 @WritesAttributes({
-    @WritesAttribute(attribute = "eventhub.enqueued.timestamp", description = "The time (in milliseconds since epoch, UTC) at which the message was enqueued in the Azure Event Hub"),
-    @WritesAttribute(attribute = "eventhub.offset", description = "The offset into the partition at which the message was stored"),
-    @WritesAttribute(attribute = "eventhub.sequence", description = "The Azure Sequence number associated with the message"),
-    @WritesAttribute(attribute = "eventhub.name", description = "The name of the Event Hub from which the message was pulled"),
-    @WritesAttribute(attribute = "eventhub.partition", description = "The name of the Azure Partition from which the message was pulled")
+        @WritesAttribute(attribute = "eventhub.enqueued.timestamp", description = "The time (in milliseconds since epoch, UTC) at which the message was enqueued in the Azure Event Hub"),
+        @WritesAttribute(attribute = "eventhub.offset", description = "The offset into the partition at which the message was stored"),
+        @WritesAttribute(attribute = "eventhub.sequence", description = "The Azure Sequence number associated with the message"),
+        @WritesAttribute(attribute = "eventhub.name", description = "The name of the Event Hub from which the message was pulled"),
+        @WritesAttribute(attribute = "eventhub.partition", description = "The name of the Azure Partition from which the message was pulled")
 })
 public class GetAzureEventHub extends AbstractProcessor {
 
     static final PropertyDescriptor EVENT_HUB_NAME = new PropertyDescriptor.Builder()
-        .name("Event Hub Name")
-        .description("The name of the Azure Event Hub to pull messages from")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .required(true)
-        .build();
+            .name("Event Hub Name")
+            .description("The name of the Azure Event Hub to pull messages from")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .required(true)
+            .build();
     static final PropertyDescriptor NAMESPACE = new PropertyDescriptor.Builder()
-        .name("Event Hub Namespace")
-        .description("The Azure Namespace that the Event Hub is assigned to. This is generally equal to <Event Hub Name>-ns")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .expressionLanguageSupported(false)
-        .required(true)
-        .build();
+            .name("Event Hub Namespace")
+            .description("The Azure Namespace that the Event Hub is assigned to. This is generally equal to <Event Hub Name>-ns")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .expressionLanguageSupported(false)
+            .required(true)
+            .build();
     static final PropertyDescriptor ACCESS_POLICY = new PropertyDescriptor.Builder()
-        .name("Shared Access Policy Name")
-        .description("The name of the Event Hub Shared Access Policy. This Policy must have Listen permissions.")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .expressionLanguageSupported(false)
-        .required(true)
-        .build();
+            .name("Shared Access Policy Name")
+            .description("The name of the Event Hub Shared Access Policy. This Policy must have Listen permissions.")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .expressionLanguageSupported(false)
+            .required(true)
+            .build();
     static final PropertyDescriptor POLICY_PRIMARY_KEY = new PropertyDescriptor.Builder()
-        .name("Shared Access Policy Primary Key")
-        .description("The primary key of the Event Hub Shared Access Policy")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .expressionLanguageSupported(false)
-        .sensitive(true)
-        .required(true)
-        .build();
+            .name("Shared Access Policy Primary Key")
+            .description("The primary key of the Event Hub Shared Access Policy")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .expressionLanguageSupported(false)
+            .sensitive(true)
+            .required(true)
+            .build();
 
     static final PropertyDescriptor NUM_PARTITIONS = new PropertyDescriptor.Builder()
-        .name("Number of Event Hub Partitions")
-        .description("The number of partitions that the Event Hub has. Only this number of partitions will be used, "
-            + "so it is important to ensure that if the number of partitions changes that this value be updated. Otherwise, some messages may not be consumed.")
-        .addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR)
-        .expressionLanguageSupported(false)
-        .required(true)
-        .build();
+            .name("Number of Event Hub Partitions")
+            .description("The number of partitions that the Event Hub has. Only this number of partitions will be used, "
+                    + "so it is important to ensure that if the number of partitions changes that this value be updated. Otherwise, some messages may not be consumed.")
+            .addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR)
+            .expressionLanguageSupported(false)
+            .required(true)
+            .build();
     static final PropertyDescriptor CONSUMER_GROUP = new PropertyDescriptor.Builder()
-        .name("Event Hub Consumer Group")
-        .description("The name of the Event Hub Consumer Group to use when pulling events")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .expressionLanguageSupported(false)
-        .defaultValue("$Default")
-        .required(true)
-        .build();
-    static final PropertyDescriptor BATCH_SIZE = new PropertyDescriptor.Builder()
-        .name("Batch Size")
-        .description("The number of FlowFiles to pull in a single JMS session")
-        .addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR)
-        .expressionLanguageSupported(false)
-        .defaultValue("10")
-        .required(true)
-        .build();
+            .name("Event Hub Consumer Group")
+            .description("The name of the Event Hub Consumer Group to use when pulling events")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .expressionLanguageSupported(false)
+            .defaultValue("$Default")
+            .required(true)
+            .build();
+
 
     static final Relationship REL_SUCCESS = new Relationship.Builder()
-        .name("success")
-        .description("Any FlowFile that is successfully received from the Azure Event Hub will be transferred to this Relationship.")
-        .build();
+            .name("success")
+            .description("Any FlowFile that is successfully received from the Azure Event Hub will be transferred to this Relationship.")
+            .build();
 
-    private final ConcurrentMap<String, ResilientEventHubReceiver> partitionToReceiverMap = new ConcurrentHashMap<>();
+    private final ConcurrentMap<String, PartitionReceiver> partitionToReceiverMap = new ConcurrentHashMap<>();
     private volatile BlockingQueue<String> partitionNames = new LinkedBlockingQueue<>();
+    private EventHubClient eventHubClient;
 
-    @Override
-    protected List<PropertyDescriptor> getSupportedPropertyDescriptors() {
-        final List<PropertyDescriptor> properties = new ArrayList<>(super.getSupportedPropertyDescriptors());
-        properties.add(EVENT_HUB_NAME);
-        properties.add(NAMESPACE);
-        properties.add(ACCESS_POLICY);
-        properties.add(POLICY_PRIMARY_KEY);
-        properties.add(NUM_PARTITIONS);
-        properties.add(CONSUMER_GROUP);
-        return properties;
+    private final static List<PropertyDescriptor> propertyDescriptors;
+    private final static Set<Relationship> relationships;
+
+    /*
+    * Will ensure that the list of property descriptors is build only once.
+    * Will also create a Set of relationships
+    */
+    static {
+        List<PropertyDescriptor> _propertyDescriptors = new ArrayList<>();
+        _propertyDescriptors.add(EVENT_HUB_NAME);
+        _propertyDescriptors.add(NAMESPACE);
+        _propertyDescriptors.add(ACCESS_POLICY);
+        _propertyDescriptors.add(POLICY_PRIMARY_KEY);
+        _propertyDescriptors.add(NUM_PARTITIONS);
+        _propertyDescriptors.add(CONSUMER_GROUP);
+        propertyDescriptors = Collections.unmodifiableList(_propertyDescriptors);
+
+        Set<Relationship> _relationships = new HashSet<>();
+        _relationships.add(REL_SUCCESS);
+        relationships = Collections.unmodifiableSet(_relationships);
     }
 
     @Override
     public Set<Relationship> getRelationships() {
-        return Collections.singleton(REL_SUCCESS);
+        return relationships;
     }
 
-    private ResilientEventHubReceiver getReceiver(final ProcessContext context, final String partitionId) throws EventHubException {
-        ResilientEventHubReceiver existingReceiver = partitionToReceiverMap.get(partitionId);
+    @Override
+    public final List<PropertyDescriptor> getSupportedPropertyDescriptors() {
+        return propertyDescriptors;
+    }
+
+
+    protected void setupReceiver(final String connectionString) throws ProcessException {
+        try {
+            eventHubClient = EventHubClient.createFromConnectionString(connectionString).get();
+        } catch (InterruptedException | ExecutionException | IOException | ServiceBusException e) {
+            throw new ProcessException(e);
+        }
+    }
+
+    PartitionReceiver getReceiver(final ProcessContext context, final String partitionId) throws IOException, ServiceBusException, ExecutionException, InterruptedException {
+        PartitionReceiver existingReceiver = partitionToReceiverMap.get(partitionId);
         if (existingReceiver != null) {
             return existingReceiver;
         }
@@ -167,39 +184,74 @@ public class GetAzureEventHub extends AbstractProcessor {
                 return existingReceiver;
             }
 
-            final String policyName = context.getProperty(ACCESS_POLICY).getValue();
-            final String policyKey = context.getProperty(POLICY_PRIMARY_KEY).getValue();
-            final String namespace = context.getProperty(NAMESPACE).getValue();
-            final String eventHubName = context.getProperty(EVENT_HUB_NAME).getValue();
             final String consumerGroupName = context.getProperty(CONSUMER_GROUP).getValue();
 
-            final String connectionString = new ConnectionStringBuilder(policyName, policyKey, namespace).getConnectionString();
-            final IEventHubFilter filter = new EventHubEnqueueTimeFilter(System.currentTimeMillis());
-            final ResilientEventHubReceiver receiver = new ResilientEventHubReceiver(connectionString, eventHubName, partitionId, consumerGroupName, -1, filter);
-            receiver.initialize();
+            final PartitionReceiver receiver = eventHubClient.createReceiver(
+                    consumerGroupName,
+                    partitionId,
+                    Instant.now()).get();
 
             partitionToReceiverMap.put(partitionId, receiver);
             return receiver;
+
         }
     }
 
+    /**
+     * This method is here to try and isolate the Azure related code as the PartitionReceiver cannot be mocked
+     * with PowerMock due to it being final. Unfortunately it extends a base class and does not implement an interface
+     * so even if we create a MockPartitionReciver, it will not work as the two classes are orthogonal.
+     *
+     * @param context     - The processcontext for this processor
+     * @param partitionId - The partition ID to retrieve a receiver by.
+     * @return - Returns the events received from the EventBus.
+     * @throws ProcessException -- If any exception is encountered, receiving events it is wrapped in a ProcessException
+     *                          and then that exception is thrown.
+     */
+    protected Iterable<EventData> receiveEvents(final ProcessContext context, final String partitionId) throws ProcessException {
+        final PartitionReceiver receiver;
+        try {
+            receiver = getReceiver(context, partitionId);
+            return receiver.receive(100).get();
+        } catch (final IOException | ServiceBusException | ExecutionException | InterruptedException e) {
+            throw new ProcessException(e);
+        }
+    }
 
     @OnStopped
-    public void tearDown() {
-        for (final ResilientEventHubReceiver receiver : partitionToReceiverMap.values()) {
-            receiver.close();
+    public void tearDown() throws ProcessException {
+        for (final PartitionReceiver receiver : partitionToReceiverMap.values()) {
+            if (null != receiver) {
+                receiver.close();
+            }
         }
 
         partitionToReceiverMap.clear();
+        try {
+            if (null != eventHubClient) {
+                eventHubClient.closeSync();
+            }
+        } catch (final ServiceBusException e) {
+            throw new ProcessException(e);
+        }
     }
 
     @OnScheduled
-    public void setupPartitions(final ProcessContext context) {
+    public void onScheduled(final ProcessContext context) throws ProcessException {
         final BlockingQueue<String> partitionNames = new LinkedBlockingQueue<>();
         for (int i = 0; i < context.getProperty(NUM_PARTITIONS).asInteger(); i++) {
             partitionNames.add(String.valueOf(i));
         }
         this.partitionNames = partitionNames;
+
+        final String policyName = context.getProperty(ACCESS_POLICY).getValue();
+        final String policyKey = context.getProperty(POLICY_PRIMARY_KEY).getValue();
+        final String namespace = context.getProperty(NAMESPACE).getValue();
+        final String eventHubName = context.getProperty(EVENT_HUB_NAME).getValue();
+
+
+        final String connectionString = new ConnectionStringBuilder(namespace, eventHubName, policyName, policyKey).toString();
+        setupReceiver(connectionString);
     }
 
 
@@ -214,41 +266,44 @@ public class GetAzureEventHub extends AbstractProcessor {
 
         final StopWatch stopWatch = new StopWatch(true);
         try {
-            final ResilientEventHubReceiver receiver;
-            try {
-                receiver = getReceiver(context, partitionId);
-            } catch (final EventHubException e) {
-                throw new ProcessException(e);
-            }
 
-            final EventHubMessage message = EventHubMessage.parseAmqpMessage(receiver.receive(100L));
-            if (message == null) {
+            final Iterable<EventData> receivedEvents = receiveEvents(context, partitionId);
+            if (receivedEvents == null) {
                 return;
             }
 
-            final Map<String, String> attributes = new HashMap<>();
-            attributes.put("eventhub.enqueued.timestamp", String.valueOf(message.getEnqueuedTimestamp()));
-            attributes.put("eventhub.offset", message.getOffset());
-            attributes.put("eventhub.sequence", String.valueOf(message.getSequence()));
-            attributes.put("eventhub.name", context.getProperty(EVENT_HUB_NAME).getValue());
-            attributes.put("eventhub.partition", partitionId);
-
-            FlowFile flowFile = session.create();
-            flowFile = session.putAllAttributes(flowFile, attributes);
-            flowFile = session.write(flowFile, new OutputStreamCallback() {
-                @Override
-                public void process(final OutputStream out) throws IOException {
-                    out.write(message.getData());
-                }
-            });
+            for (final EventData eventData : receivedEvents) {
+                if (null != eventData) {
+
+                    final Map<String, String> attributes = new HashMap<>();
+                    FlowFile flowFile = session.create();
+                    EventData.SystemProperties systemProperties = eventData.getSystemProperties();
 
-            session.transfer(flowFile, REL_SUCCESS);
+                    if (null != systemProperties) {
+                        attributes.put("eventhub.enqueued.timestamp", String.valueOf(eventData.getSystemProperties().getEnqueuedTime()));
+                        attributes.put("eventhub.offset", eventData.getSystemProperties().getOffset());
+                        attributes.put("eventhub.sequence", String.valueOf(eventData.getSystemProperties().getSequenceNumber()));
+                    }
 
-            final String namespace = context.getProperty(NAMESPACE).getValue();
-            final String eventHubName = context.getProperty(EVENT_HUB_NAME).getValue();
-            final String consumerGroup = context.getProperty(CONSUMER_GROUP).getValue();
-            final String transitUri = "amqps://" + namespace + ".servicebus.windows.net" + "/" + eventHubName + "/ConsumerGroups/" + consumerGroup + "/Partitions/" + partitionId;
-            session.getProvenanceReporter().receive(flowFile, transitUri, stopWatch.getElapsed(TimeUnit.MILLISECONDS));
+                    attributes.put("eventhub.name", context.getProperty(EVENT_HUB_NAME).getValue());
+                    attributes.put("eventhub.partition", partitionId);
+
+
+                    flowFile = session.putAllAttributes(flowFile, attributes);
+                    flowFile = session.write(flowFile, out -> {
+                        out.write(eventData.getBody());
+                    });
+
+
+                    session.transfer(flowFile, REL_SUCCESS);
+
+                    final String namespace = context.getProperty(NAMESPACE).getValue();
+                    final String eventHubName = context.getProperty(EVENT_HUB_NAME).getValue();
+                    final String consumerGroup = context.getProperty(CONSUMER_GROUP).getValue();
+                    final String transitUri = "amqps://" + namespace + ".servicebus.windows.net" + "/" + eventHubName + "/ConsumerGroups/" + consumerGroup + "/Partitions/" + partitionId;
+                    session.getProvenanceReporter().receive(flowFile, transitUri, stopWatch.getElapsed(TimeUnit.MILLISECONDS));
+                }
+            }
         } finally {
             partitionIds.offer(partitionId);
         }

http://git-wip-us.apache.org/repos/asf/nifi/blob/317918a9/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/eventhub/PutAzureEventHub.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/eventhub/PutAzureEventHub.java b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/eventhub/PutAzureEventHub.java
index 3bf4ddc..f41f214 100644
--- a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/eventhub/PutAzureEventHub.java
+++ b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/main/java/org/apache/nifi/processors/azure/eventhub/PutAzureEventHub.java
@@ -16,18 +16,11 @@
  */
 package org.apache.nifi.processors.azure.eventhub;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-
-import javax.jms.DeliveryMode;
-
+import com.microsoft.azure.eventhubs.EventData;
+import com.microsoft.azure.eventhubs.EventHubClient;
+import com.microsoft.azure.servicebus.ConnectionStringBuilder;
+import com.microsoft.azure.servicebus.IllegalConnectionStringFormatException;
+import com.microsoft.azure.servicebus.ServiceBusException;
 import org.apache.nifi.annotation.behavior.InputRequirement;
 import org.apache.nifi.annotation.behavior.InputRequirement.Requirement;
 import org.apache.nifi.annotation.behavior.SupportsBatching;
@@ -35,7 +28,6 @@ import org.apache.nifi.annotation.documentation.CapabilityDescription;
 import org.apache.nifi.annotation.documentation.Tags;
 import org.apache.nifi.annotation.lifecycle.OnScheduled;
 import org.apache.nifi.annotation.lifecycle.OnStopped;
-import org.apache.nifi.components.AllowableValue;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.flowfile.FlowFile;
 import org.apache.nifi.processor.AbstractProcessor;
@@ -43,110 +35,119 @@ import org.apache.nifi.processor.ProcessContext;
 import org.apache.nifi.processor.ProcessSession;
 import org.apache.nifi.processor.Relationship;
 import org.apache.nifi.processor.exception.ProcessException;
-import org.apache.nifi.processor.io.InputStreamCallback;
 import org.apache.nifi.processor.util.StandardValidators;
 import org.apache.nifi.stream.io.StreamUtils;
 import org.apache.nifi.util.StopWatch;
 
-import com.microsoft.eventhubs.client.EventHubClient;
-import com.microsoft.eventhubs.client.EventHubException;
-import com.microsoft.eventhubs.client.EventHubSender;
+import java.io.IOException;
+import java.util.List;
+import java.util.Set;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Collections;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
 
 
 @SupportsBatching
-@Tags({ "microsoft", "azure", "cloud", "eventhub", "events", "streams", "streaming" })
+@Tags({"microsoft", "azure", "cloud", "eventhub", "events", "streams", "streaming"})
 @InputRequirement(Requirement.INPUT_REQUIRED)
 @CapabilityDescription("Sends the contents of a FlowFile to a Windows Azure Event Hub. Note: the content of the FlowFile will be buffered into memory before being sent, "
-    + "so care should be taken to avoid sending FlowFiles to this Processor that exceed the amount of Java Heap Space available.")
+        + "so care should be taken to avoid sending FlowFiles to this Processor that exceed the amount of Java Heap Space available.")
 public class PutAzureEventHub extends AbstractProcessor {
-
-    static final AllowableValue DELIVERY_MODE_PERSISTENT = new AllowableValue(String.valueOf(DeliveryMode.PERSISTENT), "Persistent", "This mode indicates that the Event Hub "
-        + "server must persist the message to a reliable storage mechanism before the FlowFile is routed to 'success', in order to ensure that the data is not lost.");
-
-    static final AllowableValue DELIVERY_MODE_NON_PERSISTENT = new AllowableValue(String.valueOf(DeliveryMode.NON_PERSISTENT), "Non-Persistent",
-        "This mode indicates that the Event Hub server does not have to persist the message to a reliable storage mechanism before the FlowFile is routed to 'success'. "
-            + "This delivery mode may offer higher throughput but may result in message loss if the server crashes or is restarted.");
-
     static final PropertyDescriptor EVENT_HUB_NAME = new PropertyDescriptor.Builder()
-        .name("Event Hub Name")
-        .description("The name of the Azure Event Hub to send to")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .required(true)
-        .build();
+            .name("Event Hub Name")
+            .description("The name of the Azure Event Hub to send to")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .required(true)
+            .build();
     static final PropertyDescriptor NAMESPACE = new PropertyDescriptor.Builder()
-        .name("Event Hub Namespace")
-        .description("The Azure Namespace that the Event Hub is assigned to. This is generally equal to <Event Hub Name>-ns")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .expressionLanguageSupported(false)
-        .required(true)
-        .build();
+            .name("Event Hub Namespace")
+            .description("The Azure Namespace that the Event Hub is assigned to. This is generally equal to <Event Hub Name>-ns")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .expressionLanguageSupported(false)
+            .required(true)
+            .build();
     static final PropertyDescriptor ACCESS_POLICY = new PropertyDescriptor.Builder()
-        .name("Shared Access Policy Name")
-        .description("The name of the Event Hub Shared Access Policy. This Policy must have Send permissions.")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .expressionLanguageSupported(false)
-        .required(true)
-        .build();
+            .name("Shared Access Policy Name")
+            .description("The name of the Event Hub Shared Access Policy. This Policy must have Send permissions.")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .expressionLanguageSupported(false)
+            .required(true)
+            .build();
     static final PropertyDescriptor POLICY_PRIMARY_KEY = new PropertyDescriptor.Builder()
-        .name("Shared Access Policy Primary Key")
-        .description("The primary key of the Event Hub Shared Access Policy")
-        .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
-        .expressionLanguageSupported(false)
-        .sensitive(true)
-        .required(true)
-        .build();
+            .name("Shared Access Policy Primary Key")
+            .description("The primary key of the Event Hub Shared Access Policy")
+            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
+            .expressionLanguageSupported(false)
+            .sensitive(true)
+            .required(true)
+            .build();
 
     static final Relationship REL_SUCCESS = new Relationship.Builder()
-        .name("success")
-        .description("Any FlowFile that is successfully sent to the Azure Event Hub will be transferred to this Relationship.")
-        .build();
+            .name("success")
+            .description("Any FlowFile that is successfully sent to the Azure Event Hub will be transferred to this Relationship.")
+            .build();
     static final Relationship REL_FAILURE = new Relationship.Builder()
-        .name("failure")
-        .description("Any FlowFile that could not be sent to the Azure Event Hub will be transferred to this Relationship.")
-        .build();
-
-    private volatile BlockingQueue<EventHubSender> senderQueue = new LinkedBlockingQueue<>();
-
-
+            .name("failure")
+            .description("Any FlowFile that could not be sent to the Azure Event Hub will be transferred to this Relationship.")
+            .build();
+
+    private volatile BlockingQueue<EventHubClient> senderQueue = new LinkedBlockingQueue<>();
+
+    private final static List<PropertyDescriptor> propertyDescriptors;
+    private final static Set<Relationship> relationships;
+
+    /*
+    * Will ensure that the list of property descriptors is build only once.
+    * Will also create a Set of relationships
+    */
+    static {
+        List<PropertyDescriptor> _propertyDescriptors = new ArrayList<>();
+        _propertyDescriptors.add(EVENT_HUB_NAME);
+        _propertyDescriptors.add(NAMESPACE);
+        _propertyDescriptors.add(ACCESS_POLICY);
+        _propertyDescriptors.add(POLICY_PRIMARY_KEY);
+        propertyDescriptors = Collections.unmodifiableList(_propertyDescriptors);
+
+        Set<Relationship> _relationships = new HashSet<>();
+        _relationships.add(REL_SUCCESS);
+        _relationships.add(REL_FAILURE);
+        relationships = Collections.unmodifiableSet(_relationships);
+    }
     @Override
     public Set<Relationship> getRelationships() {
-        final Set<Relationship> relationships = new HashSet<>();
-        relationships.add(REL_SUCCESS);
-        relationships.add(REL_FAILURE);
         return relationships;
     }
 
     @Override
-    protected List<PropertyDescriptor> getSupportedPropertyDescriptors() {
-        final List<PropertyDescriptor> properties = new ArrayList<>(super.getSupportedPropertyDescriptors());
-        properties.add(EVENT_HUB_NAME);
-        properties.add(NAMESPACE);
-        properties.add(ACCESS_POLICY);
-        properties.add(POLICY_PRIMARY_KEY);
-        return properties;
+    public final List<PropertyDescriptor> getSupportedPropertyDescriptors() {
+        return propertyDescriptors;
     }
 
-
     @OnScheduled
-    public final void setupClient(final ProcessContext context) throws EventHubException {
+    public final void setupClient(final ProcessContext context) throws ProcessException{
         final String policyName = context.getProperty(ACCESS_POLICY).getValue();
         final String policyKey = context.getProperty(POLICY_PRIMARY_KEY).getValue();
         final String namespace = context.getProperty(NAMESPACE).getValue();
         final String eventHubName = context.getProperty(EVENT_HUB_NAME).getValue();
 
-        final EventHubClient client = EventHubClient.create(policyName, policyKey, namespace, eventHubName);
 
         final int numThreads = context.getMaxConcurrentTasks();
         senderQueue = new LinkedBlockingQueue<>(numThreads);
         for (int i = 0; i < numThreads; i++) {
-            final EventHubSender sender = client.createPartitionSender(null);
-            senderQueue.offer(sender);
+            final EventHubClient client = createEventHubClient(namespace, eventHubName, policyName, policyKey);
+            if(null != client) {
+                senderQueue.offer(client);
+            }
         }
     }
 
     @OnStopped
     public void tearDown() {
-        EventHubSender sender;
+        EventHubClient sender;
         while ((sender = senderQueue.poll()) != null) {
             sender.close();
         }
@@ -160,20 +161,13 @@ public class PutAzureEventHub extends AbstractProcessor {
         }
 
         final StopWatch stopWatch = new StopWatch(true);
-        final EventHubSender sender = senderQueue.poll();
-        try {
             final byte[] buffer = new byte[(int) flowFile.getSize()];
-            session.read(flowFile, new InputStreamCallback() {
-                @Override
-                public void process(final InputStream in) throws IOException {
-                    StreamUtils.fillBuffer(in, buffer);
-                }
-            });
+            session.read(flowFile, in -> StreamUtils.fillBuffer(in, buffer));
 
             try {
-                sender.send(buffer);
-            } catch (final EventHubException ehe) {
-                getLogger().error("Failed to send {} to EventHub due to {}; routing to failure", new Object[] { flowFile, ehe }, ehe);
+                sendMessage(buffer);
+            } catch (final ProcessException processException) {
+                getLogger().error("Failed to send {} to EventHub due to {}; routing to failure", new Object[]{flowFile, processException}, processException);
                 session.transfer(session.penalize(flowFile), REL_FAILURE);
                 return;
             }
@@ -182,8 +176,35 @@ public class PutAzureEventHub extends AbstractProcessor {
             final String eventHubName = context.getProperty(EVENT_HUB_NAME).getValue();
             session.getProvenanceReporter().send(flowFile, "amqps://" + namespace + ".servicebus.windows.net" + "/" + eventHubName, stopWatch.getElapsed(TimeUnit.MILLISECONDS));
             session.transfer(flowFile, REL_SUCCESS);
-        } finally {
-            senderQueue.offer(sender);
+
+    }
+
+    protected EventHubClient createEventHubClient(final String namespace, final String eventHubName, final String policyName, final String policyKey) throws ProcessException{
+
+        try {
+            return EventHubClient.createFromConnectionString(getConnectionString(namespace, eventHubName, policyName, policyKey)).get();
+        } catch (InterruptedException | ExecutionException | IOException | ServiceBusException | IllegalConnectionStringFormatException e) {
+            getLogger().error("Failed to create EventHubClient due to {}", e);
+            throw new ProcessException(e);
+        }
+    }
+    protected String getConnectionString(final String namespace, final String eventHubName, final String policyName, final String policyKey){
+        return new ConnectionStringBuilder(namespace, eventHubName, policyName, policyKey).toString();
+    }
+    protected void sendMessage(final byte[] buffer) throws ProcessException {
+
+        final EventHubClient sender = senderQueue.poll();
+        if(null != sender) {
+            try {
+                sender.sendSync(new EventData(buffer));
+            } catch (final ServiceBusException sbe) {
+                throw new ProcessException("Caught exception trying to send message to eventbus", sbe);
+            } finally {
+                senderQueue.offer(sender);
+            }
+        }else{
+            throw new ProcessException("No EventHubClients are configured for sending");
         }
+
     }
 }

http://git-wip-us.apache.org/repos/asf/nifi/blob/317918a9/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/test/org/apache/nifi/processors/azure/eventhub/GetAzureEventHubTest.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/test/org/apache/nifi/processors/azure/eventhub/GetAzureEventHubTest.java b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/test/org/apache/nifi/processors/azure/eventhub/GetAzureEventHubTest.java
new file mode 100644
index 0000000..81bbf92
--- /dev/null
+++ b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/test/org/apache/nifi/processors/azure/eventhub/GetAzureEventHubTest.java
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.processors.azure.eventhub;
+
+import com.microsoft.azure.eventhubs.EventData;
+import com.microsoft.azure.eventhubs.PartitionReceiver;
+import com.microsoft.azure.servicebus.ServiceBusException;
+import org.apache.nifi.processor.ProcessContext;
+import org.apache.nifi.processor.exception.ProcessException;
+import org.apache.nifi.util.TestRunner;
+import org.apache.nifi.util.TestRunners;
+import org.junit.Before;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import java.io.IOException;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
+import java.util.LinkedList;
+import java.util.concurrent.ExecutionException;
+
+
+public class GetAzureEventHubTest {
+
+    private static final String namespaceName = "nifi-azure-hub";
+    private static final String eventHubName = "get-test";
+    private static final String sasKeyName = "bogus-policy";
+    private static final String sasKey = "9rHmHqxoOVWOb8wS09dvqXYxnNiLqxNMCbmt6qMaQyU!";
+
+
+    private TestRunner testRunner;
+    private MockGetAzureEventHub processor;
+
+    @Before
+    public void setUp() throws Exception {
+        processor = new MockGetAzureEventHub();
+        testRunner = TestRunners.newTestRunner(processor);
+    }
+
+    @Test
+    public void testProcessorConfigValidity() {
+        testRunner.setProperty(GetAzureEventHub.EVENT_HUB_NAME,eventHubName);
+        testRunner.assertNotValid();
+        testRunner.setProperty(GetAzureEventHub.NAMESPACE,namespaceName);
+        testRunner.assertNotValid();
+        testRunner.setProperty(GetAzureEventHub.ACCESS_POLICY,sasKeyName);
+        testRunner.assertNotValid();
+        testRunner.setProperty(GetAzureEventHub.POLICY_PRIMARY_KEY,sasKey);
+        testRunner.assertNotValid();
+        testRunner.setProperty(GetAzureEventHub.NUM_PARTITIONS,"4");
+        testRunner.assertValid();
+    }
+    @Test
+    public void verifyRelationships(){
+
+        assert(1 == processor.getRelationships().size());
+
+    }
+    @Test
+    public void testNoPartitions(){
+        MockGetAzureEventHubNoPartitions mockProcessor = new MockGetAzureEventHubNoPartitions();
+        testRunner = TestRunners.newTestRunner(mockProcessor);
+        setUpStandardTestConfig();
+        testRunner.run(1, true);
+        testRunner.assertAllFlowFilesTransferred(GetAzureEventHub.REL_SUCCESS, 0);
+        testRunner.clearTransferState();
+    }
+    @Test
+    public void testNullRecieve(){
+        setUpStandardTestConfig();
+        processor.nullReceive = true;
+        testRunner.run(1, true);
+        testRunner.assertAllFlowFilesTransferred(GetAzureEventHub.REL_SUCCESS, 0);
+        testRunner.clearTransferState();
+    }
+    @Test(expected = AssertionError.class)
+    public void testThrowGetReceiver(){
+        setUpStandardTestConfig();
+        processor.getReceiverThrow = true;
+        testRunner.run(1, true);
+        testRunner.assertAllFlowFilesTransferred(GetAzureEventHub.REL_SUCCESS, 0);
+        testRunner.clearTransferState();
+    }
+    @Test
+    public void testNormalFlow() throws Exception {
+
+        setUpStandardTestConfig();
+        testRunner.run(1, true);
+        testRunner.assertAllFlowFilesTransferred(GetAzureEventHub.REL_SUCCESS, 10);
+        testRunner.clearTransferState();
+    }
+
+    /**
+     * Provides a stubbed processor instance for testing
+     */
+    public static class MockGetAzureEventHub extends GetAzureEventHub{
+
+        boolean nullReceive = false;
+        boolean getReceiverThrow = false;
+
+        @Override
+        protected void setupReceiver(final String connectionString) throws ProcessException{
+            //do nothing
+        }
+        @Override
+        protected PartitionReceiver getReceiver(final ProcessContext context, final String partitionId) throws IOException, ServiceBusException, ExecutionException, InterruptedException {
+            if(getReceiverThrow){
+                throw new IOException("Could not create receiver");
+            }
+            return null;
+        }
+
+        @Override
+        protected Iterable<EventData> receiveEvents(final ProcessContext context, final String partitionId) throws ProcessException{
+            if(nullReceive){
+                return null;
+            }
+            if(getReceiverThrow){
+                throw new ProcessException("Could not create receiver");
+            }
+            final LinkedList<EventData> receivedEvents = new LinkedList<>();
+            for(int i = 0; i < 10; i++){
+                final EventData eventData = new EventData(String.format("test event number: %d",i).getBytes());
+                Whitebox.setInternalState(eventData,"isReceivedEvent",true);
+                Whitebox.setInternalState(eventData, "partitionKey","0");
+                Whitebox.setInternalState(eventData, "offset", "100");
+                Whitebox.setInternalState(eventData, "sequenceNumber",13L);
+                Whitebox.setInternalState(eventData, "enqueuedTime",Instant.now().minus(100L, ChronoUnit.SECONDS));
+                receivedEvents.add(eventData);
+            }
+
+            return receivedEvents;
+
+        }
+    }
+
+    public static class MockGetAzureEventHubNoPartitions extends GetAzureEventHub{
+
+
+        @Override
+        protected void setupReceiver(final String connectionString) throws ProcessException{
+            //do nothing
+        }
+
+        @Override
+        public void onScheduled(final ProcessContext context) throws ProcessException {
+
+        }
+    }
+
+
+
+    private void setUpStandardTestConfig() {
+        testRunner.setProperty(GetAzureEventHub.EVENT_HUB_NAME,eventHubName);
+        testRunner.setProperty(GetAzureEventHub.NAMESPACE,namespaceName);
+        testRunner.setProperty(GetAzureEventHub.ACCESS_POLICY,sasKeyName);
+        testRunner.setProperty(GetAzureEventHub.POLICY_PRIMARY_KEY,sasKey);
+        testRunner.setProperty(GetAzureEventHub.NUM_PARTITIONS,"4");
+        testRunner.assertValid();
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/317918a9/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/test/org/apache/nifi/processors/azure/eventhub/PutAzureEventHubTest.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/test/org/apache/nifi/processors/azure/eventhub/PutAzureEventHubTest.java b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/test/org/apache/nifi/processors/azure/eventhub/PutAzureEventHubTest.java
new file mode 100644
index 0000000..7568619
--- /dev/null
+++ b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/src/test/org/apache/nifi/processors/azure/eventhub/PutAzureEventHubTest.java
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.processors.azure.eventhub;
+
+import com.microsoft.azure.eventhubs.EventHubClient;
+import org.apache.nifi.processor.exception.ProcessException;
+import org.apache.nifi.util.TestRunner;
+import org.apache.nifi.util.TestRunners;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PutAzureEventHubTest {
+    private static final String namespaceName = "nifi-azure-hub";
+    private static final String eventHubName = "get-test";
+    private static final String sasKeyName = "bogus-policy";
+    private static final String sasKey = "9rHmHqxoOVWOb8wS09dvqXYxnNiLqxNMCbmt6qMaQyU!";
+
+
+    private TestRunner testRunner;
+    private PutAzureEventHubTest.MockPutAzureEventHub processor;
+
+    @Before
+    public void setUp() throws Exception {
+        processor = new PutAzureEventHubTest.MockPutAzureEventHub();
+        testRunner = TestRunners.newTestRunner(processor);
+    }
+    @Test
+    public void testProcessorConfigValidity() {
+        testRunner.setProperty(PutAzureEventHub.EVENT_HUB_NAME,eventHubName);
+        testRunner.assertNotValid();
+        testRunner.setProperty(PutAzureEventHub.NAMESPACE,namespaceName);
+        testRunner.assertNotValid();
+        testRunner.setProperty(PutAzureEventHub.ACCESS_POLICY,sasKeyName);
+        testRunner.assertNotValid();
+        testRunner.setProperty(PutAzureEventHub.POLICY_PRIMARY_KEY,sasKey);
+        testRunner.assertValid();
+    }
+    @Test
+    public void verifyRelationships(){
+
+        assert(2 == processor.getRelationships().size());
+
+    }
+    @Test
+    public void testNoFlow() {
+
+        setUpStandardTestConfig();
+        testRunner.run(1, true);
+        testRunner.assertAllFlowFilesTransferred(PutAzureEventHub.REL_SUCCESS, 0);
+        testRunner.clearTransferState();
+    }
+    @Test
+    public void testNormalFlow(){
+
+        setUpStandardTestConfig();
+        String flowFileContents = "TEST MESSAGE";
+        testRunner.enqueue(flowFileContents);
+        testRunner.run(1, true);
+        assert(flowFileContents.contentEquals(new String(processor.getReceivedBuffer())));
+        testRunner.assertAllFlowFilesTransferred(PutAzureEventHub.REL_SUCCESS, 1);
+        testRunner.clearTransferState();
+    }
+    @Test
+    public void testSendMessageThrows() {
+
+        PutAzureEventHubTest.OnSendThrowingMockPutAzureEventHub throwingProcessor = new PutAzureEventHubTest.OnSendThrowingMockPutAzureEventHub();
+        testRunner = TestRunners.newTestRunner(throwingProcessor);
+        setUpStandardTestConfig();
+        String flowFileContents = "TEST MESSAGE";
+        testRunner.enqueue(flowFileContents);
+        testRunner.run(1, true);
+        testRunner.assertAllFlowFilesTransferred(PutAzureEventHub.REL_FAILURE);
+        testRunner.clearTransferState();
+    }
+
+    @Test(expected = AssertionError.class)
+    public void testBadConnectionString() {
+
+        PutAzureEventHubTest.BogusConnectionStringMockPutAzureEventHub badConnectionStringProcessor = new PutAzureEventHubTest.BogusConnectionStringMockPutAzureEventHub();
+        testRunner = TestRunners.newTestRunner(badConnectionStringProcessor);
+        setUpStandardTestConfig();
+        testRunner.run(1, true);
+    }
+
+    private static class MockPutAzureEventHub extends PutAzureEventHub{
+
+        byte[] receivedBuffer = null;
+        byte[] getReceivedBuffer(){return receivedBuffer;}
+
+        @Override
+        protected EventHubClient createEventHubClient(final String namespace, final String eventHubName, final String policyName, final String policyKey) throws ProcessException {
+            return null;
+        }
+
+        @Override
+        protected void sendMessage(final byte[] buffer) throws ProcessException {
+            receivedBuffer = buffer;
+        }
+    }
+    private static class OnSendThrowingMockPutAzureEventHub extends PutAzureEventHub{
+        @Override
+        protected EventHubClient createEventHubClient(final String namespace, final String eventHubName, final String policyName, final String policyKey) throws ProcessException {
+            return null;
+        }
+    }
+    private static class BogusConnectionStringMockPutAzureEventHub extends PutAzureEventHub{
+
+        @Override
+        protected String getConnectionString(final String namespace, final String eventHubName, final String policyName, final String policyKey){
+            return "Bogus Connection String";
+        }
+    }
+    private void setUpStandardTestConfig() {
+        testRunner.setProperty(PutAzureEventHub.EVENT_HUB_NAME,eventHubName);
+        testRunner.setProperty(PutAzureEventHub.NAMESPACE,namespaceName);
+        testRunner.setProperty(PutAzureEventHub.ACCESS_POLICY,sasKeyName);
+        testRunner.setProperty(PutAzureEventHub.POLICY_PRIMARY_KEY,sasKey);
+        testRunner.assertValid();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/317918a9/nifi-nar-bundles/nifi-azure-bundle/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/pom.xml b/nifi-nar-bundles/nifi-azure-bundle/pom.xml
index 5d2b55a..1b7b95c 100644
--- a/nifi-nar-bundles/nifi-azure-bundle/pom.xml
+++ b/nifi-nar-bundles/nifi-azure-bundle/pom.xml
@@ -22,9 +22,7 @@
         <version>1.0.0-SNAPSHOT</version>
     </parent>
 
-    <groupId>org.apache.nifi</groupId>
     <artifactId>nifi-azure-bundle</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <modules>


[2/3] nifi git commit: Updating NOTICE files to have the correct licensing for the updated Event Hub client and it's dependencies. Also cleaned up pom dependency that is no longer needed.

Posted by ma...@apache.org.
Updating NOTICE files to have the correct licensing for the updated Event Hub client and it's dependencies. Also cleaned up pom dependency that is no longer needed.


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

Branch: refs/heads/master
Commit: e88c0d2e7081275197e52785fb51759d8a87735b
Parents: 317918a
Author: Andrew Psaltis <ps...@gmail.com>
Authored: Mon Jul 11 14:15:43 2016 -0400
Committer: Mark Payne <ma...@hotmail.com>
Committed: Wed Jul 13 10:25:02 2016 -0400

----------------------------------------------------------------------
 nifi-assembly/NOTICE                            | 21 +++++++++--
 .../src/main/resources/META-INF/NOTICE          | 39 +++++++-------------
 .../nifi-azure-processors/pom.xml               |  4 --
 3 files changed, 31 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/e88c0d2e/nifi-assembly/NOTICE
----------------------------------------------------------------------
diff --git a/nifi-assembly/NOTICE b/nifi-assembly/NOTICE
index 0c2a4a5..2c03d4c 100644
--- a/nifi-assembly/NOTICE
+++ b/nifi-assembly/NOTICE
@@ -786,11 +786,7 @@ The following binary components are provided under the Apache Software License v
         is a distributed tracing system that is Apache 2.0 Licensed.
         Copyright 2012 Twitter, Inc.
 
-    (ASLv2) Apache Qpid AMQP 1.0 Client
-      The following NOTICE information applies:
-        Copyright 2006-2015 The Apache Software Foundation
 
-    (ASLv2) EventHubs Client (com.microsoft.eventhubs.client:eventhubs-client:0.9.1 - https://github.com/hdinsight/eventhubs-client/)
 
     (ASLv2) Groovy (org.codehaus.groovy:groovy:jar:2.4.5 - http://www.groovy-lang.org)
       The following NOTICE information applies:
@@ -949,3 +945,20 @@ SIL OFL 1.1
 The following binary components are provided under the SIL Open Font License 1.1
   (SIL OFL 1.1) FontAwesome (4.6.1 - http://fortawesome.github.io/Font-Awesome/license/)
 
+
+************************
+MIT License
+************************
+The following binary components are provided under the MIT License
+
+    (MIT) Microsoft Azure IoT Device Libraries (com.microsoft.azure:azure-eventhubs:0.7.1 -- https://github.com/Azure/azure-event-hubs/)
+        This product includes software developed by Apache
+            Apache Qpid Proton 0.13.0
+            (Apache 2.0 license)
+                The following NOTICE information applies:
+                Copyright 2006-2015 The Apache Software Foundation
+
+        The product includes software developed by The Legion of the Bouncy Castle Inc. License (https://www.bouncycastle.org/licence.html)
+            (Bouncy Castle) Crytography library BCPKIX  (org.bouncycastle:bcpkix-jdk15on:1.47 -- https://www.bouncycastle.org/java.html)
+                The following NOTICE information applies:
+                Copyright (c) 2000 - 2016 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/e88c0d2e/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/NOTICE b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/NOTICE
index 2b43679..b8ebc67 100644
--- a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/NOTICE
+++ b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-nar/src/main/resources/META-INF/NOTICE
@@ -4,31 +4,20 @@ Copyright 2015-2016 The Apache Software Foundation
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
 
-******************
-Apache Software License v2
-******************
-
-The following binary components are provided under the Apache Software License v2
-
-  (ASLv2) Apache Commons Lang
-    The following NOTICE information applies:
-      Apache Commons Lang
-      Copyright 2001-2014 The Apache Software Foundation
-
-      This product includes software from the Spring Framework,
-      under the Apache License 2.0 (see: StringUtils.containsWhitespace())
-
-  (ASLv2) Apache Qpid AMQP 1.0 Client
-    The following NOTICE information applies:
-      Copyright 2006-2015 The Apache Software Foundation
-
-  (ASLv2) EventHubs Client (com.microsoft.eventhubs.client:eventhubs-client:0.9.1 - https://github.com/hdinsight/eventhubs-client/)
-
 
 ************************
-Common Development and Distribution License 1.1
+MIT License
 ************************
-
-The following binary components are provided under the Common Development and Distribution License 1.1. See project link for details.
-
-    (CDDL 1.1) (GPL2 w/ CPE) Javax JMS Api (javax.jms:javax.jms-api:jar:2.0.1 - http://java.net/projects/jms-spec/pages/Home)
+The following binary components are provided under the MIT License
+
+    (MIT) Microsoft Azure IoT Device Libraries (com.microsoft.azure:azure-eventhubs:0.7.1 -- https://github.com/Azure/azure-event-hubs/)
+        This product includes software developed by Apache
+            Apache Qpid Proton 0.13.0
+            (Apache 2.0 license)
+                The following NOTICE information applies:
+                Copyright 2006-2015 The Apache Software Foundation
+
+        The product includes software developed by The Legion of the Bouncy Castle Inc. License (https://www.bouncycastle.org/licence.html)
+            (Bouncy Castle) Crytography library BCPKIX  (org.bouncycastle:bcpkix-jdk15on:1.47 -- https://www.bouncycastle.org/java.html)
+                The following NOTICE information applies:
+                Copyright (c) 2000 - 2016 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi/blob/e88c0d2e/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
index 8abf52f..176938b 100644
--- a/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
+++ b/nifi-nar-bundles/nifi-azure-bundle/nifi-azure-processors/pom.xml
@@ -33,10 +33,6 @@
 			<artifactId>nifi-processor-utils</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>javax.jms</groupId>
-			<artifactId>javax.jms-api</artifactId>
-		</dependency>
-		<dependency>
 			<groupId>com.microsoft.azure</groupId>
 			<artifactId>azure-eventhubs</artifactId>
 			<version>0.7.1</version>