I don’t think this is the case, given that the concrete FTS capability is provided by an application component.
There are the following references in the main modules:
core -> provides support for enqueing entities to be processed by FTS. It defines an
FtsSender interface that is implemented by a bean in the FTS app component
global -> defines an
FtsQueue entity backed by the
SYS_FTS_QUEUE table. Here there’s a class named
FtsConfigHelper that uses reflection for loading a concrete class in the FTS app component (
com.haulmont.fts.global.FtsConfig), so this needs further investigation if one wants to completely replace the official FTS component with an alternative one…
gui -> provides FTS filtering support, again using only high level interfaces and not calling into the FTS component directly (for example it defines a
FtsFilterHelper interface, whose concrete implementation resides in the FTS component)
web -> provides an FTS field in the main window to enable a global search using FTS. The search results are handled by a window whose id is
ftsSearch, and the window itself is defined in the web module of the FTS component (specifically by two classes: a container implemented by the
SearchLauncher class, and the actual results handled by the
So in the end, apart from the explicit reference to the
FtsConfig configuration interface, there aren’t hard-coded dependencies with the FTS app component.
In theory it should be possible to swap the component with another, by adhering to the same interfaces/conventions.
But I think that a better approach could be implementing alternative beans on top of the existing interfaces provided by the official FTS component (
FtsManagerAPI). Doing so there will be no need to replace the entire FTS functionality, only the core indexer (for example the original
FtsSenderBean responsible to mange the queue will work seamlessly because it depends on the
FtsManagerAPI contract, not actual implementation).
This is my personal analysis and view, let’s see if someone from Haulmont will comment officially on this.