Interface FileMonitor


public interface FileMonitor
Components that want to monitor the file system for changes should implement the FileMonitor interface and register that implementation in the service registry.

The properties associated with the registered service specify what resources are monitored and with what frequency. Valid service properties are listed as constants below with descriptive javadoc.

  • Field Details

    • MONITOR_FILES

      static final String MONITOR_FILES

      Service property

      The value should be a Collection, indicating what paths should be monitored. Elements of the collection will only be monitored while they do not exist, or exist as files.
      See Also:
    • MONITOR_DIRECTORIES

      static final String MONITOR_DIRECTORIES

      Service property

      The value should be a Collection, indicating what paths should be monitored. Elements of the collection will only be monitored while they do not exist, or exist as directories.
      See Also:
    • MONITOR_INTERVAL

      static final String MONITOR_INTERVAL

      Service property

      Poll/Scanning interval as a long with a time unit suffix:
      • ms - milliseconds
      • s - seconds
      • m - minutes
      • h - hours
      e.g. 2ms or 5s. This is not a compound interval (e.g. 5s2ms will not work)
      See Also:
    • MONITOR_RECURSE

      static final String MONITOR_RECURSE

      Service property

      The value of this property should be a boolean: if true, a the monitor will receive notifications for individual files in the directory tree that have changed. If false, the monitor will only receive notification for the immediate children of the specified directory.

      For example, given monitored directory A:

      • In all cases, the monitor will be notified if A/file is created, changed, or deleted.
      • When working with A/directory, if
        • monitor.recurse is true, the monitor will be notified when A/directory/file has been created, changed, or deleted.
        • monitor.recurse is false, the monitor will only be notified when A/directory is added or removed.
      See Also:
    • MONITOR_INCLUDE_SELF

      static final String MONITOR_INCLUDE_SELF

      Service property

      The value of this property should be a boolean: If true, the monitor will additionally notify for the creation/deletion of any directories being monitored. If false, the monitor will report only on any files monitored, and the content of any monitored directories.

      For example, given monitored directory A:

      • In all cases, the monitor will be notified if A/file is created, changed, or deleted.
      • When working with A, if
        • monitor.includeself is true, the monitor will be notified when A has been created, changed, or deleted.
        • monitor.includeself is false, the monitor will not be notified if A is created, changed, or deleted.
      See Also:
    • MONITOR_FILTER

      static final String MONITOR_FILTER

      Service property

      The value associated with this property is a collection, where each string is either a regex match of names, or a simple string: "files" for only watching files, and "directories" for only monitoring directories.

      This applies only to monitoring directories. Given monitored directory A:

      • "\\.xml" will monitor A/*.xml,
      • "directories" will only look for subdirectories of A
      • "files" will only look for files contained in A
      See Also:
    • MONITOR_FILTER_DIRECTORIES_ONLY

      static final String MONITOR_FILTER_DIRECTORIES_ONLY

      Property value

      Special filter string limiting the monitor to directories only.
      See Also:
    • MONITOR_FILTER_FILES_ONLY

      static final String MONITOR_FILTER_FILES_ONLY

      Property value

      Special filter string limiting the monitor to files only
      See Also:
    • MONITOR_TYPE

      static final String MONITOR_TYPE

      Service property

      The value of this property determines how the file monitoring is to be performed. Acceptable values are as follows:
      • "timed" will monitor the files and/or directories at regular intervals
      • "external" will defer monitoring to an external agent
      ("timed" is the default setting.)
      See Also:
    • MONITOR_TYPE_TIMED

      static final String MONITOR_TYPE_TIMED

      Property value

      Monitor at regular intervals.
      See Also:
    • MONITOR_TYPE_EXTERNAL

      static final String MONITOR_TYPE_EXTERNAL

      Property value

      Defer monitoring to an external agent.
      See Also:
  • Method Details

    • onBaseline

      void onBaseline(Collection<File> baseline)
      Called with the result of a scan of specified resources. Only resources that existed at the time of the scan will be included.
      Parameters:
      baseline - Collection of files which match the specified filters that were discovered during the scan.
      See Also:
      • #MONITOR_BASELINE
    • onChange

      void onChange(Collection<File> createdFiles, Collection<File> modifiedFiles, Collection<File> deletedFiles)
      Called by the monitor service when a scheduled scan completes with changes (indicated by the presence of files in the corresponding collection).
      Parameters:
      createdFiles - A collection of files that were created since the last scan.
      modifiedFiles - A collection of files that were modified since the last scan.
      deletedFiles - A collection of files that were deleted since the last scan.