Class ClassID

java.lang.Object
org.apache.poi.hpsf.ClassID

public class ClassID extends Object
Represents a class ID (16 bytes). Unlike other little-endian type the ClassID is not just 16 bytes stored in the wrong order. Instead, it is a double word (4 bytes) followed by two words (2 bytes each) followed by 8 bytes.

The ClassID (or CLSID) is a UUID - see RFC 4122

  • Field Details

  • Constructor Details

    • ClassID

      public ClassID(byte[] src, int offset)
      Creates a ClassID and reads its value from a byte array.
      Parameters:
      src - The byte array to read from.
      offset - The offset of the first byte to read.
    • ClassID

      public ClassID()
      Creates a ClassID and initializes its value with 0x00 bytes.
    • ClassID

      public ClassID(String externalForm)
      Creates a ClassID from a human-readable representation of the Class ID in standard format "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}".
      Parameters:
      externalForm - representation of the Class ID represented by this object.
  • Method Details

    • length

      public int length()
      Returns:
      The number of bytes occupied by this object in the byte stream.
    • getBytes

      public byte[] getBytes()
      Gets the bytes making out the class ID. They are returned in correct order, i.e. big-endian.
      Returns:
      the bytes making out the class ID.
    • setBytes

      public void setBytes(byte[] bytes)
      Sets the bytes making out the class ID.
      Parameters:
      bytes - The bytes making out the class ID in big-endian format. They are copied without their order being changed.
    • read

      public byte[] read(byte[] src, int offset)
      Reads the class ID's value from a byte array by turning little-endian into big-endian.
      Parameters:
      src - The byte array to read from
      offset - The offset within the src byte array
      Returns:
      A byte array containing the class ID.
    • write

      public void write(byte[] dst, int offset) throws ArrayStoreException
      Writes the class ID to a byte array in the little-endian format.
      Parameters:
      dst - The byte array to write to.
      offset - The offset within the dst byte array.
      Throws:
      ArrayStoreException - if there is not enough room for the class ID 16 bytes in the byte array after the offset position.
    • equals

      public boolean equals(Object o)
      Checks whether this ClassID is equal to another object.
      Overrides:
      equals in class Object
      Parameters:
      o - the object to compare this ClassID with
      Returns:
      true if the objects are equal, else false.
    • equalsInverted

      public boolean equalsInverted(ClassID o)
      Checks whether this ClassID is equal to another ClassID with inverted endianess, because there are apparently not only version 1 GUIDs (aka "network" with big-endian encoding), but also version 2 GUIDs (aka "native" with little-endian encoding) out there.
      Parameters:
      o - the object to compare this ClassID with
      Returns:
      true if the objects are equal, else false.
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
      See Also:
    • toString

      public String toString()
      Returns a human-readable representation of the Class ID in standard format "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}".
      Overrides:
      toString in class Object
      Returns:
      String representation of the Class ID represented by this object.