public FactoryBasedAggregateRootRepository(IEventStore eventStore, IDomainEventSerializer domainEventSerializer, IDomainTypeNameMapper domainTypeNameMapper, Func<Type, AggregateRoot> aggregateRootFactoryMethod)
            : base(eventStore, domainEventSerializer, domainTypeNameMapper)
        {
            if (aggregateRootFactoryMethod == null)
                throw new ArgumentNullException("aggregateRootFactoryMethod");

            _aggregateRootFactoryMethod = aggregateRootFactoryMethod;
        }
        public SynchronousViewManagerEventDispatcher(
            IAggregateRootRepository aggregateRootRepository,
            IDomainEventSerializer domainEventSerializer,
            IDomainTypeNameMapper domainTypeNameMapper,
            params IViewManager[] viewManagers)
        {
            this.viewManagers = viewManagers.ToList();

            _aggregateRootRepository = aggregateRootRepository;
            _domainEventSerializer = domainEventSerializer;
            _domainTypeNameMapper = domainTypeNameMapper;
        }
示例#3
0
        /// <summary>
        /// Constructs the event dispatcher
        /// </summary>
        public DependentViewManagerEventDispatcher(IEnumerable <IViewManager> dependencies, IEnumerable <IViewManager> viewManagers, IEventStore eventStore, IDomainEventSerializer domainEventSerializer, IAggregateRootRepository aggregateRootRepository, IDomainTypeNameMapper domainTypeNameMapper, Dictionary <string, object> viewContextItems)
        {
            _dependencies            = dependencies.ToList();
            _viewManagers            = viewManagers.ToList();
            _eventStore              = eventStore;
            _domainEventSerializer   = domainEventSerializer;
            _aggregateRootRepository = aggregateRootRepository;
            _domainTypeNameMapper    = domainTypeNameMapper;
            _viewContextItems        = viewContextItems;
            _workerThread            = new Thread(DoWork)
            {
                IsBackground = true
            };

            _automaticCatchUpTimer.Elapsed += (o, ea) => _work.Enqueue(new Work());
            _automaticCatchUpTimer.Interval = 1000;
            _maxDomainEventsPerBatch        = 100;
        }
        public ViewManagerEventDispatcher(IAggregateRootRepository aggregateRootRepository, IEventStore eventStore,
                                          IDomainEventSerializer domainEventSerializer, IDomainTypeNameMapper domainTypeNameMapper, params IViewManager[] viewManagers)
        {
            if (aggregateRootRepository == null)
            {
                throw new ArgumentNullException("aggregateRootRepository");
            }
            if (eventStore == null)
            {
                throw new ArgumentNullException("eventStore");
            }
            if (domainEventSerializer == null)
            {
                throw new ArgumentNullException("domainEventSerializer");
            }
            if (domainTypeNameMapper == null)
            {
                throw new ArgumentNullException("domainTypeNameMapper");
            }
            if (viewManagers == null)
            {
                throw new ArgumentNullException("viewManagers");
            }

            _aggregateRootRepository = aggregateRootRepository;
            _eventStore            = eventStore;
            _domainEventSerializer = domainEventSerializer;
            _domainTypeNameMapper  = domainTypeNameMapper;

            viewManagers.ToList().ForEach(view => _viewManagers.Enqueue(view));

            _worker = new Thread(DoWork)
            {
                IsBackground = true
            };

            _automaticCatchUpTimer.Elapsed += delegate
            {
                _work.Enqueue(PieceOfWork.FullCatchUp(false));
            };

            AutomaticCatchUpInterval = TimeSpan.FromSeconds(1);
        }
        public CommandProcessor(
            IEventStore eventStore, IAggregateRootRepository aggregateRootRepository, IEventDispatcher eventDispatcher,
            IDomainEventSerializer domainEventSerializer, ICommandMapper commandMapper, IDomainTypeNameMapper domainTypeNameMapper,
            Options options)
        {
            if (eventStore == null)
            {
                throw new ArgumentNullException("eventStore");
            }
            if (aggregateRootRepository == null)
            {
                throw new ArgumentNullException("aggregateRootRepository");
            }
            if (eventDispatcher == null)
            {
                throw new ArgumentNullException("eventDispatcher");
            }
            if (domainEventSerializer == null)
            {
                throw new ArgumentNullException("domainEventSerializer");
            }
            if (commandMapper == null)
            {
                throw new ArgumentNullException("commandMapper");
            }
            if (domainTypeNameMapper == null)
            {
                throw new ArgumentNullException("domainTypeNameMapper");
            }
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            _eventStore = eventStore;
            _aggregateRootRepository = aggregateRootRepository;
            _eventDispatcher         = eventDispatcher;
            _domainEventSerializer   = domainEventSerializer;
            _commandMapper           = commandMapper;
            _domainTypeNameMapper    = domainTypeNameMapper;
            _options = options;
        }
示例#6
0
        public CommandProcessor(
            IEventStore eventStore, IAggregateRootRepository aggregateRootRepository, IEventDispatcher eventDispatcher,
            IDomainEventSerializer domainEventSerializer, ICommandMapper commandMapper, IDomainTypeNameMapper domainTypeNameMapper,
            Options options)
        {
            if (eventStore == null) throw new ArgumentNullException("eventStore");
            if (aggregateRootRepository == null) throw new ArgumentNullException("aggregateRootRepository");
            if (eventDispatcher == null) throw new ArgumentNullException("eventDispatcher");
            if (domainEventSerializer == null) throw new ArgumentNullException("domainEventSerializer");
            if (commandMapper == null) throw new ArgumentNullException("commandMapper");
            if (domainTypeNameMapper == null) throw new ArgumentNullException("domainTypeNameMapper");
            if (options == null) throw new ArgumentNullException("options");

            _eventStore = eventStore;
            _aggregateRootRepository = aggregateRootRepository;
            _eventDispatcher = eventDispatcher;
            _domainEventSerializer = domainEventSerializer;
            _commandMapper = commandMapper;
            _domainTypeNameMapper = domainTypeNameMapper;
            _options = options;
        }
 public CommandTypeNameCommandProcessorDecorator(ICommandProcessor innerCommandProcessor, IDomainTypeNameMapper domainTypeNameMapper)
 {
     _innerCommandProcessor = innerCommandProcessor;
     _domainTypeNameMapper = domainTypeNameMapper;
 }
 public DefaultAggregateRootRepository(IEventStore eventStore, IDomainEventSerializer domainEventSerializer, IDomainTypeNameMapper domainTypeNameMapper)
 {
     _eventStore            = eventStore;
     _domainEventSerializer = domainEventSerializer;
     _domainTypeNameMapper  = domainTypeNameMapper;
 }
 public RealUnitOfWork(IAggregateRootRepository aggregateRootRepository, IDomainTypeNameMapper typeNameMapper)
 {
     _aggregateRootRepository = aggregateRootRepository;
     _typeNameMapper          = typeNameMapper;
 }
示例#10
0
        internal TestContext(InMemoryEventStore eventStore, IAggregateRootRepository aggregateRootRepository, IEventDispatcher eventDispatcher,
                             IDomainEventSerializer domainEventSerializer, ICommandMapper commandMapper, IDomainTypeNameMapper domainTypeNameMapper)
        {
            _eventStore = eventStore;
            _aggregateRootRepository = aggregateRootRepository;
            _eventDispatcher         = eventDispatcher;
            _domainEventSerializer   = domainEventSerializer;
            _testCommandMapper       = commandMapper;
            _domainTypeNameMapper    = domainTypeNameMapper;

            _viewManagerEventDispatcher = eventDispatcher as ViewManagerEventDispatcher;
            if (_viewManagerEventDispatcher != null)
            {
                _waitHandle.Register(_viewManagerEventDispatcher);
            }
        }
示例#11
0
 internal TestContext(InMemoryEventStore eventStore, IAggregateRootRepository aggregateRootRepository, IEventDispatcher eventDispatcher,
                      IDomainEventSerializer domainEventSerializer, ICommandMapper commandMapper, IDomainTypeNameMapper domainTypeNameMapper)
 {
     _eventStore = eventStore;
     _aggregateRootRepository = aggregateRootRepository;
     _eventDispatcher         = eventDispatcher;
     _domainEventSerializer   = domainEventSerializer;
     _testCommandMapper       = commandMapper;
     _domainTypeNameMapper    = domainTypeNameMapper;
 }
示例#12
0
        public FactoryBasedAggregateRootRepository(IEventStore eventStore, IDomainEventSerializer domainEventSerializer, IDomainTypeNameMapper domainTypeNameMapper, Func <Type, AggregateRoot> aggregateRootFactoryMethod)
            : base(eventStore, domainEventSerializer, domainTypeNameMapper)
        {
            if (aggregateRootFactoryMethod == null)
            {
                throw new ArgumentNullException("aggregateRootFactoryMethod");
            }

            this._aggregateRootFactoryMethod = aggregateRootFactoryMethod;
        }
示例#13
0
 public CommandTypeNameCommandProcessorDecorator(ICommandProcessor innerCommandProcessor, IDomainTypeNameMapper domainTypeNameMapper)
 {
     _innerCommandProcessor = innerCommandProcessor;
     _domainTypeNameMapper  = domainTypeNameMapper;
 }
 internal TestUnitOfWork(IAggregateRootRepository aggregateRootRepository, IEventStore eventStore, IEventDispatcher eventDispatcher, IDomainEventSerializer domainEventSerializer, IDomainTypeNameMapper domainTypeNameMapper)
 {
     _eventStore            = eventStore;
     _eventDispatcher       = eventDispatcher;
     _domainEventSerializer = domainEventSerializer;
     _realUnitOfWork        = new RealUnitOfWork(aggregateRootRepository, domainTypeNameMapper);
 }
示例#15
0
 /// <summary>
 /// Registers the given type name mapper to be used instead of the default <see cref="DefaultDomainTypeNameMapper"/>
 /// </summary>
 public void UseCustomDomainTypeNameMapper(IDomainTypeNameMapper domainTypeNameMapper)
 {
     RegisterInstance(domainTypeNameMapper);
 }
示例#16
0
        public DefaultViewContext(IAggregateRootRepository aggregateRootRepository, IDomainTypeNameMapper domainTypeNameMapper)
        {
            _aggregateRootRepository = aggregateRootRepository;

            _realUnitOfWork = new RealUnitOfWork(_aggregateRootRepository, domainTypeNameMapper);
        }
示例#17
0
 public InMemoryViewEventDispatcher(IAggregateRootRepository aggregateRootRepository, IDomainEventSerializer domainEventSerializer, IDomainTypeNameMapper domainTypeNameMapper)
 {
     _aggregateRootRepository = aggregateRootRepository;
     _domainEventSerializer   = domainEventSerializer;
     _domainTypeNameMapper    = domainTypeNameMapper;
 }
示例#18
0
 public InMemoryUnitOfWork(IAggregateRootRepository aggregateRootRepository, IDomainTypeNameMapper domainTypeNameMapper)
     : base(aggregateRootRepository, domainTypeNameMapper)
 {
 }