In case it helps, Matt B was nice enough to quickly put up a PR for
the API change discussed yesterday:

https://github.com/apache/nifi/pull/2658

Once this is tested and merged it make it would make it easier to
implement Charlie's approach without needing a new interface.


On Thu, Apr 26, 2018 at 12:36 PM, Charlie Meyer
<charlie.me...@civitaslearning.com> wrote:
> Hello,
>
> I'm working to see what we can share, but for a start, here is how we
> handle the delegating controller service:
>
> package com.civitaslearning.nifi.service.impl;
>
>
> import org.apache.nifi.components.PropertyDescriptor;
> import org.apache.nifi.controller.AbstractControllerService;
> import org.apache.nifi.dbcp.DBCPService;
>
> import java.util.Collections;
> import java.util.List;
> import java.util.UUID;
>
> public class DelegatingDBCPServiceImpl extends
> AbstractControllerService implements DelegatingDBCPService {
>
>   private static final List<PropertyDescriptor> properties =
> Collections.emptyList();
>
>   @Override
>   public DBCPService getDBCPService(UUID uuid) {
>     DBCPService dbcpService =
>         (DBCPService)
> getControllerServiceLookup().getControllerService(uuid.toString());
>
>     if (dbcpService == null) {
>       throw new NullPointerException("Couldn't find DBCP service with
> ID " + uuid);
>     }
>
>     return dbcpService;
>   }
>
>   @Override
>   public List<PropertyDescriptor> getSupportedPropertyDescriptors() {
>     return properties;
>   }
> }
>
>
> From there, we took existing nifi processor code such as ExecuteSQL and
> modified it to require a reference to a delegating service rather than a
> DBCP service and added another property to specify which flow file
> attribute has the id of the dbcp service that should be used, similar to:
>
> final DelegatingDBCPService delegatingDBCPService =
> context.getProperty(DELEGATING_DBCP_SERVICE).asControllerService(DelegatingDBCPService.class);
> final UUID dbcpServiceId =
> UUID.fromString(context.getProperty(DBCP_SERVICE_ATTRIBUTE).evaluateAttributeExpressions(fileToProcess).getValue());
> final DBCPService dbcpService =
> delegatingDBCPService.getDBCPService(dbcpServiceId);
>
> thanks
>
> On Thu, Apr 26, 2018 at 4:07 AM, RP <rishabprasad...@gmail.com> wrote:
>
>> Hi Charlie,
>>
>> Thanks for the reply. It seems that you already have a solution to my
>> problem. If possible, can you please share you code for the custom
>> controller service and the custom processor?
>>
>>
>>
>> -----
>> RP
>> --
>> Sent from: http://apache-nifi-developer-list.39713.n7.nabble.com/
>>

Reply via email to