Class BambooFiles

java.lang.Object
com.atlassian.bamboo.utils.BambooFiles

public class BambooFiles extends Object
Helper methods related to Files and Path classes.
  • Field Details

    • log

      public static final org.apache.logging.log4j.Logger log
    • IS_POSIX_FILESYSTEM

      public static final boolean IS_POSIX_FILESYSTEM
  • Constructor Details

    • BambooFiles

      public BambooFiles()
  • Method Details

    • deleteQuietly

      public static boolean deleteQuietly(Path path)
      Deletes a path quietly, returns true on success. If the path is a non-empty directory, it does not get deleted.
    • delete

      public static void delete(Path path) throws IOException
      Deletes files, including readonly files on Windows.
      Throws:
      IOException
    • deleteLogIfError

      public static void deleteLogIfError(Path path, org.apache.logging.log4j.Logger logger)
      Call delete(Path) and logs exception if happens.
    • isExecutable

      public static boolean isExecutable(Path path) throws IOException
      Throws:
      IOException
    • autoRemoved

      public static BambooFiles.AutoRemoved autoRemoved(Path path)
      Wraps the supplied Path with AutoCloseable. The directory will be deleted on AutoCloseable.close()
    • quietlyRemoved

      public static BambooFiles.QuietlyRemoved quietlyRemoved(Path path)
      Wraps the supplied Path with AutoCloseable. The directory will be quietly deleted on AutoCloseable.close()
    • createTempDirectory

      public static Path createTempDirectory(Path dir, String prefix, FileAttribute<?>... attrs) throws IOException
      See Files.createTempDirectory(Path, String, FileAttribute[]). This function will create the parent directories if they do not exist.
      Throws:
      IOException
    • setReadOnly

      public static void setReadOnly(Path path, boolean isReadOnly) throws IOException
      Sets readonly bit on Path
      Throws:
      IOException
    • setExecutable

      public static void setExecutable(Path path, boolean isExecutable) throws IOException
      Sets executable bit on Path
      Throws:
      IOException
    • setAccessibleOnlyByOwner

      public static void setAccessibleOnlyByOwner(@NotNull @NotNull Path path) throws IOException
      Removes access to Path from non-owners. Note, for NTFS it removes all ACLs except owner. So if owner is not listed at ACLs then Path will become unavailable for Bamboo.
      Throws:
      IOException
    • resolvePathUnderParent

      public static Path resolvePathUnderParent(@NotNull @NotNull Path parent, @NotNull @NotNull String child)
      Fulfills the general contract of Path.resolve(String). The returned path is always in normalized and always rooted under the parent argument. Attempts to traverse out of the parent directory will result in IllegalArgumentException being thrown.
      Parameters:
      parent - parent directory
      child - child under parent directory. Relative paths are allowed as long as the result is under the parent directory
      Returns:
      a canonical child File rooted under parent directory
    • ensureEmptyDirExists

      public static Path ensureEmptyDirExists(Path dir) throws IOException
      Removes content of the directory or creates new if it does not exist
      Parameters:
      dir - folder to be cleaned or created
      Returns:
      empty directory that refers to the same folder as the dir parameter
      Throws:
      IOException
    • applyReadOnlyPermissionsTo

      public static void applyReadOnlyPermissionsTo(boolean isPosixFilesystem, Path... canonicalFilePaths)
      Applies read only permissions to the files for the supplied file paths.
      Parameters:
      isPosixFilesystem - A boolean stipulating if the current system is using a POSIX compliant filesystem
      canonicalFilePaths - An array of canonical file paths on which to apply the read only permission.
    • applyReadOnlyPermissionsRecursively

      public static void applyReadOnlyPermissionsRecursively(boolean isPosixFilesystem, Path path)
      Applies read-only permissions recursively to the files and directories for the supplied path.
      Parameters:
      isPosixFilesystem - A boolean stipulating if the current system is using a POSIX compliant filesystem.
      path - The path on which to apply the read-only permission recursively.
    • applyReadOnlyPermissionsTo

      public static void applyReadOnlyPermissionsTo(Path... canonicalFilePaths)
    • applyReadOnlyPermissionsRecursively

      public static void applyReadOnlyPermissionsRecursively(Path path)