[ 
https://issues.apache.org/jira/browse/NIFI-4424?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Peter Horvath updated NIFI-4424:
--------------------------------
    Description: 
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.*

  was:
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.*


> 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.
> 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
(v6.4.14#64029)

Reply via email to