コード例 #1
0
        public override void SetUp()
        {
            base.SetUp();

            _mockRepository = new MockRepository();

            _persistenceStrategyMock = _mockRepository.StrictMock <IFetchEnabledPersistenceStrategy> ();
            _loadedObjectDataRegistrationAgentMock = _mockRepository.StrictMock <ILoadedObjectDataRegistrationAgent> ();
            _loadedObjectDataProviderStub          = _mockRepository.Stub <ILoadedObjectDataProvider> ();
            _eagerFetcherMock = _mockRepository.StrictMock <IEagerFetcher> ();

            _fetchEnabledObjectLoader = new FetchEnabledObjectLoader(
                _persistenceStrategyMock,
                _loadedObjectDataRegistrationAgentMock,
                _loadedObjectDataProviderStub,
                _eagerFetcherMock);

            _resultItem1 = LoadedObjectDataObjectMother.CreateLoadedObjectDataStub(DomainObjectIDs.Order1);
            _resultItem2 = LoadedObjectDataObjectMother.CreateLoadedObjectDataStub(DomainObjectIDs.Order3);
            _resultItemWithSourceData1 = LoadedObjectDataObjectMother.CreateLoadedObjectDataWithDataSourceData(DomainObjectIDs.Order1);
            _resultItemWithSourceData2 = LoadedObjectDataObjectMother.CreateLoadedObjectDataWithDataSourceData(DomainObjectIDs.Order3);

            _orderTicketEndPointDefinition = GetEndPointDefinition(typeof(Order), "OrderTicket");
            _customerEndPointDefinition    = GetEndPointDefinition(typeof(Order), "Customer");

            var fetchQuery1 = CreateFakeQuery();
            var fetchQuery2 = CreateFakeQuery();

            _queryWithFetchQueries = CreateFakeQuery(
                Tuple.Create(_orderTicketEndPointDefinition, fetchQuery1),
                Tuple.Create(_customerEndPointDefinition, fetchQuery2));
        }
コード例 #2
0
        public virtual IEnumerable <ILoadedObjectData> ResolveCollectionRelationData(
            RelationEndPointID relationEndPointID, ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
        {
            ArgumentUtility.CheckNotNull("relationEndPointID", relationEndPointID);
            ArgumentUtility.CheckNotNull("alreadyLoadedObjectDataProvider", alreadyLoadedObjectDataProvider);

            using (var persistenceManager = CreatePersistenceManager())
            {
                var dataContainers = persistenceManager.LoadRelatedDataContainers(relationEndPointID);
                return(dataContainers.Select(dc => GetLoadedObjectDataForDataContainer(dc, alreadyLoadedObjectDataProvider)));
            }
        }
コード例 #3
0
        public FetchEnabledObjectLoader(
            IFetchEnabledPersistenceStrategy persistenceStrategy,
            ILoadedObjectDataRegistrationAgent loadedObjectDataRegistrationAgent,
            ILoadedObjectDataProvider loadedObjectDataProvider,
            IEagerFetcher eagerFetcher)
            : base(persistenceStrategy, loadedObjectDataRegistrationAgent, loadedObjectDataProvider)
        {
            ArgumentUtility.CheckNotNull("persistenceStrategy", persistenceStrategy);
            ArgumentUtility.CheckNotNull("eagerFetcher", eagerFetcher);

            _persistenceStrategy = persistenceStrategy;
            _eagerFetcher        = eagerFetcher;
        }
コード例 #4
0
        public ObjectLoader(
            IPersistenceStrategy persistenceStrategy,
            ILoadedObjectDataRegistrationAgent loadedObjectDataRegistrationAgent,
            ILoadedObjectDataProvider loadedObjectDataProvider)
        {
            ArgumentUtility.CheckNotNull("persistenceStrategy", persistenceStrategy);
            ArgumentUtility.CheckNotNull("loadedObjectDataRegistrationAgent", loadedObjectDataRegistrationAgent);
            ArgumentUtility.CheckNotNull("loadedObjectDataProvider", loadedObjectDataProvider);

            _persistenceStrategy = persistenceStrategy;
            _loadedObjectDataRegistrationAgent = loadedObjectDataRegistrationAgent;
            _loadedObjectDataProvider          = loadedObjectDataProvider;
        }
コード例 #5
0
        public virtual ILoadedObjectData ResolveObjectRelationData(
            RelationEndPointID relationEndPointID,
            ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
        {
            ArgumentUtility.CheckNotNull("relationEndPointID", relationEndPointID);
            ArgumentUtility.CheckNotNull("alreadyLoadedObjectDataProvider", alreadyLoadedObjectDataProvider);

            using (var persistenceManager = CreatePersistenceManager())
            {
                var dataContainer = persistenceManager.LoadRelatedDataContainer(relationEndPointID);
                return(GetLoadedObjectDataForDataContainer(dataContainer, alreadyLoadedObjectDataProvider));
            }
        }
コード例 #6
0
        public override void SetUp()
        {
            base.SetUp();

            _mockRepository = new MockRepository();

            _persistenceStrategyMock = _mockRepository.StrictMock <IPersistenceStrategy> ();
            _loadedObjectDataRegistrationAgentMock = _mockRepository.StrictMock <ILoadedObjectDataRegistrationAgent>();
            _loadedObjectDataProviderStub          = _mockRepository.Stub <ILoadedObjectDataProvider>();

            _objectLoader = new ObjectLoader(_persistenceStrategyMock, _loadedObjectDataRegistrationAgentMock, _loadedObjectDataProviderStub);

            _fakeQuery = CreateFakeQuery();

            _loadedObjectDataStub1 = MockRepository.GenerateStub <ILoadedObjectData> ();
            _loadedObjectDataStub2 = MockRepository.GenerateStub <ILoadedObjectData> ();
        }
コード例 #7
0
        public virtual ILoadedObjectData ResolveObjectRelationData(
            RelationEndPointID relationEndPointID,
            ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
        {
            ArgumentUtility.CheckNotNull("relationEndPointID", relationEndPointID);
            ArgumentUtility.CheckNotNull("alreadyLoadedObjectDataProvider", alreadyLoadedObjectDataProvider);

            if (!relationEndPointID.Definition.IsVirtual || relationEndPointID.Definition.Cardinality != CardinalityType.One)
            {
                throw new ArgumentException("ResolveObjectRelationData can only be called for virtual object end points.", "relationEndPointID");
            }

            // parentRelatedObject may be null
            var parentRelatedObject = _parentTransactionContext.ResolveRelatedObject(relationEndPointID);

            return(TransferParentObject(parentRelatedObject, alreadyLoadedObjectDataProvider));
        }
コード例 #8
0
        private ILoadedObjectData TransferParentObject(DomainObject parentObject, ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
        {
            if (parentObject == null)
            {
                return(new NullLoadedObjectData());
            }

            var existingLoadedObject = alreadyLoadedObjectDataProvider.GetLoadedObject(parentObject.ID);

            if (existingLoadedObject != null)
            {
                return(existingLoadedObject);
            }
            else
            {
                return(TransferParentObject(parentObject.ID));
            }
        }
コード例 #9
0
        public override void SetUp()
        {
            base.SetUp();

            _parentTransactionContextMock         = MockRepository.GenerateStrictMock <IParentTransactionContext> ();
            _unlockedParentTransactionContextMock = MockRepository.GenerateStrictMock <IUnlockedParentTransactionContext> ();
            _persistenceStrategy = new SubPersistenceStrategy(_parentTransactionContextMock);

            _queryStub = MockRepository.GenerateStub <IQuery>();

            _orderNumberPropertyDefinition = GetPropertyDefinition(typeof(Order), "OrderNumber");
            _fileNamePropertyDefinition    = GetPropertyDefinition(typeof(OrderTicket), "FileName");
            _productPropertyDefinition     = GetPropertyDefinition(typeof(OrderItem), "Product");

            _virtualObjectRelationEndPointID = RelationEndPointID.Create(DomainObjectIDs.Order1, GetEndPointDefinition(typeof(Order), "OrderTicket"));
            _collectionEndPointID            = RelationEndPointID.Create(DomainObjectIDs.Order1, GetEndPointDefinition(typeof(Order), "OrderItems"));
            _nonVirtualEndPointID            = RelationEndPointID.Create(DomainObjectIDs.Order1, GetEndPointDefinition(typeof(Order), "Customer"));

            _alreadyLoadedObjectDataProviderMock = MockRepository.GenerateStrictMock <ILoadedObjectDataProvider>();
        }
コード例 #10
0
        public virtual IEnumerable <ILoadedObjectData> ResolveCollectionRelationData(
            RelationEndPointID relationEndPointID,
            ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
        {
            ArgumentUtility.CheckNotNull("relationEndPointID", relationEndPointID);
            ArgumentUtility.CheckNotNull("alreadyLoadedObjectDataProvider", alreadyLoadedObjectDataProvider);

            if (relationEndPointID.Definition.Cardinality != CardinalityType.Many)
            {
                throw new ArgumentException("ResolveCollectionRelationData can only be called for CollectionEndPoints.", "relationEndPointID");
            }

            var parentObjects = _parentTransactionContext.ResolveRelatedObjects(relationEndPointID);

            return(parentObjects
                   .Select(parentObject =>
            {
                Assertion.IsNotNull(parentObject);
                return TransferParentObject(parentObject, alreadyLoadedObjectDataProvider);
            }));
        }
コード例 #11
0
        private ILoadedObjectData GetLoadedObjectDataForDataContainer(DataContainer dataContainer, ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
        {
            if (dataContainer == null)
            {
                return(new NullLoadedObjectData());
            }

            var knownLoadedObjectData = alreadyLoadedObjectDataProvider.GetLoadedObject(dataContainer.ID);

            return(knownLoadedObjectData ?? new FreshlyLoadedObjectData(dataContainer));
        }
コード例 #12
0
 public IEnumerable <LoadedObjectDataWithDataSourceData> ExecuteFetchQuery(IQuery query, ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
 {
     throw new System.NotImplementedException();
 }
コード例 #13
0
 public IEnumerable <ILoadedObjectData> ExecuteCollectionQuery(IQuery query, ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
 {
     throw new System.NotImplementedException();
 }
コード例 #14
0
 public IEnumerable <ILoadedObjectData> ResolveCollectionRelationData(RelationEndPointID relationEndPointID, ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
 {
     throw new System.NotImplementedException();
 }
コード例 #15
0
 public ILoadedObjectData ResolveObjectRelationData(RelationEndPointID relationEndPointID, ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
 {
     throw new System.NotImplementedException();
 }
コード例 #16
0
        public virtual IEnumerable <ILoadedObjectData> ExecuteCollectionQuery(IQuery query, ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
        {
            ArgumentUtility.CheckNotNull("query", query);
            ArgumentUtility.CheckNotNull("alreadyLoadedObjectDataProvider", alreadyLoadedObjectDataProvider);

            var queryResult = _parentTransactionContext.ExecuteCollectionQuery(query);

            Assertion.IsNotNull(queryResult, "Parent transaction never returns a null query result for collection query.");

            var parentObjects = queryResult.AsEnumerable();

            return(parentObjects.Select(parentObject => TransferParentObject(parentObject, alreadyLoadedObjectDataProvider)));
        }
コード例 #17
0
        public IEnumerable <LoadedObjectDataWithDataSourceData> ExecuteFetchQuery(IQuery query, ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
        {
            ArgumentUtility.CheckNotNull("query", query);
            ArgumentUtility.CheckNotNull("alreadyLoadedObjectDataProvider", alreadyLoadedObjectDataProvider);

            if (query.QueryType != QueryType.Collection)
            {
                throw new ArgumentException("Only collection queries can be used for fetching.", "query");
            }

            var dataContainers = ExecuteDataContainerQuery(query);

            return(dataContainers.Select(dc => new LoadedObjectDataWithDataSourceData(GetLoadedObjectDataForDataContainer(dc, alreadyLoadedObjectDataProvider), dc)));
        }
コード例 #18
0
        public virtual IEnumerable <ILoadedObjectData> ExecuteCollectionQuery(IQuery query, ILoadedObjectDataProvider alreadyLoadedObjectDataProvider)
        {
            ArgumentUtility.CheckNotNull("query", query); ArgumentUtility.CheckNotNull("alreadyLoadedObjectDataProvider", alreadyLoadedObjectDataProvider);


            if (query.QueryType != QueryType.Collection)
            {
                throw new ArgumentException("Only collection queries can be used to load data containers.", "query");
            }

            var dataContainers = ExecuteDataContainerQuery(query);

            return(dataContainers.Select(dc => GetLoadedObjectDataForDataContainer(dc, alreadyLoadedObjectDataProvider)));
        }