Package org.apache.storm.daemon.supervisor

# Class AdvancedFSOps

java.lang.Object
org.apache.storm.daemon.supervisor.AdvancedFSOps

All Implemented Interfaces:
  `IAdvancedFSOps`

public class AdvancedFSOps extends Object implements IAdvancedFSOps

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final boolean`
  `symlinksDisabled`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AdvancedFSOps(Map<String,Object> conf)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `copyDirectory(File fromDir, File toDir)`
  Copy a directory.
  `void`
  `createSymlink(File link, File target)`
  Create a symbolic link pointing at target.
  `void`
  `deleteIfExists(File path)`
  Delete a file or a directory and all of the children.
  `void`
  `deleteIfExists(File path, String user, String logPrefix)`
  Delete a file or a directory and all of the children.
  `boolean`
  `doRequiredTopoFilesExist(Map<String,Object> conf, String topologyId)`
  Sanity check if everything the topology needs is there for it to run.
  `void`
  `dump(File location, String data)`
  Dump a string to a file.
  `boolean`
  `fileExists(File path)`
  Check if a file exists or not.
  `boolean`
  `fileExists(Path path)`
  Check if a file exists or not.
  `void`
  `forceMkdir(File path)`
  Makes a directory, including any necessary but nonexistent parent directories.
  `void`
  `forceMkdir(Path path)`
  Makes a directory, including any necessary but nonexistent parent directories.
  `OutputStream`
  `getOutputStream(File file)`
  Get an output stream to write to a given file.
  `Writer`
  `getWriter(File file)`
  Get a writer for the given location.
  `static AdvancedFSOps`
  `make(Map<String,Object> conf)`
  Factory to create a new AdvancedFSOps.
  `void`
  `moveDirectoryPreferAtomic(File fromDir, File toDir)`
  Move fromDir to toDir, and try to make it an atomic move if possible.
  `void`
  `moveFile(File fromFile, File toFile)`
  Moves a file to a given destination.
  `DirectoryStream<Path>`
  `newDirectoryStream(Path dir)`
  List the contents of a directory.
  `DirectoryStream<Path>`
  `newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter)`
  List the contents of a directory.
  `void`
  `restrictDirectoryPermissions(File dir)`
  Set directory permissions to (OWNER)RWX (GROUP)R-X (OTHER)--- On some systems that do not support this, it may become a noop.
  `void`
  `setupBlobPermissions(File path, String user)`
  Setup permissions properly for an internal blob store path.
  `void`
  `setupStormCodeDir(String user, File path)`
  Setup the permissions for the storm code dir.
  `void`
  `setupWorkerArtifactsDir(String user, File path)`
  Setup the permissions for the worker artifacts dirs.
  `byte[]`
  `slurp(File location)`
  Read the contents of a file into a byte array.
  `String`
  `slurpString(File location)`
  Read the contents of a file into a String.
  `boolean`
  `supportsAtomicDirectoryMove()`
  Check whether supports atomic directory move.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### symlinksDisabled

    protected final boolean symlinksDisabled

- ## Constructor Details

  - ### AdvancedFSOps

    protected AdvancedFSOps(Map<String,Object> conf)

- ## Method Details

  - ### make

    public static AdvancedFSOps make(Map<String,Object> conf)
    Factory to create a new AdvancedFSOps.
    Parameters:
      `conf` - the configuration of the process
    Returns:
      the appropriate instance of the class for this config and environment.

  - ### restrictDirectoryPermissions

    public void restrictDirectoryPermissions(File dir) throws IOException
    Set directory permissions to (OWNER)RWX (GROUP)R-X (OTHER)--- On some systems that do not support this, it may become a noop.
    Specified by:
      `restrictDirectoryPermissions` in interface `IAdvancedFSOps`
    Parameters:
      `dir` - the directory to change permissions on
    Throws:
      `IOException` - on any error

  - ### moveDirectoryPreferAtomic

    public void moveDirectoryPreferAtomic(File fromDir, File toDir) throws IOException
    Move fromDir to toDir, and try to make it an atomic move if possible.
    Specified by:
      `moveDirectoryPreferAtomic` in interface `IAdvancedFSOps`
    Parameters:
      `fromDir` - what to move
      `toDir` - where to move it from
    Throws:
      `IOException` - on any error

  - ### moveFile

    public void moveFile(File fromFile, File toFile) throws IOException
    Moves a file to a given destination.
    Specified by:
      `moveFile` in interface `IAdvancedFSOps`
    Parameters:
      `fromFile` - file to move
      `toFile` - where to move it
    Throws:
      `IOException` - on any error

  - ### supportsAtomicDirectoryMove

    public boolean supportsAtomicDirectoryMove()
    Check whether supports atomic directory move.
    Specified by:
      `supportsAtomicDirectoryMove` in interface `IAdvancedFSOps`
    Returns:
      true if an atomic directory move works, else false

  - ### copyDirectory

    public void copyDirectory(File fromDir, File toDir) throws IOException
    Copy a directory.
    Specified by:
      `copyDirectory` in interface `IAdvancedFSOps`
    Parameters:
      `fromDir` - from where
      `toDir` - to where
    Throws:
      `IOException` - on any error

  - ### setupBlobPermissions

    public void setupBlobPermissions(File path, String user) throws IOException
    Setup permissions properly for an internal blob store path.
    Specified by:
      `setupBlobPermissions` in interface `IAdvancedFSOps`
    Parameters:
      `path` - the path to set the permissions on
      `user` - the user to change the permissions for
    Throws:
      `IOException` - on any error

  - ### deleteIfExists

    public void deleteIfExists(File path, String user, String logPrefix) throws IOException
    Delete a file or a directory and all of the children. If it exists.
    Specified by:
      `deleteIfExists` in interface `IAdvancedFSOps`
    Parameters:
      `path` - what to delete
      `user` - who to delete it as if doing it as someone else is supported
      `logPrefix` - if an external process needs to be launched to delete the object what prefix to include in the logs
    Throws:
      `IOException` - on any error.

  - ### deleteIfExists

    public void deleteIfExists(File path) throws IOException
    Delete a file or a directory and all of the children. If it exists.
    Specified by:
      `deleteIfExists` in interface `IAdvancedFSOps`
    Parameters:
      `path` - what to delete
    Throws:
      `IOException` - on any error.

  - ### setupStormCodeDir

    public void setupStormCodeDir(String user, File path) throws IOException
    Setup the permissions for the storm code dir.
    Specified by:
      `setupStormCodeDir` in interface `IAdvancedFSOps`
    Parameters:
      `user` - the user that owns the topology
      `path` - the directory to set the permissions on
    Throws:
      `IOException` - on any error

  - ### setupWorkerArtifactsDir

    public void setupWorkerArtifactsDir(String user, File path) throws IOException
    Setup the permissions for the worker artifacts dirs.
    Specified by:
      `setupWorkerArtifactsDir` in interface `IAdvancedFSOps`
    Parameters:
      `user` - the user that owns the topology
      `path` - the directory to set the permissions on
    Throws:
      `IOException` - on any error

  - ### doRequiredTopoFilesExist

    public boolean doRequiredTopoFilesExist(Map<String,Object> conf, String topologyId) throws IOException
    Sanity check if everything the topology needs is there for it to run.
    Specified by:
      `doRequiredTopoFilesExist` in interface `IAdvancedFSOps`
    Parameters:
      `conf` - the config of the supervisor
      `topologyId` - the ID of the topology
    Returns:
      true if everything is there, else false
    Throws:
      `IOException` - on any error

  - ### forceMkdir

    public void forceMkdir(File path) throws IOException
    Makes a directory, including any necessary but nonexistent parent directories.
    Specified by:
      `forceMkdir` in interface `IAdvancedFSOps`
    Parameters:
      `path` - the directory to create
    Throws:
      `IOException` - on any error

  - ### forceMkdir

    public void forceMkdir(Path path) throws IOException
    Makes a directory, including any necessary but nonexistent parent directories.
    Specified by:
      `forceMkdir` in interface `IAdvancedFSOps`
    Parameters:
      `path` - the directory to create
    Throws:
      `IOException` - on any error

  - ### newDirectoryStream

    public DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException
    Description copied from interface: `IAdvancedFSOps`
    List the contents of a directory.
    Specified by:
      `newDirectoryStream` in interface `IAdvancedFSOps`
    Parameters:
      `dir` - the driectory to list the contents of
      `filter` - a filter to decide if it should be included or not
    Returns:
      A stream of directory entries
    Throws:
      `IOException` - on any error

  - ### newDirectoryStream

    public DirectoryStream<Path> newDirectoryStream(Path dir) throws IOException
    Description copied from interface: `IAdvancedFSOps`
    List the contents of a directory.
    Specified by:
      `newDirectoryStream` in interface `IAdvancedFSOps`
    Parameters:
      `dir` - the driectory to list the contents of
    Returns:
      A stream of directory entries
    Throws:
      `IOException` - on any error

  - ### fileExists

    public boolean fileExists(File path) throws IOException
    Check if a file exists or not.
    Specified by:
      `fileExists` in interface `IAdvancedFSOps`
    Parameters:
      `path` - the path to check
    Returns:
      true if it exists else false
    Throws:
      `IOException` - on any error.

  - ### fileExists

    public boolean fileExists(Path path) throws IOException
    Check if a file exists or not.
    Specified by:
      `fileExists` in interface `IAdvancedFSOps`
    Parameters:
      `path` - the path to check
    Returns:
      true if it exists else false
    Throws:
      `IOException` - on any error.

  - ### getWriter

    public Writer getWriter(File file) throws IOException
    Get a writer for the given location.
    Specified by:
      `getWriter` in interface `IAdvancedFSOps`
    Parameters:
      `file` - the file to write to
    Returns:
      the Writer to use.
    Throws:
      `IOException` - on any error

  - ### getOutputStream

    public OutputStream getOutputStream(File file) throws IOException
    Get an output stream to write to a given file.
    Specified by:
      `getOutputStream` in interface `IAdvancedFSOps`
    Parameters:
      `file` - the file to write to
    Returns:
      an OutputStream for that file
    Throws:
      `IOException` - on any error

  - ### dump

    public void dump(File location, String data) throws IOException
    Dump a string to a file.
    Specified by:
      `dump` in interface `IAdvancedFSOps`
    Parameters:
      `location` - where to write to
      `data` - the data to write
    Throws:
      `IOException` - on any error

  - ### slurpString

    public String slurpString(File location) throws IOException
    Read the contents of a file into a String.
    Specified by:
      `slurpString` in interface `IAdvancedFSOps`
    Parameters:
      `location` - the file to read
    Returns:
      the contents of the file
    Throws:
      `IOException` - on any error

  - ### slurp

    public byte[] slurp(File location) throws IOException
    Read the contents of a file into a byte array.
    Specified by:
      `slurp` in interface `IAdvancedFSOps`
    Parameters:
      `location` - the file to read
    Returns:
      the contents of the file
    Throws:
      `IOException` - on any error

  - ### createSymlink

    public void createSymlink(File link, File target) throws IOException
    Create a symbolic link pointing at target.
    Specified by:
      `createSymlink` in interface `IAdvancedFSOps`
    Parameters:
      `link` - the link to create
      `target` - where it should point to
    Throws:
      `IOException` - on any error.