Exemplo n.º 1
0
        public void DataContainerMapRegistering_MarksNewObjectsInvalid()
        {
            var middleTransaction = CreateSubTransactionAndClearListeners(_rootTransaction);
            var subTransaction    = CreateSubTransactionAndClearListeners(middleTransaction);

            var dataContainer = DataContainer.CreateNew(DomainObjectIDs.Order1);
            var domainObject  = LifetimeService.GetObjectReference(subTransaction, dataContainer.ID);

            dataContainer.SetDomainObject(domainObject);

            _listener.DataContainerMapRegistering(subTransaction, dataContainer);

            Assert.That(_rootTransaction.IsInvalid(DomainObjectIDs.Order1), Is.True);
            Assert.That(ClientTransactionTestHelper.CallGetInvalidObjectReference(_rootTransaction, DomainObjectIDs.Order1), Is.SameAs(domainObject));

            Assert.That(middleTransaction.IsInvalid(DomainObjectIDs.Order1), Is.True);
            Assert.That(ClientTransactionTestHelper.CallGetInvalidObjectReference(middleTransaction, DomainObjectIDs.Order1), Is.SameAs(domainObject));

            Assert.That(subTransaction.IsInvalid(DomainObjectIDs.Order1), Is.False);
        }
        public DomainObject GetDomainObjectReference()
        {
            if (ObjectID == null)
            {
                return(null);
            }

            if (ClientTransaction.IsInvalid(ObjectID))
            {
                return(ClientTransaction.GetInvalidObjectReference(ObjectID));
            }

            return(ClientTransaction.GetObjectReference(ObjectID));
        }
Exemplo n.º 3
0
        private static IDataManagementCommand CreateMarkNotInvalidCommand(ClientTransaction tx, ObjectID objectID)
        {
            if (!tx.IsInvalid(objectID))
            {
                var message = string.Format(
                    "Cannot resurrect object '{0}' because it is not invalid within the whole transaction hierarchy. In transaction '{1}', the object has "
                    + "state '{2}'.",
                    objectID,
                    tx,
                    tx.GetObjectReference(objectID).TransactionContext[tx].State);
                var exception = new InvalidOperationException(message);
                return(new ExceptionCommand(exception));
            }

            return(new MarkNotInvalidCommand(tx.DataManager, objectID));
        }
Exemplo n.º 4
0
        private StateType CalculateState(ObjectID objectID)
        {
            if (_clientTransaction.IsInvalid(objectID))
            {
                return(StateType.Invalid);
            }

            var dataContainer = _clientTransaction.DataManager.DataContainers[objectID];

            if (dataContainer == null)
            {
                return(StateType.NotLoadedYet);
            }

            if (dataContainer.State == StateType.Unchanged)
            {
                return(HasRelationChanged(dataContainer) ? StateType.Changed : StateType.Unchanged);
            }

            return(dataContainer.State);
        }
Exemplo n.º 5
0
 private void CheckStateIsInvalid(DomainObject domainObject, ClientTransaction clientTransaction)
 {
     Assert.That(clientTransaction.IsInvalid(domainObject.ID), Is.True);
     Assert.That(domainObject.TransactionContext[clientTransaction].IsInvalid, Is.True);
     Assert.That(domainObject.TransactionContext[clientTransaction].State, Is.EqualTo(StateType.Invalid));
 }
Exemplo n.º 6
0
 private void CheckStateIsNotInvalid(DomainObject domainObject, ClientTransaction clientTransaction, StateType expectedState)
 {
     Assert.That(clientTransaction.IsInvalid(domainObject.ID), Is.False);
     Assert.That(domainObject.TransactionContext[clientTransaction].IsInvalid, Is.False);
     Assert.That(domainObject.TransactionContext[clientTransaction].State, Is.EqualTo(expectedState));
 }