CommandProcessor GetCommandProcessor(bool useCaching) { var eventStore = new MongoDbEventStore(_database, "events"); _timeTaker = new TimeTaker { InnerEventStore = eventStore, }; var serializer = new JsonDomainEventSerializer(); IAggregateRootRepository aggregateRootRepository = new DefaultAggregateRootRepository(_timeTaker, serializer, _domainTypeNameMapper); if (useCaching) { aggregateRootRepository = new CachingAggregateRootRepositoryDecorator(aggregateRootRepository, new InMemorySnapshotCache { ApproximateMaxNumberOfCacheEntries = 100 }, eventStore, serializer); } _timeTaker.InnerAggregateRootRepository = aggregateRootRepository; var eventDispatcher = new ViewManagerEventDispatcher(_timeTaker, eventStore, serializer, _domainTypeNameMapper); var commandProcessor = new CommandProcessor(_timeTaker, _timeTaker, eventDispatcher, serializer, _commandMapper, _domainTypeNameMapper, new Options()); RegisterForDisposal(commandProcessor); return commandProcessor; }
protected override void DoSetUp() { _eventStore = new MongoDbEventStore(MongoHelper.InitializeTestDatabase(), "Events"); _domainEventSerializer = new JsonDomainEventSerializer(); _domainTypeNameMapper = new DefaultDomainTypeNameMapper(); var snapshotCache = new InMemorySnapshotCache(); _realAggregateRootRepository = new DefaultAggregateRootRepository(_eventStore, _domainEventSerializer, _domainTypeNameMapper); _cachingAggregateRootRepository = new CachingAggregateRootRepositoryDecorator(_realAggregateRootRepository, snapshotCache, _eventStore, _domainEventSerializer); }