Class AbbreviatedObjectId

  • All Implemented Interfaces:
    Serializable

    public final class AbbreviatedObjectId
    extends Object
    implements Serializable
    A prefix abbreviation of an ObjectId.

    Sometimes Git produces abbreviated SHA-1 strings, using sufficient leading digits from the ObjectId name to still be unique within the repository the string was generated from. These ids are likely to be unique for a useful period of time, especially if they contain at least 6-10 hex digits.

    This class converts the hex string into a binary form, to make it more efficient for matching against an object.

    See Also:
    Serialized Form
    • Method Detail

      • isId

        public static final boolean isId​(String id)
        Test a string of characters to verify it is a hex format.

        If true the string can be parsed with fromString(String).

        Parameters:
        id - the string to test.
        Returns:
        true if the string can converted into an AbbreviatedObjectId.
      • fromString

        public static final AbbreviatedObjectId fromString​(byte[] buf,
                                                           int offset,
                                                           int end)
        Convert an AbbreviatedObjectId from hex characters (US-ASCII).
        Parameters:
        buf - the US-ASCII buffer to read from.
        offset - position to read the first character from.
        end - one past the last position to read (end-offset is the length of the string).
        Returns:
        the converted object id.
      • fromObjectId

        public static final AbbreviatedObjectId fromObjectId​(AnyObjectId id)
        Convert an AbbreviatedObjectId from an AnyObjectId.

        This method copies over all bits of the Id, and is therefore complete (see isComplete()).

        Parameters:
        id - the ObjectId to convert from.
        Returns:
        the converted object id.
      • fromString

        public static final AbbreviatedObjectId fromString​(String str)
        Convert an AbbreviatedObjectId from hex characters.
        Parameters:
        str - the string to read from. Must be <= 40 characters.
        Returns:
        the converted object id.
      • length

        public int length()
        Get number of hex digits appearing in this id.
        Returns:
        number of hex digits appearing in this id.
      • isComplete

        public boolean isComplete()
        Whether this ObjectId is actually a complete id.
        Returns:
        true if this ObjectId is actually a complete id.
      • prefixCompare

        public final int prefixCompare​(AnyObjectId other)
        Compares this abbreviation to a full object id.
        Parameters:
        other - the other object id.
        Returns:
        <0 if this abbreviation names an object that is less than other; 0 if this abbreviation exactly matches the first length() digits of other.name(); >0 if this abbreviation names an object that is after other.
      • prefixCompare

        public final int prefixCompare​(byte[] bs,
                                       int p)
        Compare this abbreviation to a network-byte-order ObjectId.
        Parameters:
        bs - array containing the other ObjectId in network byte order.
        p - position within bs to start the compare at. At least 20 bytes, starting at this position are required.
        Returns:
        <0 if this abbreviation names an object that is less than other; 0 if this abbreviation exactly matches the first length() digits of other.name(); >0 if this abbreviation names an object that is after other.
      • prefixCompare

        public final int prefixCompare​(int[] bs,
                                       int p)
        Compare this abbreviation to a network-byte-order ObjectId.
        Parameters:
        bs - array containing the other ObjectId in network byte order.
        p - position within bs to start the compare at. At least 5 ints, starting at this position are required.
        Returns:
        <0 if this abbreviation names an object that is less than other; 0 if this abbreviation exactly matches the first length() digits of other.name(); >0 if this abbreviation names an object that is after other.
      • getFirstByte

        public final int getFirstByte()
        Get value for a fan-out style map, only valid of length >= 2.
        Returns:
        value for a fan-out style map, only valid of length >= 2.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • name

        public final String name()
        Get string form of the abbreviation, in lower case hexadecimal.
        Returns:
        string form of the abbreviation, in lower case hexadecimal.