Class URLChangeTracker


  • public class URLChangeTracker
    extends Object
    Given a (growing) set of URLs, can periodically check to see if any of the underlying resources has changed. This class is capable of using either millisecond-level granularity or second-level granularity. Millisecond-level granularity is used by default. Second-level granularity is provided for compatibility with browsers vis-a-vis resource caching -- that's how granular they get with their "If-Modified-Since", "Last-Modified" and "Expires" headers.
    • Constructor Detail

      • URLChangeTracker

        public URLChangeTracker()
        Creates a tracker using the default (does nothing) URL converter, with default (millisecond) granularity and folder tracking disabled.
        Since:
        5.2.1
      • URLChangeTracker

        public URLChangeTracker​(ClasspathURLConverter classpathURLConverter)
        Creates a new URL change tracker with millisecond-level granularity and folder checking enabled.
        Parameters:
        classpathURLConverter - used to convert URLs from one protocol to another
      • URLChangeTracker

        public URLChangeTracker​(ClasspathURLConverter classpathURLConverter,
                                boolean granularitySeconds)
        Creates a new URL change tracker, using either millisecond-level granularity or second-level granularity and folder checking enabled.
        Parameters:
        classpathURLConverter - used to convert URLs from one protocol to another
        granularitySeconds - whether or not to use second granularity (as opposed to millisecond granularity)
      • URLChangeTracker

        public URLChangeTracker​(ClasspathURLConverter classpathURLConverter,
                                boolean granularitySeconds,
                                boolean trackFolderChanges)
        Creates a new URL change tracker, using either millisecond-level granularity or second-level granularity.
        Parameters:
        classpathURLConverter - used to convert URLs from one protocol to another
        granularitySeconds - whether or not to use second granularity (as opposed to millisecond granularity)
        trackFolderChanges - if true, then adding a file URL will also track the folder containing the file (this is useful when concerned about additions to a folder)
        Since:
        5.2.1
    • Method Detail

      • add

        public long add​(URL url)
        Stores a new URL into the tracker, or returns the previous time stamp for a previously added URL. Filters out all non-file URLs.
        Parameters:
        url - of the resource to add, or null if not known
        Returns:
        the current timestamp for the URL (possibly rounded off for granularity reasons), or 0 if the URL is null
      • clear

        public void clear()
        Clears all URL and timestamp data stored in the tracker.
      • containsChanges

        public boolean containsChanges()
        Re-acquires the last updated timestamp for each URL and returns true if any timestamp has changed.
      • forceChange

        public void forceChange()
        Needed for testing; changes file timestamps so that a change will be detected by containsChanges().