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 <[email protected]> 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/
>