Class GitIdentifiers.TreeIdBuilder

  • All Implemented Interfaces:
    java.util.function.Supplier<byte[]>
    Enclosing class:
    GitIdentifiers

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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      GitIdentifiers.TreeIdBuilder addDirectory​(java.lang.String name)
      Adds and returns the GitIdentifiers.TreeIdBuilder for the named subdirectory, creating it if absent.
      void addFile​(GitIdentifiers.FileMode mode, java.lang.String name, byte[] data)
      Adds a file entry at the given path within this tree.
      void addFile​(GitIdentifiers.FileMode mode, java.lang.String name, long dataSize, java.io.InputStream data)
      Adds a file entry at the given path within this tree, streaming content without buffering.
      void addSymbolicLink​(java.lang.String name, java.lang.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 Detail

      • addFile

        public void addFile​(GitIdentifiers.FileMode mode,
                            java.lang.String name,
                            byte[] data)
                     throws java.io.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:
        java.io.IOException - If an I/O error occurs.
        java.lang.IllegalArgumentException - If any path component is "..".
      • addFile

        public void addFile​(GitIdentifiers.FileMode mode,
                            java.lang.String name,
                            long dataSize,
                            java.io.InputStream data)
                     throws java.io.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:
        java.io.IOException - If the stream cannot be read.
        java.lang.IllegalArgumentException - If any path component is "..".
      • addSymbolicLink

        public void addSymbolicLink​(java.lang.String name,
                                    java.lang.String target)
                             throws java.io.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:
        java.io.IOException - If an I/O error occurs.
        java.lang.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 java.util.function.Supplier<byte[]>
        Returns:
        The raw tree identifier bytes.