FileDocCategorySizeDatePackage
DirtyCollectionSearchVisitor.javaAPI DocHibernate 3.2.52217Fri Jul 29 01:25:24 BST 2005org.hibernate.event.def

DirtyCollectionSearchVisitor

public 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
author
Gavin King

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
booleanincludeEntityProperty(java.lang.Object[] values, int i)

		return propertyVersionability[i] && super.includeEntityProperty(values, i);
	
java.lang.ObjectprocessCollection(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;
	
booleanwasDirtyCollectionFound()

		return dirty;