T
- the concrete type of Configuration
objects created by this builderpublic class ReloadingFileBasedConfigurationBuilder<T extends FileBasedConfiguration> extends FileBasedConfigurationBuilder<T> implements ReloadingControllerSupport
A specialized ConfigurationBuilder
implementation which can handle configurations read from a
FileHandler
and supports reloading.
This builder class exposes a ReloadingController
object controlling reload operations on the file-based
configuration produced as result object. For the FileHandler
defining the location of the configuration a
configurable ReloadingDetector
is created and associated with the controller. So changes on the source file
can be detected. When ever such a change occurs, the result object of this builder is reset. This means that the next
time getConfiguration()
is called a new Configuration
object is created which is loaded from the
modified file.
Client code interested in notifications can register a listener at this builder to receive reset events. When such an
event is received the new result object can be requested. This way client applications can be sure to work with an
up-to-date configuration. It is also possible to register a listener directly at the ReloadingController
.
This builder does not actively trigger the ReloadingController
to perform a reload check. This has to be done
by an external component, e.g. a timer.
Constructor and Description |
---|
ReloadingFileBasedConfigurationBuilder(Class<? extends T> resCls)
Creates a new instance of
ReloadingFileBasedConfigurationBuilder which produces result objects of the
specified class. |
ReloadingFileBasedConfigurationBuilder(Class<? extends T> resCls,
Map<String,Object> params)
Creates a new instance of
ReloadingFileBasedConfigurationBuilder which produces result objects of the
specified class and sets initialization parameters. |
ReloadingFileBasedConfigurationBuilder(Class<? extends T> resCls,
Map<String,Object> params,
boolean allowFailOnInit)
Creates a new instance of
ReloadingFileBasedConfigurationBuilder which produces result objects of the
specified class and sets initialization parameters and the allowFailOnInit flag. |
Modifier and Type | Method and Description |
---|---|
ReloadingFileBasedConfigurationBuilder<T> |
configure(BuilderParameters... params)
Appends the content of the specified
BuilderParameters objects to the current initialization parameters. |
protected ReloadingDetector |
createReloadingDetector(FileHandler handler,
FileBasedBuilderParametersImpl fbparams)
Creates a
ReloadingDetector which monitors the passed in FileHandler . |
ReloadingController |
getReloadingController()
Returns the
ReloadingController associated with this builder. |
protected void |
initFileHandler(FileHandler handler)
Initializes the new current
FileHandler . |
getDefaultEncoding, getFileHandler, initResultInstance, isAutoSave, save, setAutoSave, setDefaultEncoding, setParameters
addEventListener, addParameters, connectToReloadingController, copyEventListeners, copyEventListeners, createResult, createResultDeclaration, createResultInstance, fetchBeanHelper, fireBuilderEvent, getConfiguration, getParameters, getResultClass, getResultDeclaration, installEventListener, isAllowFailOnInit, removeEventListener, reset, resetParameters, resetResult
public ReloadingFileBasedConfigurationBuilder(Class<? extends T> resCls, Map<String,Object> params)
ReloadingFileBasedConfigurationBuilder
which produces result objects of the
specified class and sets initialization parameters.resCls
- the result class (must not be nullparams
- a map with initialization parametersIllegalArgumentException
- if the result class is nullpublic ReloadingFileBasedConfigurationBuilder(Class<? extends T> resCls, Map<String,Object> params, boolean allowFailOnInit)
ReloadingFileBasedConfigurationBuilder
which produces result objects of the
specified class and sets initialization parameters and the allowFailOnInit flag.resCls
- the result class (must not be nullparams
- a map with initialization parametersallowFailOnInit
- the allowFailOnInit flagIllegalArgumentException
- if the result class is nullpublic ReloadingFileBasedConfigurationBuilder(Class<? extends T> resCls)
ReloadingFileBasedConfigurationBuilder
which produces result objects of the
specified class.resCls
- the result class (must not be nullIllegalArgumentException
- if the result class is nullpublic ReloadingController getReloadingController()
ReloadingController
associated with this builder. This controller is directly created. However,
it becomes active (i.e. associated with a meaningful reloading detector) not before a result object was created.getReloadingController
in interface ReloadingControllerSupport
ReloadingController
public ReloadingFileBasedConfigurationBuilder<T> configure(BuilderParameters... params)
BuilderParameters
objects to the current initialization parameters.
Calling this method multiple times will create a union of the parameters provided. This method is overridden here to change the result type. This method is overridden here to change the result type.configure
in class FileBasedConfigurationBuilder<T extends FileBasedConfiguration>
params
- an arbitrary number of objects with builder parametersprotected ReloadingDetector createReloadingDetector(FileHandler handler, FileBasedBuilderParametersImpl fbparams) throws ConfigurationException
ReloadingDetector
which monitors the passed in FileHandler
. This method is called each time
a new result object is created with the current FileHandler
. This implementation checks whether a
ReloadingDetectorFactory
is specified in the current parameters. If this is the case, it is invoked.
Otherwise, a default factory is used to create a FileHandlerReloadingDetector
object. Note: This method is
called from a synchronized block.handler
- the current FileHandler
fbparams
- the object with parameters related to file-based buildersReloadingDetector
for this FileHandler
ConfigurationException
- if an error occursprotected void initFileHandler(FileHandler handler) throws ConfigurationException
FileHandler
. When a new result object is created, a new FileHandler
is
created, too, and associated with the result object. This new handler is passed to this method. If a location is
defined, the result object is loaded from this location. Note: This method is called from a synchronized block. This implementation also takes care that a new ReloadingDetector
for the new current
FileHandler
is created. Also, the reloading controller's reloading state has to be reset; after the creation
of a new result object changes in the underlying configuration source have to be monitored again.initFileHandler
in class FileBasedConfigurationBuilder<T extends FileBasedConfiguration>
handler
- the new current FileHandler
ConfigurationException
- if an error occursCopyright © 2001–2022 The Apache Software Foundation. All rights reserved.