Example #1
0
        public DomainObject CreateObjectReference(IObjectInitializationContext objectInitializationContext, ClientTransaction clientTransaction)
        {
            ArgumentUtility.CheckNotNull("objectInitializationContext", objectInitializationContext);
            ArgumentUtility.CheckNotNull("clientTransaction", clientTransaction);

            var objectID = objectInitializationContext.ObjectID;

            CheckDomainTypeAndClassDefinition(objectID.ClassDefinition.ClassType);
            objectID.ClassDefinition.ValidateCurrentMixinConfiguration();

            var concreteType = Pipeline.ReflectionService.GetAssembledType(objectID.ClassDefinition.ClassType);
            var instance     = (DomainObject)FormatterServices.GetSafeUninitializedObject(concreteType);

            Pipeline.ReflectionService.PrepareExternalUninitializedObject(instance, InitializationSemantics.Construction);

            // These calls are normally performed by DomainObject's ctor
            instance.Initialize(objectID, objectInitializationContext.RootTransaction);
            objectInitializationContext.RegisterObject(instance);

            using (clientTransaction.EnterNonDiscardingScope())
            {
                instance.RaiseReferenceInitializatingEvent();
            }

            return(instance);
        }
        public ObjectInititalizationContextScope(IObjectInitializationContext objectInitializationContext)
        {
            ArgumentUtility.CheckNotNull("objectInitializationContext", objectInitializationContext);

            _previousObjectInitializationContext = s_currentObjectInitializationContext;
            s_currentObjectInitializationContext = objectInitializationContext;
        }
Example #3
0
        public override void SetUp()
        {
            base.SetUp();

            var remixParticipant   = new MixinParticipant();
            var restoreParticipant = new DomainObjectParticipant();

            _pipeline = SafeServiceLocator.Current.GetInstance <IPipelineFactory>().Create("DomainObjectCreatorTest", remixParticipant, restoreParticipant);
            var pipelineRegistry = new DefaultPipelineRegistry(_pipeline);

            _domainObjectCreator = new DomainObjectCreator(pipelineRegistry);

            _transaction = ClientTransaction.CreateRootTransaction();
            _order1InitializationContext = CreateFakeInitializationContext(DomainObjectIDs.Order1, _transaction);
            var objectID = new ObjectID(typeof(TargetClassForPersistentMixin), Guid.NewGuid());

            _targetClassForPersistentMixinInitializationContext = CreateFakeInitializationContext(objectID, _transaction);
        }
Example #4
0
        public DomainObject CreateNewObject(IObjectInitializationContext objectInitializationContext, ParamList constructorParameters, ClientTransaction clientTransaction)
        {
            ArgumentUtility.CheckNotNull("objectInitializationContext", objectInitializationContext);
            ArgumentUtility.CheckNotNull("constructorParameters", constructorParameters);
            ArgumentUtility.CheckNotNull("clientTransaction", clientTransaction);

            var domainObjectType = objectInitializationContext.ObjectID.ClassDefinition.ClassType;

            CheckDomainTypeAndClassDefinition(domainObjectType);
            var classDefinition = MappingConfiguration.Current.GetTypeDefinition(domainObjectType);

            classDefinition.ValidateCurrentMixinConfiguration();

            using (clientTransaction.EnterNonDiscardingScope())
            {
                using (new ObjectInititalizationContextScope(objectInitializationContext))
                {
                    var instance = (DomainObject)Pipeline.Create(domainObjectType, constructorParameters, allowNonPublicConstructor: true);
                    DomainObjectMixinCodeGenerationBridge.OnDomainObjectCreated(instance);
                    return(instance);
                }
            }
        }
 public DomainObject CreateNewObject(IObjectInitializationContext objectInitializationContext, ParamList constructorParameters, ClientTransaction clientTransaction)
 {
     throw new NotSupportedException("ThrowingDomainObjectCreator.CreateNewObject was invoked.");
 }
 public DomainObject CreateObjectReference(IObjectInitializationContext objectInitializationContext, ClientTransaction clientTransaction)
 {
     throw new NotSupportedException("ThrowingDomainObjectCreator.CreateObjectReference was invoked.");
 }
Example #7
0
 public void SetUp()
 {
     _initializationContext = MockRepository.GenerateStub <IObjectInitializationContext>();
 }
 public void Dispose()
 {
     s_currentObjectInitializationContext = _previousObjectInitializationContext;
 }