Removes an object from the
DataManager
, if the object is
persistent. The system will make an effort to flag subsequent references to the removed object through {@link #getBinding getBinding} or {@link ManagedReference} by throwing {@link ObjectNotFoundException}, although this behavior is not guaranteed.
If {@code object} implements {@link ManagedObjectRemoval}, even if it is transient, then this method first calls the {@link ManagedObjectRemoval#removingObject ManagedObjectRemoval.removingObject} method on the object, to notify itthat it is being removed. If the call to {@code removingObject} throwsa {@code RuntimeException}, then this method will throw that exception without removing the object. A call to {@code removingObject} thatcauses {@code removeObject} to be called recursively on the same objectwill result in an {@code IllegalStateException} being thrown.
@param object the object
@throws IllegalArgumentException if {@code object} does not implementboth {@link ManagedObject} and {@link Serializable}
@throws IllegalStateException if {@code object} implements {@code ManagedObjectRemoval} and {@code removeObject} is calledrecursively on the object through a call to {@link ManagedObjectRemoval#removingObject ManagedObjectRemoval.removingObject}
@throws ObjectNotFoundException if the object has already been removed
@throws TransactionException if the operation failed because of aproblem with the current transaction
@throws RuntimeException if {@code object} implements {@code ManagedObjectRemoval} and calling {@link ManagedObjectRemoval#removingObject ManagedObjectRemoval.removingObject} on the object throws aruntime exception
@see ManagedObjectRemoval