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)