[ 
https://issues.apache.org/jira/browse/NIFI-4424?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16334813#comment-16334813
 ] 

ASF GitHub Bot commented on NIFI-4424:
--------------------------------------

Github user alopresto commented on the issue:

    https://github.com/apache/nifi/pull/2251
  
    Ran `contrib-check` and all tests pass. Fired up an instance of the 
application and it performed normally. +1, merging. 


> 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
>            Priority: Major
>             Fix For: 1.6.0
>
>
> 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.
> A second class called e.g. {{org.apache.nifi.EmbeddedNiFi}} could be 
> introduced as
> a base class for this use-case, where the engine is started through the Java 
> API.
> *Please note these changes are baby-steps towards the implementation of a 
> NiFi integration test harness.*



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to