Re: Cross NAR Controller Service access with gradle

2018-01-10 Thread Nicholas Deane
Awesome. Thanks, Matt! I was missing the dependency on the 
nifi-standard-services-api-nar NAR. I spent some time looking things up and I 
came across the gradle nar plugin [1]

Using that plugin, my build.gradle now contains the following lines: 

  compile "org.apache.nifi:nifi-ssl-context-service-api:$nifiVersion"
  nar 'org.apache.nifi:nifi-standard-services-api-nar:1.4.0'

Now when I build my custom nar, I can see that my processor requires the 
SSLContextService from nifi-standard-services-api-nar. The 
StandardSSLContextService from the default org.apache.nifi bundle shows up as 
selectable in that property and I’m able to get the processor started up with 
the SSLContext.

[1] https://github.com/sponiro/gradle-nar-plugin

Regards,
Nicholas

On 2018-01-10, 3:25 PM, "Matt Burgess" <mattyb...@apache.org> wrote:

Nicholas,

I finally had a few cycles to iron out some bugs in the Gradle NAR
example [1], feel free to check it out as it should be in much better
shape. Once it's ready for primetime, I'd like to add it to Lazybones
[2] and/or find a home for it in nifi-maven [3] (or a new similar repo
nifi-gradle ;)

I'm going to try to apply this to an existing NAR in the NiFi codebase
that does real work with third-party dependencies and parent NARs.
Eventually I'd like to see it building equivalently and way faster
than Maven :)

Regards,
Matt

[1] https://github.com/mattyb149/nifi-gradle-nar-example
[2] https://github.com/pledbrook/lazybones
[3] https://github.com/apache/nifi-maven

On Tue, Jan 9, 2018 at 12:06 PM, Matt Burgess <mattyb...@apache.org> wrote:
> Nicholas,
>
> You shouldn't need to reference StandardSSLContextService explicitly,
> as your processor should be using the interface SSLContextService
> only.  In the Maven world, this is done by bringing in
> nifi-ssl-context-service-api as a "provided" dependency (not compile),
> and adding a dependency on your NAR module to the
> nifi-standard-services-api-nar NAR. This is handled by a custom
> NarMojo for doing NiFi ARchive (NAR) packaging [1].
>
> In the Gradle world we'll need a task to do the same thing, I believe
> it is mostly a matter of getting the separate subprojects set up to
> mimic the Maven modules, and a task (whether published as a plugin
> like the NarMojo plugin is for Maven or not) to update the NAR
> manifest and such.  I have begun work on this [2], please feel free to
> take a look and let me know what you think. At present I believe I am
> missing a directive to copy all the processors' subproject
> dependencies into the NAR output artifact, I think I know how to fix
> it (i.e. from project(':processors').tasks['jar'].archivePath) but
> haven't had time to try it out.
>
> Please let me know if you'd like to work on the Gradle stuff together,
> I would be happy to collaborate :)
>
> Regards,
> Matt
>
> [1] https://github.com/apache/nifi-maven
> [2] https://github.com/mattyb149/nifi-gradle-nar-example
>
> On Tue, Jan 9, 2018 at 11:47 AM, Nicholas Deane <nde...@vitalimages.com> 
wrote:
>> Hi,
>>
>> I’m working on a custom processor and want to utilize NiFi’s 
SSLContextService.
>>
>> In my build.gradle dependencies section, I’ve included:
>>   compile "org.apache.nifi:nifi-ssl-context-service-api:$nifiVersion"
>>
>> and in my code I’ve created the property descriptor with 
.identifiesControllerService(SSLContextService.class)
>>
>> When I’m configuring the processor, I noticed that the property on the 
processor says that it “Requires Controller Service: SSLContextService from 
my-custom-nar”. When I create a StandardSSLContextService from the default 
org.apache.nifi bundle, it doesn’t show up in the processor’s list (as expected 
based on that info message).
>>
>> I tried bringing in “nifi-ssl-context-service” and now I have two 
versions of StandardSSLContextService in the controller service list (one from 
the org.apache.nifi bundle and the other from my-custom-nar bundle). Is this 
how I should be doing something like this or is there a better way for me to 
use Controller Services across bundles and avoid having duplicates in that list?
>>
>>
>> Notice - Confidential Information The information in this communication 
and any attachments is strictly confidential and intended only for the use of 
the individual(s) or entity(ies) named above. If you are not the intended 
recipient, any dissemination, distribution, copying or other use of the 
information contained in this communication and/or any attachment is strictly 
prohibited. If you have received this communication in error, please first 
notify the sender immediately and then delete this communication from all data 
storage devices and destroy all hard copies.




Cross NAR Controller Service access with gradle

2018-01-09 Thread Nicholas Deane
Hi,

I’m working on a custom processor and want to utilize NiFi’s SSLContextService.

In my build.gradle dependencies section, I’ve included:
  compile "org.apache.nifi:nifi-ssl-context-service-api:$nifiVersion"

and in my code I’ve created the property descriptor with 
.identifiesControllerService(SSLContextService.class)

When I’m configuring the processor, I noticed that the property on the 
processor says that it “Requires Controller Service: SSLContextService from 
my-custom-nar”. When I create a StandardSSLContextService from the default 
org.apache.nifi bundle, it doesn’t show up in the processor’s list (as expected 
based on that info message).

I tried bringing in “nifi-ssl-context-service” and now I have two versions of 
StandardSSLContextService in the controller service list (one from the 
org.apache.nifi bundle and the other from my-custom-nar bundle). Is this how I 
should be doing something like this or is there a better way for me to use 
Controller Services across bundles and avoid having duplicates in that list?


Notice - Confidential Information The information in this communication and any 
attachments is strictly confidential and intended only for the use of the 
individual(s) or entity(ies) named above. If you are not the intended 
recipient, any dissemination, distribution, copying or other use of the 
information contained in this communication and/or any attachment is strictly 
prohibited. If you have received this communication in error, please first 
notify the sender immediately and then delete this communication from all data 
storage devices and destroy all hard copies.