Interacting with a ControllerService
ControllerServices may be obtained by a Processor, another ControllerService, or a
ReportingTask by means of the ControllerServiceLookup or by using the
identifiesControllerService
method of the PropertyDescriptor's
Builder class. The ControllerServiceLookup can be obtained by a Processor from the
ProcessorInitializationContext that is passed to the initialize
method.
Likewise, it is obtained by a ControllerService from the
ControllerServiceInitializationContext and by a ReportingTask via the
ReportingConfiguration object passed to the initialize
method.
For most use cases, though, using the identifiesControllerService
method of a PropertyDescriptor Builder is preferred and is the least complicated method.
In order to use this method, we create a PropertyDescriptor that references a Controller
Service as such:
public static final PropertyDescriptor SSL_CONTEXT_SERVICE = new PropertyDescriptor.Builder() .name("SSL Context Service") .description("Specified the SSL Context Service that can be used to create secure connections") .required(true) .identifiesControllerService(SSLContextService.class) .build();
Using this method, the user will be prompted to supply the SSL Context Service that should be used. This is done by providing the user with a drop-down menu from which they are able to choose any of the SSLContextService configurations that have been configured, regardless of the implementation.
In order to make use of this service, the Processor can use code such as:
final SSLContextService sslContextService = context.getProperty(SSL_CONTEXT_SERVICE) .asControllerService(SSLContextService.class);
Note here that SSLContextService
is an interface that extends
ControllerService. The only implementation at this time is the
StandardSSLContextService
. However, the Processor developer need not
worry about this detail.