GitIdentifiers.TreeIdBuilder (Apache Commons Codec 1.22.0 API)
Description: declaration: package: org.apache.commons.codec.digest, class: GitIdentifiers, class: TreeIdBuilder

Package org.apache.commons.codec.digest

# Class GitIdentifiers.TreeIdBuilder

java.lang.Object
org.apache.commons.codec.digest.GitIdentifiers.TreeIdBuilder

All Implemented Interfaces:
  `Supplier<byte[]>`

Enclosing class:
  `GitIdentifiers`

public static final class GitIdentifiers.TreeIdBuilder extends Object implements Supplier<byte[]>
Builds a Git tree identifier for a virtual directory structure, such as the contents of an archive.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `GitIdentifiers.TreeIdBuilder`
  `addDirectory(String name)`
  Adds and returns the `GitIdentifiers.TreeIdBuilder` for the named subdirectory, creating it if absent.
  `void`
  `addFile(GitIdentifiers.FileMode mode, String name, byte[] data)`
  Adds a file entry at the given path within this tree.
  `void`
  `addFile(GitIdentifiers.FileMode mode, String name, long dataSize, InputStream data)`
  Adds a file entry at the given path within this tree, streaming content without buffering.
  `void`
  `addSymbolicLink(String name, String target)`
  Adds a symbolic link entry at the given path within this tree.
  `byte[]`
  `get()`
  Computes the Git tree identifier for this directory and all its descendants.

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

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

- ## Method Details

  - ### addDirectory

    public GitIdentifiers.TreeIdBuilder addDirectory(String name)
    Adds and returns the `GitIdentifiers.TreeIdBuilder` for the named subdirectory, creating it if absent.
    Parameters:
      `name` - The relative path of the subdirectory in normalized form (may contain `'/'`).
    Returns:
      The `GitIdentifiers.TreeIdBuilder` for the subdirectory.
    Throws:
      `IllegalArgumentException` - If any path component is `".."`.

  - ### addFile

    public void addFile(GitIdentifiers.FileMode mode, String name, byte[] data) throws IOException
    Adds a file entry at the given path within this tree.

    If `name` contains `'/'`, intermediate subdirectories are created automatically.

    Parameters:
      `mode` - The file mode (e.g. `GitIdentifiers.FileMode.REGULAR`).
      `name` - The relative path of the entry in normalized form(may contain `'/'`).
      `data` - The file content.
    Throws:
      `IOException` - If an I/O error occurs.
      `IllegalArgumentException` - If any path component is `".."`.

  - ### addFile

    public void addFile(GitIdentifiers.FileMode mode, String name, long dataSize, InputStream data) throws IOException
    Adds a file entry at the given path within this tree, streaming content without buffering.

    If `name` contains `'/'`, intermediate subdirectories are created automatically.

    The stream is eagerly drained.

    Parameters:
      `mode` - The file mode (e.g. `GitIdentifiers.FileMode.REGULAR`).
      `name` - The relative path of the entry in normalized form(may contain `'/'`).
      `dataSize` - The exact number of bytes in `data`.
      `data` - The file content.
    Throws:
      `IOException` - If the stream cannot be read.
      `IllegalArgumentException` - If any path component is `".."`.

  - ### addSymbolicLink

    public void addSymbolicLink(String name, String target) throws IOException
    Adds a symbolic link entry at the given path within this tree.

    If `name` contains `'/'`, intermediate subdirectories are created automatically.

    Parameters:
      `name` - The relative path of the entry in normalized form(may contain `'/'`).
      `target` - The target of the symbolic link.
    Throws:
      `IOException` - If an I/O error occurs.
      `IllegalArgumentException` - If any path component is `".."`.

  - ### get

    public byte[] get()
    Computes the Git tree identifier for this directory and all its descendants.
    Specified by:
      `get` in interface `Supplier<byte[]>`
    Returns:
      The raw tree identifier bytes.