A specialized {@code ReloadingController} implementation which manages anarbitrary number of other {@code ReloadingController} objects.
This class can be used to handle multiple simple controllers for reload operations as a single object. As a usage example consider a combined configuration containing a number of configuration sources of which some support reloading. In this scenario all {@code ReloadingController} instancesfor the reloading-enabled sources can be added to a {@code CombinedReloadingController}. Then by triggering the combined controller a reload check is performed on all child sources.
This class is a typical implementation of the composite pattern. An instance is constructed with a collection of sub {@code ReloadingController}objects. Its operations are implemented by delegating to all child controllers.
This class expects the managed controller objects to be passed to the constructor. From this list a defensive copy is created so that it cannot be changed later on. Derived classes can override the {@link #getSubControllers()} method if they need another way to handle childcontrollers (e.g. a more dynamic way). However, they are then responsible to ensure a safe access to this list in a multi-threaded environment.
@version $Id: CombinedReloadingController.java 1624601 2014-09-12 18:04:36Z oheger $
@since 2.0