Class ModifiableFileWatcher

    • Field Detail

      • STRICTLY_PROHIBITED_FILE_PERMISSION

        public static final java.util.Set<java.nio.file.attribute.PosixFilePermission> STRICTLY_PROHIBITED_FILE_PERMISSION
        The Set of PosixFilePermission not allowed if strict permissions are enforced on key files
      • options

        protected final java.nio.file.LinkOption[] options
      • file

        private final java.nio.file.Path file
      • metadata

        private final java.util.concurrent.atomic.AtomicReference<FileSnapshot> metadata
    • Constructor Detail

      • ModifiableFileWatcher

        public ModifiableFileWatcher​(java.nio.file.Path file)
      • ModifiableFileWatcher

        public ModifiableFileWatcher​(java.nio.file.Path file,
                                     java.nio.file.LinkOption... options)
    • Method Detail

      • getPath

        public final java.nio.file.Path getPath()
        Returns:
        The watched Path
      • exists

        public final boolean exists()
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • size

        public final long size()
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • lastModified

        public final java.nio.file.attribute.FileTime lastModified()
                                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • checkReloadRequired

        public boolean checkReloadRequired()
                                    throws java.io.IOException
        Returns:
        true if the watched file has probably been changed
        Throws:
        java.io.IOException - If failed to query file data
      • resetReloadAttributes

        public void resetReloadAttributes()
        Resets the state attributes used to detect changes to the initial construction values - i.e., file assumed not to exist and no known size of modify time
      • updateReloadAttributes

        public void updateReloadAttributes()
                                    throws java.io.IOException
        May be called to refresh the state attributes used to detect changes e.g., file existence, size and last-modified time once re-loading is successfully completed. If the file does not exist then the attributes are reset to an "unknown" state.
        Throws:
        java.io.IOException - If failed to access the file (if exists)
        See Also:
        resetReloadAttributes()
      • toPathResource

        public PathResource toPathResource​(java.nio.file.OpenOption... options)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • validateStrictConfigFilePermissions

        public static java.util.AbstractMap.SimpleImmutableEntry<java.lang.String,​java.lang.Object> validateStrictConfigFilePermissions​(java.nio.file.Path path,
                                                                                                                                              java.nio.file.LinkOption... options)
                                                                                                                                       throws java.io.IOException

        Checks if a path has strict permissions

        • (For Unix) The path may not have group or others write permissions

        • The path must be owned by current user.

        • (For Unix) The path may be owned by root.

        Parameters:
        path - The Path to be checked - ignored if null or does not exist
        options - The LinkOptions to use to query the file's permissions
        Returns:
        The violated permission as AbstractMap.SimpleImmutableEntry where key is a loggable message and value is the offending object - e.g., PosixFilePermission or String for owner. Return value is null if no violations detected
        Throws:
        java.io.IOException - If failed to retrieve the permissions
        See Also:
        STRICTLY_PROHIBITED_FILE_PERMISSION