예제 #1
0
 /// <summary>
 /// Creates new instance.
 /// </summary>
 /// <param name="provider">The provider for reading composite type definitions.</param>
 /// <param name="storageFactory">The factory for storage.</param>
 public CompositeTypeFormatter(ICompositeTypeProvider provider, IFactory <ICompositeStorage> storageFactory)
 {
     Ensure.NotNull(provider, "provider");
     Ensure.NotNull(storageFactory, "storageFactory");
     this.provider       = provider;
     this.storageFactory = storageFactory;
 }
예제 #2
0
        private void Domain()
        {
            Converts.Repository
            .AddStringTo <int>(Int32.TryParse)
            .AddStringTo <decimal>(Decimal.TryParse)
            .AddStringTo <bool>(Boolean.TryParse)
            .AddEnumSearchHandler(false);
            //.AddJsonEnumSearchHandler()
            //.AddJsonPrimitivesSearchHandler()
            //.AddJsonObjectSearchHandler()
            //.AddJsonKey()
            //.AddJsonTimeSpan()
            //.Add(new ColorConverter())
            //.AddToStringSearchHandler();

            IFactory <ICompositeStorage> compositeStorageFactory = Factory.Getter(() => new SimpleJsonCompositeStorage(logFactory));

            typeProvider = new ReflectionCompositeTypeProvider(
                new ReflectionCompositeDelegateFactory(),
                BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public
                );

            commandFormatter = new CompositeCommandFormatter(typeProvider, compositeStorageFactory);
            eventFormatter   = new CompositeEventFormatter(typeProvider, compositeStorageFactory, new List <ICompositeFormatterExtender> ()
            {
                new UserKeyEventExtender()
            });
            queryFormatter     = new CompositeListFormatter(typeProvider, compositeStorageFactory, logFactory);
            exceptionFormatter = new CompositeExceptionFormatter(typeProvider, compositeStorageFactory);
        }
        /// <summary>
        /// Creates new instance.
        /// </summary>
        /// <param name="provider">The provider for reading composite type definitions.</param>
        /// <param name="storageFactory">The factory for storage.</param>
        /// <param name="extenders">A list of additional payload extenders.</param>
        public CompositeCommandFormatter(ICompositeTypeProvider provider, IFactory <ICompositeStorage> storageFactory, List <ICompositeFormatterExtender> extenders = null)
        {
            if (extenders == null)
            {
                extenders = new List <ICompositeFormatterExtender>();
            }

            extenders.Add(new CommandExtender());
            envelopeFormatter = new EnvelopeFormatter(new EnvelopeMetadataProcessingFormatter(provider, storageFactory, extenders));
        }
예제 #4
0
 public Formatter(ICompositeTypeProvider provider, IFactory <ICompositeStorage> storageFactory, ILog log)
     : base(provider, storageFactory)
 {
     this.log = log;
 }
예제 #5
0
 public CompositeListFormatter(ICompositeTypeProvider provider, IFactory <ICompositeStorage> storageFactory, ILogFactory logFactory)
 {
     log   = logFactory.Scope("CompositeListFormatter");
     inner = new Formatter(provider, storageFactory, log);
 }
예제 #6
0
 public ExtendedCompositeTypeFormatter(ICompositeTypeProvider provider, IFactory <ICompositeStorage> storageFactory)
     : base(provider, storageFactory)
 {
 }
예제 #7
0
        private void Domain()
        {
            Converts.Repository
            .AddStringTo <int>(Int32.TryParse)
            .AddStringTo <bool>(Boolean.TryParse)
            .AddEnumSearchHandler(false)
            .AddJsonEnumSearchHandler()
            .AddJsonPrimitivesSearchHandler()
            .AddJsonObjectSearchHandler()
            .AddJsonKey()
            .AddJsonTimeSpan()
            .Add(new ColorConverter())
            .AddToStringSearchHandler();

            EventStore      = new EntityEventStore(ServiceProvider.EventSourcingContextFactory);
            eventDispatcher = new PersistentEventDispatcher(new EmptyEventStore());
            eventDispatcher.DispatcherExceptionHandlers.Add(this);
            eventDispatcher.EventExceptionHandlers.Add(this);

            IFactory <ICompositeStorage> compositeStorageFactory = Factory.Default <JsonCompositeStorage>();

            typeProvider = new ReflectionCompositeTypeProvider(
                new ReflectionCompositeDelegateFactory(),
                BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public
                );

            CommandFormatter = new CompositeCommandFormatter(typeProvider, compositeStorageFactory);
            EventFormatter   = new CompositeEventFormatter(typeProvider, compositeStorageFactory, new List <ICompositeFormatterExtender>()
            {
                new UserKeyEventExtender()
            });

            commandDispatcher = new PersistentCommandDispatcher(new SerialCommandDistributor(), new EmptyCommandStore(), CommandFormatter);

            OutcomeRepository = new AggregateRootRepository <Outcome>(
                EventStore,
                EventFormatter,
                new ReflectionAggregateRootFactory <Outcome>(),
                eventDispatcher,
                new NoSnapshotProvider(),
                new EmptySnapshotStore()
                );

            CategoryRepository = new AggregateRootRepository <Category>(
                EventStore,
                EventFormatter,
                new ReflectionAggregateRootFactory <Category>(),
                eventDispatcher,
                new NoSnapshotProvider(),
                new EmptySnapshotStore()
                );

            CurrencyListRepository = new AggregateRootRepository <CurrencyList>(
                EventStore,
                EventFormatter,
                new ReflectionAggregateRootFactory <CurrencyList>(),
                eventDispatcher,
                new NoSnapshotProvider(),
                new EmptySnapshotStore()
                );

            Money.BootstrapTask bootstrapTask = new Money.BootstrapTask(
                commandDispatcher.Handlers,
                Factory.Instance(OutcomeRepository),
                Factory.Instance(CategoryRepository),
                Factory.Instance(CurrencyListRepository)
                );
            bootstrapTask.Initialize();
        }
 public EnvelopeMetadataProcessingFormatter(ICompositeTypeProvider provider, IFactory <ICompositeStorage> storageFactory)
     : base(provider, storageFactory)
 {
 }
 /// <summary>
 /// Creates new instance.
 /// </summary>
 /// <param name="provider">The provider for reading composite type definitions.</param>
 /// <param name="storageFactory">The factory for storage.</param>
 public CompositeEventFormatter(ICompositeTypeProvider provider, IFactory <ICompositeStorage> storageFactory)
 {
     envelopeFormatter = new EnvelopeFormatter(new Formatter(provider, storageFactory));
 }
예제 #10
0
        private void Domain(IServiceProvider provider)
        {
            Converts.Repository
            .AddStringTo <int>(Int32.TryParse)
            .AddStringTo <bool>(Boolean.TryParse)
            .AddEnumSearchHandler(false)
            .AddJsonEnumSearchHandler()
            .AddJsonPrimitivesSearchHandler()
            .AddJsonObjectSearchHandler()
            .AddJsonKey()
            .AddJsonTimeSpan()
            .Add(new ColorConverter())
            .AddToStringSearchHandler();

            var eventSourcingContextFactory = provider.GetRequiredService <IFactory <EventSourcingContext> >();

            eventStore      = new EntityEventStore(eventSourcingContextFactory);
            eventDispatcher = new PersistentEventDispatcher(new EmptyEventStore());
            eventDispatcher.DispatcherExceptionHandlers.Add(exceptionHandlerBuilder);
            eventDispatcher.EventExceptionHandlers.Add(exceptionHandlerBuilder);

            IFactory <ICompositeStorage> compositeStorageFactory = Factory.Default <JsonCompositeStorage>();

            typeProvider = new ReflectionCompositeTypeProvider(
                new ReflectionCompositeDelegateFactory(),
                BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public
                );

            commandFormatter = new CompositeCommandFormatter(typeProvider, compositeStorageFactory);
            eventFormatter   = new CompositeEventFormatter(typeProvider, compositeStorageFactory, new List <ICompositeFormatterExtender>()
            {
                new UserKeyEventExtender()
            });
            queryFormatter     = new CompositeListFormatter(typeProvider, compositeStorageFactory, logFactory);
            exceptionFormatter = new CompositeExceptionFormatter(typeProvider, compositeStorageFactory);

            commandDispatcher = new PersistentCommandDispatcher(new SerialCommandDistributor(), new EmptyCommandStore(), commandFormatter);
            commandDispatcher.DispatcherExceptionHandlers.Add(exceptionHandlerBuilder);
            commandDispatcher.CommandExceptionHandlers.Add(exceptionHandlerBuilder);

            queryDispatcher = new DefaultQueryDispatcher();

            var snapshotProvider = new NoSnapshotProvider();
            var snapshotStore    = new EmptySnapshotStore();

            var outcomeRepository = new AggregateRootRepository <Outcome>(
                eventStore,
                eventFormatter,
                new ReflectionAggregateRootFactory <Outcome>(),
                eventDispatcher,
                snapshotProvider,
                snapshotStore
                );

            var expenseTemplateRepository = new AggregateRootRepository <ExpenseTemplate>(
                eventStore,
                eventFormatter,
                new ReflectionAggregateRootFactory <ExpenseTemplate>(),
                eventDispatcher,
                snapshotProvider,
                snapshotStore
                );

            var incomeRepository = new AggregateRootRepository <Income>(
                eventStore,
                eventFormatter,
                new ReflectionAggregateRootFactory <Income>(),
                eventDispatcher,
                snapshotProvider,
                snapshotStore
                );

            var categoryRepository = new AggregateRootRepository <Category>(
                eventStore,
                eventFormatter,
                new ReflectionAggregateRootFactory <Category>(),
                eventDispatcher,
                snapshotProvider,
                snapshotStore
                );

            var currencyListRepository = new AggregateRootRepository <CurrencyList>(
                eventStore,
                eventFormatter,
                new ReflectionAggregateRootFactory <CurrencyList>(),
                eventDispatcher,
                snapshotProvider,
                snapshotStore
                );

            Money.BootstrapTask bootstrapTask = new Money.BootstrapTask(
                commandDispatcher.Handlers,
                Factory.Instance(outcomeRepository),
                Factory.Instance(expenseTemplateRepository),
                Factory.Instance(incomeRepository),
                Factory.Instance(categoryRepository),
                Factory.Instance(currencyListRepository)
                );

            bootstrapTask.Initialize();

            ServiceProvider serviceProvider = services.BuildServiceProvider();
            UserHandler     userHandler     = new UserHandler(
                serviceProvider.GetRequiredService <UserManager <User> >(),
                serviceProvider.GetRequiredService <IFactory <AccountContext> >(),
                eventDispatcher,
                allowedUserPropertyKeys
                );

            commandDispatcher.Handlers.AddAll(userHandler);
            queryDispatcher.AddAll(userHandler);
        }
예제 #11
0
 public CompositeExceptionFormatter(ICompositeTypeProvider provider, IFactory <ICompositeStorage> storageFactory)
     : base(provider, storageFactory)
 {
 }
예제 #12
0
 public CompositeTypeFormatterFactory(ICompositeTypeProvider typeProvider)
 {
     Ensure.NotNull(typeProvider, "typeProvider");
     this.typeProvider = typeProvider;
 }
예제 #13
0
 public EnvelopeMetadataProcessingFormatter(ICompositeTypeProvider provider, IFactory <ICompositeStorage> storageFactory, IEnumerable <ICompositeFormatterExtender> extenders)
     : base(provider, storageFactory)
 {
     Ensure.NotNull(extenders, "extenders");
     this.extenders = extenders;
 }
예제 #14
0
 public EnvelopeMetadataProcessingFormatter(ICompositeTypeProvider provider, IFactory <ICompositeStorage> storageFactory, params ICompositeFormatterExtender[] extenders)
     : this(provider, storageFactory, (IEnumerable <ICompositeFormatterExtender>)extenders)
 {
 }