private object ProcessArrayOrNewCollection(object collection, PersistentCollectionType collectionType) { if( collection == null ) { return null; } ICollectionPersister persister = Session.GetCollectionPersister( collectionType.Role ); if( collectionType.IsArrayType ) { ArrayHolder ah = Session.GetArrayHolder( collection ); if( ah == null ) { ah = new ArrayHolder( Session, collection ); Session.AddNewCollection( ah, persister ); Session.AddArrayHolder( ah ); } return null; } else { PersistentCollection 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! } }
/// <summary> /// associate a holder with an array - called after loading an array /// </summary> /// <param name="holder"></param> public void AddArrayHolder( ArrayHolder holder ) { //TODO:refactor + make this method private arrayHolders[ holder.Array ] = holder; }