Package org.apache.tapestry5.ioc.services

## Interface UpdateListenerHub

- All Known Implementing Classes:
    `UpdateListenerHubImpl`

      public interface UpdateListenerHub

  Manages a set of `UpdateListener`s. Periodically (say, every request during development, or every minute or so during production), request processing is locked down so that only a single thread is active, and the active thread invokes `fireCheckForUpdates()`. Various services that are dependent on external resource files (such as classes or template files) can check to see if any file they've used has changed. If so, the service can invalidate its internal cache, or notify other services (typically via `InvalidationListener` that they should do the same. Note that this interface has moved from module tapestry-core to tapestry-ioc. It was, however, not possible to keep the same package (for backwards compatibility reasons) without causing a split package (in terms of Java 9 Modules). A weak reference to the listener is kept; this ensures that registering as a listener will not prevent a listener instance from being reclaimed by the garbage collector (this is useful as proxies created by `ObjectLocator.proxy(Class, Class)` may register as listeners, but still be ephemeral). Starting in Tapestry 5.3, this services does nothing in production mode.
  Since:
    5.1.0.0

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addUpdateListener​(UpdateListener listener)` | Adds a listener.
    `void` | `fireCheckForUpdates()` | Invoked periodically to allow services to check if underlying state has changed.

- - ### Method Detail

    - #### addUpdateListener

          void addUpdateListener​(UpdateListener listener)

      Adds a listener.

    - #### fireCheckForUpdates

          void fireCheckForUpdates()

      Invoked periodically to allow services to check if underlying state has changed. For example, a template file may have changed. Listeners will typically notify applicable listeners of their own (they usually implement `InvalidationEventHub`) when such a change occurs.