DirtyCollectionSearchVisitorpublic class DirtyCollectionSearchVisitor extends AbstractVisitor Do we have a dirty collection here?
1. if it is a new application-instantiated collection, return true (does not occur anymore!)
2. if it is a component, recurse
3. if it is a wrappered collection, ask the collection entry |
Fields Summary |
---|
private boolean | dirty | private boolean[] | propertyVersionability |
Constructors Summary |
---|
DirtyCollectionSearchVisitor(org.hibernate.event.EventSource session, boolean[] propertyVersionability)
super(session);
this.propertyVersionability = propertyVersionability;
|
Methods Summary |
---|
boolean | includeEntityProperty(java.lang.Object[] values, int i)
return propertyVersionability[i] && super.includeEntityProperty(values, i);
| java.lang.Object | processCollection(java.lang.Object collection, org.hibernate.type.CollectionType type)
if (collection!=null) {
SessionImplementor session = getSession();
final PersistentCollection persistentCollection;
if ( type.isArrayType() ) {
persistentCollection = session.getPersistenceContext().getCollectionHolder(collection);
// if no array holder we found an unwrappered array (this can't occur,
// because we now always call wrap() before getting to here)
// return (ah==null) ? true : searchForDirtyCollections(ah, type);
}
else {
// if not wrappered yet, its dirty (this can't occur, because
// we now always call wrap() before getting to here)
// return ( ! (obj instanceof PersistentCollection) ) ?
//true : searchForDirtyCollections( (PersistentCollection) obj, type );
persistentCollection = (PersistentCollection) collection;
}
if ( persistentCollection.isDirty() ) { //we need to check even if it was not initialized, because of delayed adds!
dirty=true;
return null; //NOTE: EARLY EXIT!
}
}
return null;
| boolean | wasDirtyCollectionFound()
return dirty;
|
|