private object ProcessArrayOrNewCollection(object collection, CollectionType collectionType) { if (collection == null) { return null; } ICollectionPersister persister = Session.GetCollectionPersister(collectionType.Role); if (collectionType.IsArrayType) { PersistentArrayHolder ah = Session.GetArrayHolder(collection); if (ah == null) { ah = new PersistentArrayHolder(Session, collection); Session.AddNewCollection(ah, persister); Session.AddArrayHolder(ah); } return null; } else { IPersistentCollection persistentCollection = collectionType.Wrap(Session, collection); Session.AddNewCollection(persistentCollection, persister); if (log.IsDebugEnabled) { log.Debug("Wrapped collection in role: " + collectionType.Role); } return persistentCollection; //Force a substitution! } }
private object ProcessArrayOrNewCollection(object collection, CollectionType collectionType) { if (collection == null) { //do nothing return null; } ISessionImplementor session = Session; ICollectionPersister persister = session.Factory.GetCollectionPersister(collectionType.Role); IPersistenceContext persistenceContext = session.PersistenceContext; //TODO: move into collection type, so we can use polymorphism! if (collectionType.HasHolder(session.EntityMode)) { if (collection == CollectionType.UnfetchedCollection) return null; IPersistentCollection ah = persistenceContext.GetCollectionHolder(collection); if (ah == null) { ah = collectionType.Wrap(session, collection); persistenceContext.AddNewCollection(persister, ah); persistenceContext.AddCollectionHolder(ah); } return null; } else { IPersistentCollection persistentCollection = collectionType.Wrap(session, collection); persistenceContext.AddNewCollection(persister, persistentCollection); if (log.IsDebugEnabled) log.Debug("Wrapped collection in role: " + collectionType.Role); return persistentCollection; //Force a substitution! } }