public class TemporaryObjectID extends java.lang.Object implements DBObjectID
| Modifier and Type | Class and Description |
|---|---|
static class |
TemporaryObjectID.CopyBackPolicy
IDPolicy to use when copying the temp copy of an object back over its
original object.
|
static class |
TemporaryObjectID.TemporaryIDPolicy
IDPolicy that creates a TemporaryObjectID for every object that has the
original object set.
|
UNSPECIFIED_TYPE| Modifier and Type | Method and Description |
|---|---|
java.lang.Object |
copyTo(java.lang.Object target)
Copies the internal state of
this object to the
specified copy. |
static DBObjectID |
createID(DBObject obj)
Creates a new DBObjectID pointing to a specific object.
|
static DBObjectID |
createID(DBObject obj,
DBObject original)
Creates a new DBObjectID pointing to a specific object.
|
boolean |
equals(DBObjectID other,
boolean strict)
Returns whether the DBObjectID
other is "equal" to this id. |
boolean |
equals(java.lang.Object obj) |
static DBObjectID |
findOriginalID(TemporaryObjectID id)
Finds the original most ID in the given TemporaryObjectID's "original
object" heirachy.
|
static <T extends DBObject> |
findOriginalObject(T obj)
Recursively finds the original object for the given object, if the
given object is a copy with a TemporaryObjectID.
|
static DBObject |
findOriginalObject(TemporaryObjectID id)
Returns the original object's id, or null if there is no original
object.
|
DBObject |
getDBObject()
Gets the object that this ID resolves to.
|
DBObject |
getOriginalObject()
Get the original object which this temporary one was copied from.
|
static <T extends DBObject> |
getOriginalObject(T obj)
Gets the original object for the given object, if it has a
TemporaryObjectID.
|
DBObjectID |
getParent()
Returns null.
|
java.lang.String |
getType()
Retrieves the type of object referenced by this id.
|
int |
hashCode() |
DBObject |
resolveID()
Resolves the id into the object referenced.
|
DBObject |
resolveOriginalID()
Deprecated.
use
getOriginalObject() which does not throw
DBException. |
static void |
setID(DBObject obj,
boolean recurse)
If the given object doesn't have an ID, this sets a new
TemporaryObjectID on the object.
|
java.lang.String |
toString() |
public java.lang.Object copyTo(java.lang.Object target)
Copyablethis object to the
specified copy. If copy is
null, then this method should create a new instance
of this class and proceed to copy the internal state
to the newly created object. Generally, only the persistent
state of the object should be copied, but whether or not it is
appropriate to copy transient properties is at the discretion
of the individual implementor.
Regardless of whether the copy occurs to an existing object or to
a newly created object, the return value is object to which
this object's state was copied.
There is a standard implementation pattern for the
copyTo method that helps avoid problems that arise
when a Copyable object is subclassed. The pattern
is:
public Object copyTo( Object target )
{
final <this_class> copy =
target != null ? (<this_class>) target : new <this_class>();
copyToImpl( copy );
return copy;
}
protected final void copyToImpl( <this_class> copy )
{
super.copyToImpl( copy ); // if necessary
// put code here for copying the properties of <this_class>
}
The parameter passed into the copyToImpl method is
the same type of this class. The responsibility of
copyToImpl is to copy the state of this
class through direct access of the fields. The
copyToImpl method should not use getters and setters
since these may be overridden, causing the state of
this class to be incompletely copied.copyTo in interface Copyabletarget - The target object to which the state of
this object should be copied. If target
is null, then the copyTo method will
return a new instance of this class.this
object was copied. If the target was
non-null, then the return value is the same as the
target object that was passed in; otherwise, the
return value is a new instance of this class.public final boolean equals(java.lang.Object obj)
equals in class java.lang.Objectpublic boolean equals(DBObjectID other, boolean strict)
other is "equal" to this id.
Due to the nature of TemporaryObjectIDs the notion of "strict" is
slightly looser than it is for other ids. Strict equality for
TemporaryObjectID means one the following must be true:
other is a TemporaryObjectID and one of the following is
also true:
other's original chain.other's object is anywhere in this id's original chain.other equates strictly to the id of any object in this id's
original object chain.other is NameBasedID that has matching details to the
underlying object in this id.Note that in order to make equals commutative there is code in AbstractDBObjectID to ensure comparison of a TemporaryObjectID and a non-TemporaryObjectID is always done by this method. If another DBObjectID subclass does not extend AbstractDBObjectID it must ensure that as well.
equals in interface DBObjectIDother - the other id to compare to this idstrict - whether to perform a strict comparisonpublic java.lang.String getType()
DBObjectIDgetType in interface DBObjectIDDBObject.getType()public DBObjectID getParent()
getParent in interface DBObjectIDpublic DBObject resolveID() throws DBException
DBObjectIDresolveID in interface DBObjectIDDBExceptionpublic DBObject getOriginalObject()
public DBObject getDBObject()
@Deprecated public DBObject resolveOriginalID() throws DBException
getOriginalObject() which does not throw
DBException.DBExceptionpublic java.lang.String toString()
toString in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic static DBObjectID createID(DBObject obj)
obj - the DBObject referenced by this IDpublic static void setID(DBObject obj, boolean recurse)
obj - the DBObject referenced by this IDrecurse - whether to set TemporaryObjectIDs on obj's descendentspublic static DBObjectID createID(DBObject obj, DBObject original)
obj - the DBObject referenced by this IDoriginal - the DBObject which has been copied to create the temporary objectpublic static DBObjectID findOriginalID(TemporaryObjectID id)
public static DBObject findOriginalObject(TemporaryObjectID id)
public static <T extends DBObject> T findOriginalObject(T obj)
getOriginalObject(DBObject).obj - the copy to find the original forfindOriginalObject(TemporaryObjectID)public static <T extends DBObject> T getOriginalObject(T obj)
findOriginalObject methods do.obj - the copy to find the direct original forobj's id isn't
a TemporaryObjectID with an original.findOriginalObject(DBObject)