The EventListener plugin for notification of start / end import events (
SOLR-938) creates an instance of EventListener before every notification. This has 2 drawbacks.
- No state is stored between successive invocations of events as it is a new object
- When writing plugins for delta imports - it is very inefficient to do a class loader lookup by reflection / instantiate an instance and call a method on the same.
Attached patch has one EventListener through the lifetime of the DIH plugin .
Also EventListener is changed to an interface rather than an abstract class for better decoupling (especially painful when the start/end eventlistener has an independent hierarchy by itself ).
By default, a no-op listener is registered to avoid boiler plate code to check if there is a start / end listener specified. Efficient JRE impls should be able to optimize the no-op for minimum overhead compared to checking the reference for null and branching out.
Specifying an onImportStart / onImportEnd overrides the default handler though.