Interface changes only:
src/java/oracle/toplink/essentials/descriptors/DescriptorQueryManager.java
src/java/oracle/toplink/essentials/descriptors/VersionLockingPolicy.java
src/java/oracle/toplink/essentials/internal/descriptors/OptimisticLockingPolicy.java
src/java/oracle/toplink/essentials/mappings/AggregateCollectionMapping.java
src/java/oracle/toplink/essentials/mappings/AggregateMapping.java
src/java/oracle/toplink/essentials/mappings/DirectCollectionMapping.java
src/java/oracle/toplink/essentials/mappings/ManyToManyMapping.java

Setting cascadeOnlyDependentParts for DeleteObjectQuery:
src/java/oracle/toplink/essentials/internal/sessions/AbstractSession.java
src/java/oracle/toplink/essentials/internal/sessions/CommitManager.java


src/java/oracle/toplink/essentials/internal/descriptors/ObjectBuilder.java
- Added buildRowForShallowDelete
  - corresponding to buildRowForShallowInsert
  - this method does not need to inheritance discriminator or secondary table join,
    as those are already set

src/java/oracle/toplink/essentials/internal/queryframework/CallQueryMechanism.java
- shallowUpdateForeignKeyField
  - use modifyRow set in superclass

src/java/oracle/toplink/essentials/internal/queryframework/DatabaseQueryMechanism.java
- Added deleteObjectForWrite
  - corresponding to insertObjectForWrite
- executeWrtite
  - added check for shallow delete
- Added performUserDefinedDelete
  - to ensure delete query is cloned
  - corresponding to performUserDefinedInsert/Update
- Added addObjectDeleteDuringCommit
  TODO: re-name this method?
  - to mark object as deleted in UoW
  - corresponding to registerObjectInIdentityMap
- shallowInsertObjectForWrite
  - removed does exist check
- Added shallowDeleteObjectForWrite
  - corresponding to shallowInsertObjectForWrite
- updateForeignKeyFieldAfterInsert
  - setting modifyRow here, and not in subclass method
- Added nullOutForeignKeyFieldsBeforeDelete
  - corresponding to updateForeignKeyFieldAfterInsert
- Re-named abstract void updateForeignKeyFieldAfterInsert
  - new name: shallowUpdateForeignKeyField

src/java/oracle/toplink/essentials/internal/queryframework/DatasourceCallQueryMechanism.java
- shallowUpdateForeignKeyField
  - use modifyRow set in superclass

src/java/oracle/toplink/essentials/mappings/DatabaseMapping.java
- Interface changes
- added writeFromObjectIntoRowForShallowDelete

src/java/oracle/toplink/essentials/mappings/ForeignReferenceMapping.java
- Added shouldObjectModifyCascadeToPartsWithoutOwningCheck
  - same functionality as shouldObjectModifyCascadeToParts, but w/o testing for relationship side
    the correct relationship side is checked, before this method is called

src/java/oracle/toplink/essentials/mappings/ObjectReferenceMapping.java
- Added preDelete, postDelete
  - calling delete corresponding to insert
- Re-named preDelete to delete
  - corresponding to insert
- Removed owning side check from insert and delete
  - this check is now done in pre Delete/Insert and post Delete/Insert
    - preDelete calls delete only if on non-owning side, ensuring that owning side is removed first
    - preInsert calls insert only if on owning side, ensuring that non-owning side is inserted first
    - postDelete calls delete only if on owning side and user specified private ownership "reversed"
    - postInsert calls insert only if on non-owning side and user specified private ownership "reversed"
  - Note, that postInsert would have never run based on original logic
- delete and insert perform shallow delete/insert, if circular dependency is found
- As "ToOne" side can be owning or non-owning side, both pre- and post- Delete/Insert have to be impleneted;
  "OneToMany" is always non-owning for bi-directional relationships, so only preDelete and postInsert 
  have to be implemented
- delete does the right thing for private owned parts, can be called before and after delete
  - old logic of remembering parts to be deleted after delete can be replaced by calling delete
  - in isForeignKeyRelationship in delete not necessary anymore, see above

src/java/oracle/toplink/essentials/mappings/OneToManyMapping.java
- Interface changes to WriteObjectQuery
- Save cast in deleteAll
  - attribute never instanceof ValueHolderInterface
- postInsert
  - saveguards changed corresponding to postInsert in OneToOneMapping
  - no need to handle non-private parts
- preDelete
  - saveguards changed corresponding to preDelete in OneToOneMapping
  - non-private parts *must* be handled one by one
    - must not be deleted, if foreign key null out
    - will be removed, if delete is cascaded!

src/java/oracle/toplink/essentials/mappings/OneToOneMapping.java
- Added writeFromObjectIntoRowForShallowDelete
  - re-directs to writeFromObjectIntoRowForShallowOperation
  - writeFromObjectIntoRowForShallowOperation writes null values for foreign keys
    and contains the original logic from writeFromObjectIntoRowForShallowInsert 
- writeFromObjectIntoRowForShallowInsert now calles writeFromObjectIntoRowForShallowOperation

src/java/oracle/toplink/essentials/queryframework/DeleteObjectQuery.java
- Now extending WriteObjectQuery
- Added executeCommit:
  TODO: How to handle case object == null?
  - Calling super.executeCommit()?
  - Implement DQM.deleteObjectForWriteWithChangeSet?
- removed executeDatabaseQuery:
  - Now handled in superclass
- prepareForExecution:
  - setting translationRow now done in super.prepareForExecution

src/java/oracle/toplink/essentials/queryframework/WriteObjectQuery.java
- executeCommit:
  - Added check for toBeDeleted
  - Removed code for non-UoW. Is *always* called in UoW:
    see CommitManager access in delete/insert/updateObjectForWrite!
