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.
|
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()
Get the original object which this temporary one was copied from.
|
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)
Copyable
this
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:
The parameter passed into thepublic 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> }
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 Copyable
target
- 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.Object
public 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 DBObjectID
other
- the other id to compare to this idstrict
- whether to perform a strict comparisonpublic java.lang.String getType()
DBObjectID
getType
in interface DBObjectID
DBObject.getType()
public DBObjectID getParent()
getParent
in interface DBObjectID
public DBObject resolveID() throws DBException
DBObjectID
resolveID
in interface DBObjectID
DBException
public DBObject resolveOriginalID() throws DBException
DBException
findOriginalObject(oracle.javatools.db.TemporaryObjectID)
public java.lang.String toString()
toString
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public 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)