protected override IObjectLoader CreateObjectLoader(
            ClientTransaction constructedTransaction,
            IClientTransactionEventSink eventSink,
            IPersistenceStrategy persistenceStrategy,
            IInvalidDomainObjectManager invalidDomainObjectManager,
            IDataManager dataManager,
            ITransactionHierarchyManager hierarchyManager)
        {
            ArgumentUtility.CheckNotNull("constructedTransaction", constructedTransaction);
            ArgumentUtility.CheckNotNull("eventSink", eventSink);
            var fetchEnabledPersistenceStrategy =
                ArgumentUtility.CheckNotNullAndType <IFetchEnabledPersistenceStrategy> ("persistenceStrategy", persistenceStrategy);

            ArgumentUtility.CheckNotNull("invalidDomainObjectManager", invalidDomainObjectManager);
            ArgumentUtility.CheckNotNull("dataManager", dataManager);
            ArgumentUtility.CheckNotNull("hierarchyManager", hierarchyManager);

            var loadedObjectDataProvider          = new LoadedObjectDataProvider(dataManager, invalidDomainObjectManager);
            var registrationListener              = new LoadedObjectDataRegistrationListener(eventSink, hierarchyManager);
            var loadedObjectDataRegistrationAgent = new LoadedObjectDataRegistrationAgent(constructedTransaction, dataManager, registrationListener);

            IFetchedRelationDataRegistrationAgent registrationAgent =
                new DelegatingFetchedRelationDataRegistrationAgent(
                    new FetchedRealObjectRelationDataRegistrationAgent(),
                    new FetchedVirtualObjectRelationDataRegistrationAgent(dataManager),
                    new FetchedCollectionRelationDataRegistrationAgent(dataManager));
            var eagerFetcher = new EagerFetcher(registrationAgent);

            return(new FetchEnabledObjectLoader(
                       fetchEnabledPersistenceStrategy,
                       loadedObjectDataRegistrationAgent,
                       loadedObjectDataProvider,
                       eagerFetcher));
        }
示例#2
0
        public void Serialization()
        {
            var agent = new DelegatingFetchedRelationDataRegistrationAgent(
                new FetchedRealObjectRelationDataRegistrationAgent(),
                new FetchedVirtualObjectRelationDataRegistrationAgent(new SerializableVirtualEndPointProviderFake()),
                new FetchedCollectionRelationDataRegistrationAgent(new SerializableVirtualEndPointProviderFake()));

            var deserializedAgent = Serializer.SerializeAndDeserialize(agent);

            Assert.That(deserializedAgent.RealObjectDataRegistrationAgent, Is.Not.Null);
            Assert.That(deserializedAgent.VirtualObjectDataRegistrationAgent, Is.Not.Null);
            Assert.That(deserializedAgent.CollectionDataRegistrationAgent, Is.Not.Null);
        }
示例#3
0
        public override void SetUp()
        {
            base.SetUp();

            _mockRepository         = new MockRepository();
            _realObjectAgentMock    = _mockRepository.StrictMock <IFetchedRelationDataRegistrationAgent> ();
            _virtualObjectAgentMock = _mockRepository.StrictMock <IFetchedRelationDataRegistrationAgent> ();
            _collectionAgentMock    = _mockRepository.StrictMock <IFetchedRelationDataRegistrationAgent> ();

            _agent = new DelegatingFetchedRelationDataRegistrationAgent(_realObjectAgentMock, _virtualObjectAgentMock, _collectionAgentMock);

            _originatingObjects = new[] { MockRepository.GenerateStub <ILoadedObjectData>() };
            _relatedObjects     = new[] { LoadedObjectDataObjectMother.CreateLoadedObjectDataWithDataSourceData() };
        }