Peter Horvath created NIFI-4424:
-----------------------------------

             Summary: org.apache.nifi.NiFi does not allow programmatic access 
to the NiFi engine
                 Key: NIFI-4424
                 URL: https://issues.apache.org/jira/browse/NIFI-4424
             Project: Apache NiFi
          Issue Type: Improvement
          Components: Core Framework
    Affects Versions: 1.3.0
            Reporter: Peter Horvath


Class {{org.apache.nifi.NiFi}} was not designed with extensibility or 
programmatic access in mind.

This class is the entry point of the engine, however, the current 
implementation does not allow
a potential caller (e.g. an integration test harness) to bootstrap the engine 
and then shut it down properly:


The main method {{org.apache.nifi.NiFi#main}} simply logs any exception, which 
is fine
when started from the command line, however prevents programmatic usage and
detecting error conditions (Exceptions) that would be essential to 
programatically access 
it from an integration test.

The constructor {{org.apache.nifi.NiFi#NiFi}} registers an 
{{UncaughtExceptionHandler}}, 
a JVM {{Shutdown Hook}} and changes logging framework settings.

*Please change this behaviour:*

Expose *two* methods, one of which accepts the command line argument one would 
pass
to the NiFi process and another one, which allows the NiFiProperties object to 
be passed.
This method should return the {{NiFi}} object instance for further programmatic 
access.

The logic used to register {{UncaughtExceptionHandler}}, a JVM Shutdown Hook 
and 
changing logging framework settings should be extracted to a {{protected}} 
*instance*
method so that a client can override their behaviour with a NO-OP.

*Please note these changes are baby-steps towards the implementation of a 
NiFi integration test harness.*



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to