public class DefaultParametersManager extends Object
A class for managing a set of DefaultParametersHandler
objects.
This class provides functionality for registering and removing DefaultParametersHandler
objects for arbitrary
parameters classes. The handlers registered at an instance can then be applied on a passed in parameters object, so
that it gets initialized with the provided default values.
Usage of this class is as follows: First the DefaultParametersHandler
objects to be supported must be
registered using one of the registerDefaultHandler()
methods. After that arbitrary parameters objects can be
passed to the initializeParameters()
method. This causes all DefaultParametersHandler
objects
supporting this parameters class to be invoked on this object.
Implementation note: This class is thread-safe.
Constructor and Description |
---|
DefaultParametersManager()
Creates a new instance of
DefaultParametersManager . |
Modifier and Type | Method and Description |
---|---|
void |
initializeParameters(BuilderParameters params)
Initializes the passed in
BuilderParameters object by applying all matching DefaultParametersHandler
objects registered at this instance. |
<T> void |
registerDefaultsHandler(Class<T> paramsClass,
DefaultParametersHandler<? super T> handler)
Registers the specified
DefaultParametersHandler object for the given parameters class. |
<T> void |
registerDefaultsHandler(Class<T> paramsClass,
DefaultParametersHandler<? super T> handler,
Class<?> startClass)
Registers the specified
DefaultParametersHandler object for the given parameters class and start class in the
inheritance hierarchy. |
void |
unregisterDefaultsHandler(DefaultParametersHandler<?> handler)
Removes the specified
DefaultParametersHandler from this instance. |
void |
unregisterDefaultsHandler(DefaultParametersHandler<?> handler,
Class<?> startClass)
Removes the specified
DefaultParametersHandler from this instance if it is in combination with the given
start class. |
public DefaultParametersManager()
DefaultParametersManager
.public <T> void registerDefaultsHandler(Class<T> paramsClass, DefaultParametersHandler<? super T> handler)
DefaultParametersHandler
object for the given parameters class. This means that this
handler object is invoked every time a parameters object of the specified class or one of its subclasses is
initialized. The handler can set arbitrary default values for the properties supported by this parameters object. If
there are multiple handlers registered supporting a specific parameters class, they are invoked in the order in which
they were registered. So handlers registered later may override the values set by handlers registered earlier.T
- the type of the parameters supported by this handlerparamsClass
- the parameters class supported by this handler (must not be null)handler
- the DefaultParametersHandler
to be registered (must not be null)IllegalArgumentException
- if a required parameter is missingpublic <T> void registerDefaultsHandler(Class<T> paramsClass, DefaultParametersHandler<? super T> handler, Class<?> startClass)
DefaultParametersHandler
object for the given parameters class and start class in the
inheritance hierarchy. This method works like registerDefaultsHandler(Class, DefaultParametersHandler)
, but
the defaults handler is only executed on parameter objects that are instances of the specified start class. Parameter
classes do not stand in a real inheritance hierarchy; however, there is a logic hierarchy defined by the methods
supported by the different parameter objects. A properties parameter object for instance supports all methods defined
for a file-based parameter object. So one can argue that
FileBasedBuilderParameters
is a
base interface of PropertiesBuilderParameters
(although, for technical reasons, this relation is not reflected in the Java classes). A
DefaultParametersHandler
object defined for a base interface can also deal with parameter objects "derived"
from this base interface (i.e. supporting a super set of the methods defined by the base interface). Now there may be
the use case that there is an implementation of DefaultParametersHandler
for a base interface (e.g.
FileBasedBuilderParameters
), but it should only process specific derived interfaces (say
PropertiesBuilderParameters
, but not
XMLBuilderParameters
). This can be
achieved by passing in PropertiesBuilderParameters
as start class. In this case,
DefaultParametersManager
ensures that the handler is only called on parameter objects having both the start
class and the actual type supported by the handler as base interfaces. The passed in start class can be null;
then the parameter class supported by the handler is used (which is the default behavior of the
registerDefaultsHandler(Class, DefaultParametersHandler)
method).T
- the type of the parameters supported by this handlerparamsClass
- the parameters class supported by this handler (must not be null)handler
- the DefaultParametersHandler
to be registered (must not be null)startClass
- an optional start class in the hierarchy of parameter objects for which this handler should be
appliedIllegalArgumentException
- if a required parameter is missingpublic void unregisterDefaultsHandler(DefaultParametersHandler<?> handler)
DefaultParametersHandler
from this instance. If this handler has been registered
multiple times for different start classes, all occurrences are removed.handler
- the DefaultParametersHandler
to be removedpublic void unregisterDefaultsHandler(DefaultParametersHandler<?> handler, Class<?> startClass)
DefaultParametersHandler
from this instance if it is in combination with the given
start class. If this handler has been registered multiple times for different start classes, only occurrences for the
given start class are removed. The startClass
parameter can be null, then all occurrences of the
handler are removed.handler
- the DefaultParametersHandler
to be removedstartClass
- the start class for which this handler is to be removedpublic void initializeParameters(BuilderParameters params)
BuilderParameters
object by applying all matching DefaultParametersHandler
objects registered at this instance. Using this method the passed in parameters object can be populated with default
values.params
- the parameters object to be initialized (may be null, then this method has no effect)Copyright © 2001–2022 The Apache Software Foundation. All rights reserved.