コード例 #1
0
        private TransactionHierarchyManager(
            ClientTransaction thisTransaction,
            IClientTransactionEventSink thisEventSink,
            IClientTransactionHierarchy transactionHierarchy,
            ClientTransaction parentTransaction,
            ITransactionHierarchyManager parentHierarchyManager,
            IClientTransactionEventSink parentEventSink)
        {
            ArgumentUtility.CheckNotNull("thisTransaction", thisTransaction);
            ArgumentUtility.CheckNotNull("thisEventSink", thisEventSink);
            ArgumentUtility.CheckNotNull("transactionHierarchy", transactionHierarchy);


            _thisTransaction = thisTransaction;
            _thisEventSink   = thisEventSink;

            _parentTransaction      = parentTransaction;
            _parentHierarchyManager = parentHierarchyManager;
            _parentEventSink        = parentEventSink;

            _transactionHierarchy = transactionHierarchy;

            _readOnlyClientTransactionListener = new ReadOnlyClientTransactionListenerWithLoadRules();
            _newObjectHierarchyInvalidationClientTransactionListener = new NewObjectHierarchyInvalidationClientTransactionListener();
        }
コード例 #2
0
        public static T CreateWithComponents <T> (
            Dictionary <Enum, object> applicationData = null,
            IClientTransactionEventBroker eventBroker = null,
            ITransactionHierarchyManager transactionHierarchyManager = null,
            IEnlistedDomainObjectManager enlistedDomainObjectManager = null,
            IInvalidDomainObjectManager invalidDomainObjectManager   = null,
            IPersistenceStrategy persistenceStrategy = null,
            IDataManager dataManager = null,
            IObjectLifetimeAgent objectLifetimeAgent = null,
            IQueryManager queryManager = null,
            ICommitRollbackAgent commitRollbackAgent             = null,
            IEnumerable <IClientTransactionExtension> extensions = null)
            where T : ClientTransaction
        {
            var componentFactoryStub = CreateComponentFactory(
                applicationData,
                eventBroker,
                transactionHierarchyManager,
                enlistedDomainObjectManager,
                invalidDomainObjectManager,
                persistenceStrategy,
                dataManager,
                objectLifetimeAgent,
                queryManager,
                commitRollbackAgent,
                extensions);

            return(CreateWithComponents <T> (componentFactoryStub));
        }
        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));
        }
 protected abstract IObjectLoader CreateObjectLoader(
     ClientTransaction constructedTransaction,
     IClientTransactionEventSink eventSink,
     IPersistenceStrategy persistenceStrategy,
     IInvalidDomainObjectManager invalidDomainObjectManager,
     IDataManager dataManager,
     ITransactionHierarchyManager hierarchyManager);
        public virtual IDataManager CreateDataManager(
            ClientTransaction constructedTransaction,
            IClientTransactionEventSink eventSink,
            IInvalidDomainObjectManager invalidDomainObjectManager,
            IPersistenceStrategy persistenceStrategy,
            ITransactionHierarchyManager hierarchyManager)
        {
            ArgumentUtility.CheckNotNull("constructedTransaction", constructedTransaction);
            ArgumentUtility.CheckNotNull("eventSink", eventSink);
            ArgumentUtility.CheckNotNull("invalidDomainObjectManager", invalidDomainObjectManager);
            ArgumentUtility.CheckNotNull("persistenceStrategy", persistenceStrategy);
            ArgumentUtility.CheckNotNull("hierarchyManager", hierarchyManager);

            var dataContainerEventListener = CreateDataContainerEventListener(eventSink);

            var delegatingDataManager = new DelegatingDataManager();
            var objectLoader          = CreateObjectLoader(
                constructedTransaction, eventSink, persistenceStrategy, invalidDomainObjectManager, delegatingDataManager, hierarchyManager);

            var endPointManager = CreateRelationEndPointManager(
                constructedTransaction,
                GetEndPointProvider(delegatingDataManager),
                GetLazyLoader(delegatingDataManager),
                eventSink);

            var dataManager = new DataManager(
                constructedTransaction, eventSink, dataContainerEventListener, invalidDomainObjectManager, objectLoader, endPointManager);

            delegatingDataManager.InnerDataManager = dataManager;
            return(dataManager);
        }
コード例 #6
0
        public LoadedObjectDataRegistrationListener(
            IClientTransactionEventSink eventSink, ITransactionHierarchyManager hierarchyManager)
        {
            ArgumentUtility.CheckNotNull("eventSink", eventSink);
            ArgumentUtility.CheckNotNull("hierarchyManager", hierarchyManager);

            _eventSink        = eventSink;
            _hierarchyManager = hierarchyManager;
        }
        public override void SetUp()
        {
            base.SetUp();

            _mockRepository       = new MockRepository();
            _eventSinkWithMock    = _mockRepository.StrictMock <IClientTransactionEventSink>();
            _hierarchyManagerMock = _mockRepository.StrictMock <ITransactionHierarchyManager> ();

            _decorator = new LoadedObjectDataRegistrationListener(_eventSinkWithMock, _hierarchyManagerMock);
        }
 public IObjectLoader CallCreateObjectLoader(
     ClientTransaction constructedTransaction,
     IClientTransactionEventSink eventSink,
     IPersistenceStrategy persistenceStrategy,
     IInvalidDomainObjectManager invalidDomainObjectManager,
     IDataManager dataManager,
     ITransactionHierarchyManager hierarchyManager)
 {
     return(CreateObjectLoader(constructedTransaction, eventSink, persistenceStrategy, invalidDomainObjectManager, dataManager, hierarchyManager));
 }
コード例 #9
0
 public static SubClientTransactionComponentFactory Create(
     ClientTransaction parentTransaction,
     IInvalidDomainObjectManager parentInvalidDomainObjectManager,
     IEnlistedDomainObjectManager parentEnlistedDomainObjectManager,
     ITransactionHierarchyManager parentTransactionHierarchyManager,
     IClientTransactionEventSink parentEventSink)
 {
     return(ObjectFactory.Create <SubClientTransactionComponentFactory> (
                true,
                ParamList.Create(
                    parentTransaction,
                    parentInvalidDomainObjectManager,
                    parentEnlistedDomainObjectManager,
                    parentTransactionHierarchyManager,
                    parentEventSink)));
 }
コード例 #10
0
        protected override IObjectLoader CreateObjectLoader(
            ClientTransaction constructedTransaction,
            IClientTransactionEventSink eventSink,
            IPersistenceStrategy persistenceStrategy,
            IInvalidDomainObjectManager invalidDomainObjectManager,
            IDataManager dataManager,
            ITransactionHierarchyManager hierarchyManager)
        {
            ArgumentUtility.CheckNotNull("constructedTransaction", constructedTransaction);
            ArgumentUtility.CheckNotNull("eventSink", eventSink);
            ArgumentUtility.CheckNotNull("persistenceStrategy", persistenceStrategy);
            ArgumentUtility.CheckNotNull("invalidDomainObjectManager", invalidDomainObjectManager);
            ArgumentUtility.CheckNotNull("dataManager", dataManager);
            ArgumentUtility.CheckNotNull("hierarchyManager", hierarchyManager);

            return(CreateBasicObjectLoader(constructedTransaction, eventSink, persistenceStrategy, invalidDomainObjectManager, dataManager, hierarchyManager));
        }
コード例 #11
0
        public override void SetUp()
        {
            base.SetUp();

            _thisTransaction             = ClientTransactionObjectMother.Create();
            _thisEventSinkWithStrictMock = MockRepository.GenerateStrictMock <IClientTransactionEventSink>();
            _hierarchyStrictMock         = MockRepository.GenerateStrictMock <IClientTransactionHierarchy>();

            _parentTransaction = ClientTransactionObjectMother.Create();
            _parentHierarchyManagerStrictMock = MockRepository.GenerateStrictMock <ITransactionHierarchyManager>();
            _parentHierarchyManagerStrictMock.Stub(stub => stub.TransactionHierarchy).Return(_hierarchyStrictMock);
            _parentEventSinkWithStrictMock = MockRepository.GenerateStrictMock <IClientTransactionEventSink>();

            _manager = new TransactionHierarchyManager(
                _thisTransaction, _thisEventSinkWithStrictMock, _parentTransaction, _parentHierarchyManagerStrictMock, _parentEventSinkWithStrictMock);
            _managerWithoutParent = new TransactionHierarchyManager(_thisTransaction, _thisEventSinkWithStrictMock);
        }
        public virtual IQueryManager CreateQueryManager(
            ClientTransaction constructedTransaction,
            IClientTransactionEventSink eventSink,
            IInvalidDomainObjectManager invalidDomainObjectManager,
            IPersistenceStrategy persistenceStrategy,
            IDataManager dataManager,
            ITransactionHierarchyManager hierarchyManager)
        {
            ArgumentUtility.CheckNotNull("constructedTransaction", constructedTransaction);
            ArgumentUtility.CheckNotNull("eventSink", eventSink);
            ArgumentUtility.CheckNotNull("invalidDomainObjectManager", invalidDomainObjectManager);
            ArgumentUtility.CheckNotNull("persistenceStrategy", persistenceStrategy);
            ArgumentUtility.CheckNotNull("dataManager", dataManager);

            var objectLoader = CreateObjectLoader(
                constructedTransaction, eventSink, persistenceStrategy, invalidDomainObjectManager, dataManager, hierarchyManager);

            return(new QueryManager(persistenceStrategy, objectLoader, eventSink));
        }
 private object CallCreateBasicObjectLoader(
     SubClientTransactionComponentFactory factory,
     TestableClientTransaction constructedTransaction,
     IClientTransactionEventSink eventSink,
     IPersistenceStrategy persistenceStrategy,
     IInvalidDomainObjectManager invalidDomainObjectManager,
     IDataManager dataManager,
     ITransactionHierarchyManager hierarchyManager)
 {
     return(PrivateInvoke.InvokeNonPublicMethod(
                factory,
                "CreateBasicObjectLoader",
                constructedTransaction,
                eventSink,
                persistenceStrategy,
                invalidDomainObjectManager,
                dataManager,
                hierarchyManager));
 }
コード例 #14
0
        protected SubClientTransactionComponentFactory(
            ClientTransaction parentTransaction,
            IInvalidDomainObjectManager parentInvalidDomainObjectManager,
            IEnlistedDomainObjectManager parentEnlistedDomainObjectManager,
            ITransactionHierarchyManager parentHierarchyManager,
            IClientTransactionEventSink parentEventSink)
        {
            ArgumentUtility.CheckNotNull("parentTransaction", parentTransaction);
            ArgumentUtility.CheckNotNull("parentInvalidDomainObjectManager", parentInvalidDomainObjectManager);
            ArgumentUtility.CheckNotNull("parentEnlistedDomainObjectManager", parentEnlistedDomainObjectManager);
            ArgumentUtility.CheckNotNull("parentHierarchyManager", parentHierarchyManager);
            ArgumentUtility.CheckNotNull("parentEventSink", parentEventSink);

            _parentTransaction = parentTransaction;
            _parentInvalidDomainObjectManager  = parentInvalidDomainObjectManager;
            _parentEnlistedDomainObjectManager = parentEnlistedDomainObjectManager;
            _parentHierarchyManager            = parentHierarchyManager;
            _parentEventSink = parentEventSink;
        }
コード例 #15
0
        public TransactionHierarchyManager(
            ClientTransaction thisTransaction,
            IClientTransactionEventSink thisEventSink,
            ClientTransaction parentTransaction,
            ITransactionHierarchyManager parentHierarchyManager,
            IClientTransactionEventSink parentEventSink)
            : this(
                thisTransaction,
                thisEventSink,
                parentHierarchyManager.TransactionHierarchy,
                parentTransaction,
                ArgumentUtility.CheckNotNull("parentHierarchyManager", parentHierarchyManager),
                parentEventSink)
        {
            ArgumentUtility.CheckNotNull("parentTransaction", parentTransaction);
            ArgumentUtility.CheckNotNull("parentEventSink", parentEventSink);

            _parentTransaction      = parentTransaction;
            _parentHierarchyManager = parentHierarchyManager;
            _parentEventSink        = parentEventSink;
        }
        public override void SetUp()
        {
            base.SetUp();

            _parentTransaction = new TestableClientTransaction();
            _parentInvalidDomainObjectManagerStub  = MockRepository.GenerateStub <IInvalidDomainObjectManager> ();
            _parentEnlistedDomainObjectManagerStub = MockRepository.GenerateStub <IEnlistedDomainObjectManager> ();
            _parentTransactionHierarchyManagerStub = MockRepository.GenerateStub <ITransactionHierarchyManager> ();
            _parentTransactionHierarchyManagerStub
            .Stub(stub => stub.TransactionHierarchy)
            .Return(MockRepository.GenerateStub <IClientTransactionHierarchy>());
            _parentEventSink = MockRepository.GenerateStub <IClientTransactionEventSink>();

            _factory = SubClientTransactionComponentFactory.Create(
                _parentTransaction,
                _parentInvalidDomainObjectManagerStub,
                _parentEnlistedDomainObjectManagerStub,
                _parentTransactionHierarchyManagerStub,
                _parentEventSink);

            _fakeConstructedTransaction = new TestableClientTransaction();
        }
コード例 #17
0
        protected virtual IObjectLoader CreateBasicObjectLoader(
            ClientTransaction constructedTransaction,
            IClientTransactionEventSink eventSink,
            IPersistenceStrategy persistenceStrategy,
            IInvalidDomainObjectManager invalidDomainObjectManager,
            IDataManager dataManager,
            ITransactionHierarchyManager hierarchyManager)
        {
            ArgumentUtility.CheckNotNull("constructedTransaction", constructedTransaction);
            ArgumentUtility.CheckNotNull("eventSink", eventSink);
            ArgumentUtility.CheckNotNull("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);

            return(new ObjectLoader(
                       persistenceStrategy,
                       loadedObjectDataRegistrationAgent,
                       loadedObjectDataProvider));
        }
コード例 #18
0
        public static IClientTransactionComponentFactory CreateComponentFactory(
            Dictionary <Enum, object> applicationData = null,
            IClientTransactionEventBroker eventBroker = null,
            ITransactionHierarchyManager transactionHierarchyManager = null,
            IEnlistedDomainObjectManager enlistedDomainObjectManager = null,
            IInvalidDomainObjectManager invalidDomainObjectManager   = null,
            IPersistenceStrategy persistenceStrategy = null,
            IDataManager dataManager = null,
            IObjectLifetimeAgent objectLifetimeAgent = null,
            IQueryManager queryManager = null,
            ICommitRollbackAgent commitRollbackAgent             = null,
            IEnumerable <IClientTransactionExtension> extensions = null)
        {
            applicationData             = applicationData ?? new Dictionary <Enum, object>();
            transactionHierarchyManager = transactionHierarchyManager ?? MockRepository.GenerateStub <ITransactionHierarchyManager>();
            enlistedDomainObjectManager = enlistedDomainObjectManager ?? MockRepository.GenerateStub <IEnlistedDomainObjectManager>();
            invalidDomainObjectManager  = invalidDomainObjectManager ?? MockRepository.GenerateStub <IInvalidDomainObjectManager>();
            persistenceStrategy         = persistenceStrategy ?? MockRepository.GenerateStub <IPersistenceStrategy>();
            dataManager         = dataManager ?? MockRepository.GenerateStub <IDataManager>();
            objectLifetimeAgent = objectLifetimeAgent ?? MockRepository.GenerateStub <IObjectLifetimeAgent>();
            eventBroker         = eventBroker ?? MockRepository.GenerateStub <IClientTransactionEventBroker>();
            queryManager        = queryManager ?? MockRepository.GenerateStub <IQueryManager>();
            commitRollbackAgent = commitRollbackAgent ?? MockRepository.GenerateStub <ICommitRollbackAgent>();
            extensions          = extensions ?? Enumerable.Empty <IClientTransactionExtension>();

            var componentFactoryStub = MockRepository.GenerateStub <IClientTransactionComponentFactory>();

            componentFactoryStub.Stub(stub => stub.CreateApplicationData(Arg <ClientTransaction> .Is.Anything)).Return(applicationData);
            componentFactoryStub
            .Stub(stub => stub.CreateEventBroker(Arg <ClientTransaction> .Is.Anything))
            .Return(eventBroker);
            componentFactoryStub
            .Stub(stub => stub.CreateTransactionHierarchyManager(Arg <ClientTransaction> .Is.Anything, Arg <IClientTransactionEventSink> .Is.Anything))
            .Return(transactionHierarchyManager);
            componentFactoryStub.Stub(stub => stub.CreateEnlistedObjectManager(Arg <ClientTransaction> .Is.Anything)).Return(enlistedDomainObjectManager);
            componentFactoryStub
            .Stub(stub => stub.CreateInvalidDomainObjectManager(Arg <ClientTransaction> .Is.Anything, Arg <IClientTransactionEventSink> .Is.Anything))
            .Return(invalidDomainObjectManager);
            componentFactoryStub.Stub(stub => stub.CreatePersistenceStrategy(Arg <ClientTransaction> .Is.Anything)).Return(persistenceStrategy);
            componentFactoryStub
            .Stub(stub => stub.CreateDataManager(
                      Arg <ClientTransaction> .Is.Anything,
                      Arg <IClientTransactionEventSink> .Is.Anything,
                      Arg <IInvalidDomainObjectManager> .Is.Anything,
                      Arg <IPersistenceStrategy> .Is.Anything,
                      Arg <ITransactionHierarchyManager> .Is.Anything))
            .Return(dataManager);
            componentFactoryStub
            .Stub(
                stub =>
                stub.CreateObjectLifetimeAgent(
                    Arg <ClientTransaction> .Is.Anything,
                    Arg <IClientTransactionEventSink> .Is.Anything,
                    Arg <IInvalidDomainObjectManager> .Is.Anything,
                    Arg <IDataManager> .Is.Anything,
                    Arg <IEnlistedDomainObjectManager> .Is.Anything,
                    Arg <IPersistenceStrategy> .Is.Anything))
            .Return(objectLifetimeAgent);
            componentFactoryStub
            .Stub(stub => stub.CreateQueryManager(
                      Arg <ClientTransaction> .Is.Anything,
                      Arg <IClientTransactionEventSink> .Is.Anything,
                      Arg <IInvalidDomainObjectManager> .Is.Anything,
                      Arg <IPersistenceStrategy> .Is.Anything,
                      Arg <IDataManager> .Is.Anything,
                      Arg <ITransactionHierarchyManager> .Is.Anything))
            .Return(queryManager);
            componentFactoryStub
            .Stub(stub => stub.CreateCommitRollbackAgent(
                      Arg <ClientTransaction> .Is.Anything,
                      Arg <IClientTransactionEventSink> .Is.Anything,
                      Arg <IPersistenceStrategy> .Is.Anything,
                      Arg <IDataManager> .Is.Anything))
            .Return(commitRollbackAgent);
            componentFactoryStub.Stub(stub => stub.CreateExtensions(Arg <ClientTransaction> .Is.Anything)).Return(extensions);
            return(componentFactoryStub);
        }
コード例 #19
0
        protected override IObjectLoader CreateObjectLoader(ClientTransaction constructedTransaction, IClientTransactionEventSink eventSink, IPersistenceStrategy persistenceStrategy, IInvalidDomainObjectManager invalidDomainObjectManager, IDataManager dataManager, ITransactionHierarchyManager hierarchyManager)
        {
            var objectLoader = base.CreateObjectLoader(constructedTransaction, eventSink, persistenceStrategy, invalidDomainObjectManager, dataManager, hierarchyManager);

            return(_factory(objectLoader));
        }
 protected override IObjectLoader CreateObjectLoader(ClientTransaction constructedTransaction, IClientTransactionEventSink eventSink, IPersistenceStrategy persistenceStrategy, IInvalidDomainObjectManager invalidDomainObjectManager, IDataManager dataManager, ITransactionHierarchyManager hierarchyManager)
 {
     throw new NotImplementedException();
 }
コード例 #21
0
 public override IQueryManager CreateQueryManager(ClientTransaction constructedTransaction, IClientTransactionEventSink eventSink, IInvalidDomainObjectManager invalidDomainObjectManager, IPersistenceStrategy persistenceStrategy, IDataManager dataManager, ITransactionHierarchyManager hierarchyManager)
 {
     return(_queryManager);
 }