Class ObjectId
- java.lang.Object
-
- org.bson.types.ObjectId
-
- All Implemented Interfaces:
Serializable
,Comparable<ObjectId>
public final class ObjectId extends Object implements Comparable<ObjectId>, Serializable
A globally unique identifier for objects.
Consists of 12 bytes, divided as follows:
ObjectID layout 0 1 2 3 4 5 6 7 8 9 10 11 time machine pid inc Instances of this class are immutable.
- See Also:
- Serialized Form
- MongoDB documentation
- ObjectId
-
-
Constructor Summary
Constructors Constructor Description ObjectId()
Create a new object id.ObjectId(byte[] bytes)
Constructs a new instance from the given byte arrayObjectId(int timestamp, int machineIdentifier, short processIdentifier, int counter)
Creates an ObjectId using the given time, machine identifier, process identifier, and counter.ObjectId(String hexString)
Constructs a new instance from a 24-byte hexadecimal string representation.ObjectId(ByteBuffer buffer)
Constructs a new instance from the given ByteBufferObjectId(Date date)
Constructs a new instance using the given date.ObjectId(Date date, int counter)
Constructs a new instances using the given date and counter.ObjectId(Date date, int machineIdentifier, short processIdentifier, int counter)
Constructs a new instances using the given date, machine identifier, process identifier, and counter.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description int
compareTo(ObjectId other)
static ObjectId
createFromLegacyFormat(int time, int machine, int inc)
Creates an ObjectId using time, machine and inc values.boolean
equals(Object o)
static ObjectId
get()
Gets a new object id.int
getCounter()
Gets the counter.static int
getCurrentCounter()
Gets the current value of the auto-incrementing counter.Date
getDate()
Gets the timestamp as aDate
instance.static int
getGeneratedMachineIdentifier()
Gets the generated machine identifier.static int
getGeneratedProcessIdentifier()
Gets the generated process identifier.int
getMachineIdentifier()
Gets the machine identifier.short
getProcessIdentifier()
Gets the process identifier.long
getTime()
Deprecated.Use #getDate insteadint
getTimeSecond()
Deprecated.Use #getTimestamp insteadint
getTimestamp()
Gets the timestamp (number of seconds since the Unix epoch).int
hashCode()
static boolean
isValid(String hexString)
Checks if a string could be anObjectId
.void
putToByteBuffer(ByteBuffer buffer)
Convert to bytes and put those bytes to the provided ByteBuffer.byte[]
toByteArray()
Convert to a byte array.String
toHexString()
Converts this instance into a 24-byte hexadecimal string representation.String
toString()
String
toStringMongod()
Deprecated.usetoHexString()
-
-
-
Constructor Detail
-
ObjectId
public ObjectId()
Create a new object id.
-
ObjectId
public ObjectId(Date date)
Constructs a new instance using the given date.- Parameters:
date
- the date
-
ObjectId
public ObjectId(Date date, int counter)
Constructs a new instances using the given date and counter.- Parameters:
date
- the datecounter
- the counter- Throws:
IllegalArgumentException
- if the high order byte of counter is not zero
-
ObjectId
public ObjectId(Date date, int machineIdentifier, short processIdentifier, int counter)
Constructs a new instances using the given date, machine identifier, process identifier, and counter.- Parameters:
date
- the datemachineIdentifier
- the machine identifierprocessIdentifier
- the process identifiercounter
- the counter- Throws:
IllegalArgumentException
- if the high order byte of machineIdentifier or counter is not zero
-
ObjectId
public ObjectId(int timestamp, int machineIdentifier, short processIdentifier, int counter)
Creates an ObjectId using the given time, machine identifier, process identifier, and counter.- Parameters:
timestamp
- the time in secondsmachineIdentifier
- the machine identifierprocessIdentifier
- the process identifiercounter
- the counter- Throws:
IllegalArgumentException
- if the high order byte of machineIdentifier or counter is not zero
-
ObjectId
public ObjectId(String hexString)
Constructs a new instance from a 24-byte hexadecimal string representation.- Parameters:
hexString
- the string to convert- Throws:
IllegalArgumentException
- if the string is not a valid hex string representation of an ObjectId
-
ObjectId
public ObjectId(byte[] bytes)
Constructs a new instance from the given byte array- Parameters:
bytes
- the byte array- Throws:
IllegalArgumentException
- if array is null or not of length 12
-
ObjectId
public ObjectId(ByteBuffer buffer)
Constructs a new instance from the given ByteBuffer- Parameters:
buffer
- the ByteBuffer- Throws:
IllegalArgumentException
- if the buffer is null or does not have at least 12 bytes remaining- Since:
- 3.4
-
-
Method Detail
-
get
public static ObjectId get()
Gets a new object id.- Returns:
- the new id
-
isValid
public static boolean isValid(String hexString)
Checks if a string could be anObjectId
.- Parameters:
hexString
- a potential ObjectId as a String.- Returns:
- whether the string could be an object id
- Throws:
IllegalArgumentException
- if hexString is null
-
getGeneratedMachineIdentifier
public static int getGeneratedMachineIdentifier()
Gets the generated machine identifier.- Returns:
- an int representing the machine identifier
-
getGeneratedProcessIdentifier
public static int getGeneratedProcessIdentifier()
Gets the generated process identifier.- Returns:
- the process id
-
getCurrentCounter
public static int getCurrentCounter()
Gets the current value of the auto-incrementing counter.- Returns:
- the current counter value.
-
createFromLegacyFormat
public static ObjectId createFromLegacyFormat(int time, int machine, int inc)
Creates an ObjectId using time, machine and inc values. The Java driver used to create all ObjectIds this way, but it does not match the ObjectId specification, which requires four values, not three. This major release of the Java driver conforms to the specification, but still supports clients that are relying on the behavior of the previous major release by providing this explicit factory method that takes three parameters instead of four.
Ordinary users of the driver will not need this method. It's only for those that have written there own BSON decoders.
NOTE: This will not break any application that use ObjectIds. The 12-byte representation will be round-trippable from old to new driver releases.
- Parameters:
time
- time in secondsmachine
- machine IDinc
- incremental value- Returns:
- a new
ObjectId
created from the given values - Since:
- 2.12.0
-
toByteArray
public byte[] toByteArray()
Convert to a byte array. Note that the numbers are stored in big-endian order.- Returns:
- the byte array
-
putToByteBuffer
public void putToByteBuffer(ByteBuffer buffer)
Convert to bytes and put those bytes to the provided ByteBuffer. Note that the numbers are stored in big-endian order.- Parameters:
buffer
- the ByteBuffer- Throws:
IllegalArgumentException
- if the buffer is null or does not have at least 12 bytes remaining- Since:
- 3.4
-
getTimestamp
public int getTimestamp()
Gets the timestamp (number of seconds since the Unix epoch).- Returns:
- the timestamp
-
getMachineIdentifier
public int getMachineIdentifier()
Gets the machine identifier.- Returns:
- the machine identifier
-
getProcessIdentifier
public short getProcessIdentifier()
Gets the process identifier.- Returns:
- the process identifier
-
getCounter
public int getCounter()
Gets the counter.- Returns:
- the counter
-
getDate
public Date getDate()
Gets the timestamp as aDate
instance.- Returns:
- the Date
-
toHexString
public String toHexString()
Converts this instance into a 24-byte hexadecimal string representation.- Returns:
- a string representation of the ObjectId in hexadecimal format
-
compareTo
public int compareTo(ObjectId other)
- Specified by:
compareTo
in interfaceComparable<ObjectId>
-
getTimeSecond
@Deprecated public int getTimeSecond()
Deprecated. Use #getTimestamp insteadGets the time of this ID, in seconds.- Returns:
- the time component of this ID in seconds
-
getTime
@Deprecated public long getTime()
Deprecated. Use #getDate insteadGets the time of this instance, in milliseconds.- Returns:
- the time component of this ID in milliseconds
-
toStringMongod
@Deprecated public String toStringMongod()
Deprecated. usetoHexString()
- Returns:
- a string representation of the ObjectId in hexadecimal format
- See Also:
toHexString()
-
-