public class DictionaryLoader
extends java.lang.Object
DictionaryLoader
is the preferred mechanism for loading
rule dictionaries for execution.
DictionaryFinder
s are added to a DictionaryLoader
instance with the addFinder
in the order in which they
will be invoked to find a dictionary.
That is, the first finder added will be the first one to attempt to find
a dictionary.
The loadDictionary
method is invoked to load a dictionary.
When a dictionary is loaded, its linked dictionary dependencies
are recorded.
Proper DictionaryFinder
implementations added with
addFinder
interact with this class to respond to dictionary
updates.
Depending on the finder implementation, updates to dictionaries are either
detected by polling a
dictionary finder or via asynchronous callback from the finder. Detection
of a dictionary update is then reflected in the dictionary dependency graph.
The reloadNeeded
method will return true for a dictionary if
it or one of the dictionaries it links to have been updated since the last
time the dictionary was loaded.Constructor and Description |
---|
DictionaryLoader() |
Modifier and Type | Method and Description |
---|---|
void |
addFinder(DictionaryFinder finder)
Add a
DictionaryFinder to the chain maintained by this
instance. |
void |
close()
Closes all the finders added to this loader.
|
void |
foundDictionary(DictionaryFQN fqn,
RuleDictionary rd,
AbstractDictionaryFinder by,
RuleDictionary from) |
void |
foundDictionary(java.lang.String path,
RuleDictionary rd,
AbstractDictionaryFinder by,
RuleDictionary from) |
DictionaryFinder |
getFinderChain()
Get the chain of
DictionaryFinder 's constructed by
this instance. |
RuleDictionary |
loadDictionary(DictionaryFQN fqn)
Load a
RuleDictionary . |
RuleDictionary |
loadDictionary(java.lang.String path)
Load a
RuleDictionary . |
boolean |
reloadNeeded(DictionaryFQN fqn)
Check whether the
RuleDictionary needs to be reloaded. |
boolean |
reloadNeeded(java.lang.String path)
Check whether the
RuleDictionary needs to be reloaded. |
void |
setReloadNeeded(DictionaryFQN fqn)
Indicates that the specified dictionary has been updated.
|
void |
setReloadNeeded(java.lang.String path)
Indicates that the specified dictionary has been updated.
|
public void addFinder(DictionaryFinder finder)
DictionaryFinder
to the chain maintained by this
instance. Finders should be added in the order they are expected to
be applied. The first finder added to the chain will be the first
finder asked to find a dictionary.
The DictionaryFinder
should be an extension of
AbstractDictionaryFinder
.finder
- The DictionaryFinder
to add.public DictionaryFinder getFinderChain()
DictionaryFinder
's constructed by
this instance.DictionaryFinder
s.public RuleDictionary loadDictionary(DictionaryFQN fqn)
RuleDictionary
.fqn
- The fully qualified name of the rule dictionary.public void foundDictionary(DictionaryFQN fqn, RuleDictionary rd, AbstractDictionaryFinder by, RuleDictionary from)
public boolean reloadNeeded(DictionaryFQN fqn)
RuleDictionary
needs to be reloaded.
This indicator is maintained for rule dictionaries loaded with the
loadDictionary
method. It will return true if the
specified dictionary or any dictionary in the set of dictionaries it
is linked to (recursively) have been updated since
it was last loaded by this DictionaryLoader
.fqn
- The fully qualified name of the rule dictionary.public void setReloadNeeded(DictionaryFQN fqn)
DictionaryFinder
implementation.fqn
- The fully qualified name of the rule dictionary.public RuleDictionary loadDictionary(java.lang.String path)
RuleDictionary
.path
- The path used to find the rule dictionary.public void foundDictionary(java.lang.String path, RuleDictionary rd, AbstractDictionaryFinder by, RuleDictionary from)
public boolean reloadNeeded(java.lang.String path)
RuleDictionary
needs to be reloaded.
This indicator is maintained for rule dictionaries loaded with the
loadDictionary
method. It will return true if the
specified dictionary or any dictionary in the set of dictionaries it
is linked to (recursively) have been updated since
it was last loaded by this DictionaryLoader
.path
- The path to used to find the rule dictionary.public void setReloadNeeded(java.lang.String path)
DictionaryFinder
implementation.path
- The path to used to find the rule dictionary.public void close()