Package 

Class Identifier

  • All Implemented Interfaces:
    java.io.Serializable , java.lang.Comparable

    
    public class Identifier
     implements Comparable<Identifier>, Serializable
                        

    Encapsulates a beacon identifier of arbitrary byte length. It can encapsulate an identifier that is a 16-byte UUID, or an integer.

    Instances of this class are immutable, so those can be shared without problem between threads.

    The value is internally this is stored as a byte array.

    • Constructor Summary

      Constructors 
      Constructor Description
      Identifier(Identifier identifier) Creates a new copy of the specified Identifier.
    • Method Summary

      Modifier and Type Method Description
      static Identifier parse(String stringValue) Takes the passed string and tries to figure out what format it is in.
      static Identifier parse(String stringValue, int desiredByteLength) Variant of the parse method that allows specifying the byte length of the identifier.
      static Identifier fromLong(long longValue, int desiredByteLength) Creates an Identifer backed by an array of length desiredByteLength
      static Identifier fromInt(int intValue) Creates an Identifier backed by a two byte Array (big endian).
      static Identifier fromBytes(Array<byte> bytes, int start, int end, boolean littleEndian) Creates an Identifier from the specified byte array.
      static Identifier fromUuid(UUID uuid) Transforms a java.util.UUID into an Identifier.
      String toString() Represents the value as a String.
      int toInt() Represents the value as an int.
      Array<byte> toByteArrayOfSpecifiedEndianness(boolean bigEndian) Converts identifier to a byte array
      int getByteCount() Returns the byte length of this identifier.
      int hashCode()
      boolean equals(Object that) Returns whether both Identifiers contain equal value.
      String toHexString() Represents the value as a hexadecimal String.
      String toUuidString() Returns the value of this Identifier in UUID format.
      UUID toUuid() Gives you the Identifier as a UUID if possible.
      Array<byte> toByteArray() Gives you the byte array backing this Identifier.
      int compareTo(Identifier that) Compares two identifiers.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Identifier

        Identifier(Identifier identifier)
        Creates a new copy of the specified Identifier.
        Parameters:
        identifier - identifier to copy
    • Method Detail

      • parse

         static Identifier parse(String stringValue)

        Takes the passed string and tries to figure out what format it is in. Then turns the string into plain bytes and constructs an Identifier. Known bug: This method happily parses UUIDs without dashes (normally invalid). Although the bug is left unfixed for backward compatibility, please check your UUIDs or even better, use fromUuid directly, which is safe. Allowed formats:

        • UUID: 2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 (16 bytes)
        • Hexadecimal: 0x000000000003 (variable length)
        • Decimal: 1337 (2 bytes)
        Parameters:
        stringValue - string to parse
      • parse

         static Identifier parse(String stringValue, int desiredByteLength)

        Variant of the parse method that allows specifying the byte length of the identifier.

      • fromLong

         static Identifier fromLong(long longValue, int desiredByteLength)

        Creates an Identifer backed by an array of length desiredByteLength

        Parameters:
        longValue - a long to put into the identifier
        desiredByteLength - how many bytes to make the identifier
      • fromInt

         static Identifier fromInt(int intValue)

        Creates an Identifier backed by a two byte Array (big endian).

        Parameters:
        intValue - an integer between 0 and 65535 (inclusive)
      • fromBytes

         static Identifier fromBytes(Array<byte> bytes, int start, int end, boolean littleEndian)

        Creates an Identifier from the specified byte array.

        Parameters:
        bytes - array to copy from
        start - the start index, inclusive
        end - the end index, exclusive
        littleEndian - whether the bytes are ordered in little endian
      • fromUuid

         static Identifier fromUuid(UUID uuid)

        Transforms a java.util.UUID into an Identifier. No mangling with strings, only the underlying bytes of the UUID are used so this is fast and stable.

      • toString

         String toString()

        Represents the value as a String. The output varies based on the length of the value.

        • When the value is 2 bytes long: decimal, for example 6536
        • When the value is 16 bytes long: uuid, for example 2f234454-cf6d-4a0f-adf2-f4911ba9ffa6
        • Else: hexadecimal prefixed with 0x, for example 0x0012ab
      • toInt

         int toInt()

        Represents the value as an int.

      • toByteArrayOfSpecifiedEndianness

         Array<byte> toByteArrayOfSpecifiedEndianness(boolean bigEndian)

        Converts identifier to a byte array

        Parameters:
        bigEndian - true if bytes are MSB first
      • getByteCount

         int getByteCount()

        Returns the byte length of this identifier.

      • equals

         boolean equals(Object that)

        Returns whether both Identifiers contain equal value. This is the case when the value is the same and has the same length

        Parameters:
        that - object to compare to
      • toHexString

         String toHexString()

        Represents the value as a hexadecimal String. The String is prefixed with 0x. For example 0x0034ab

      • toUuidString

        @Deprecated() String toUuidString()

        Returns the value of this Identifier in UUID format. For example 2f234454-cf6d-4a0f-adf2-f4911ba9ffa6

      • toUuid

         UUID toUuid()

        Gives you the Identifier as a UUID if possible.

      • toByteArray

         Array<byte> toByteArray()

        Gives you the byte array backing this Identifier. Note that Identifiers are immutable, so changing the the returned array will not result in a changed Identifier.

      • compareTo

         int compareTo(Identifier that)

        Compares two identifiers. When the Identifiers don't have the same length, the Identifier having the shortest array is considered smaller than the other.

        Parameters:
        that - the other identifier