Exemple #1
0
        public static IJsonSerializer CreateSerializer(TypeNameHandling typeNameHandling = TypeNameHandling.Auto)
        {
            var typeNameRegistry =
                new TypeNameRegistry()
                .Map(new FieldRegistry())
                .Map(new RuleRegistry())
                .MapUnmapped(typeof(TestUtils).Assembly);

            var serializerSettings = new JsonSerializerSettings
            {
                SerializationBinder = new TypeNameSerializationBinder(typeNameRegistry),

                ContractResolver = new ConverterContractResolver(
                    new AppClientsConverter(),
                    new AppContributorsConverter(),
                    new AppPatternsConverter(),
                    new ClaimsPrincipalConverter(),
                    new ContentFieldDataConverter(),
                    new DomainIdConverter(),
                    new EnvelopeHeadersConverter(),
                    new FilterConverter(),
                    new InstantConverter(),
                    new JsonValueConverter(),
                    new LanguageConverter(),
                    new LanguagesConfigConverter(),
                    new NamedDomainIdConverter(),
                    new NamedGuidIdConverter(),
                    new NamedLongIdConverter(),
                    new NamedStringIdConverter(),
                    new PropertyPathConverter(),
                    new RefTokenConverter(),
                    new RolesConverter(),
                    new RuleConverter(),
                    new SchemaConverter(),
                    new StatusConverter(),
                    new StringEnumConverter(),
                    new WorkflowConverter(),
                    new WorkflowStepConverter()),

                TypeNameHandling = typeNameHandling
            };

            return(new NewtonsoftJsonSerializer(serializerSettings));
        }
Exemple #2
0
        public static JsonSerializerSettings CreateSerializerSettings(TypeNameHandling typeNameHandling = TypeNameHandling.Auto,
                                                                      JsonConverter?converter           = null)
        {
            var typeNameRegistry =
                new TypeNameRegistry()
                .Map(new FieldRegistry())
                .Map(new RuleRegistry())
                .MapUnmapped(typeof(TestUtils).Assembly);

            var serializerSettings = new JsonSerializerSettings
            {
                SerializationBinder = new TypeNameSerializationBinder(typeNameRegistry),

                ContractResolver = new ConverterContractResolver(
                    new ContentFieldDataConverter(),
                    new EnvelopeHeadersConverter(),
                    new JsonValueConverter(),
                    new StringEnumConverter(),
                    new SurrogateConverter <AppClients, AppClientsSurrogate>(),
                    new SurrogateConverter <AppContributors, AppContributorsSurrogate>(),
                    new SurrogateConverter <AppPatterns, AppPatternsSurrogate>(),
                    new SurrogateConverter <ClaimsPrincipal, ClaimsPrinicpalSurrogate>(),
                    new SurrogateConverter <FilterNode <IJsonValue>, JsonFilterSurrogate>(),
                    new SurrogateConverter <LanguageConfig, LanguageConfigSurrogate>(),
                    new SurrogateConverter <LanguagesConfig, LanguagesConfigSurrogate>(),
                    new SurrogateConverter <Roles, RolesSurrogate>(),
                    new SurrogateConverter <Rule, RuleSorrgate>(),
                    new SurrogateConverter <Schema, SchemaSurrogate>(),
                    new SurrogateConverter <Workflows, WorkflowsSurrogate>(),
                    new SurrogateConverter <WorkflowStep, WorkflowStepSurrogate>(),
                    new SurrogateConverter <WorkflowTransition, WorkflowTransitionSurrogate>(),
                    new WriteonlyGeoJsonConverter()),

                TypeNameHandling = typeNameHandling
            }.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);

            if (converter != null)
            {
                serializerSettings.Converters.Add(converter);
            }

            return(serializerSettings);
        }
        public static void Setup(TypeNameRegistry typeNameRegistry)
        {
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));

            var types = typeof(FieldRegistry).Assembly.GetTypes().Where(x => x.BaseType == typeof(FieldProperties));

            var supportedFields = new HashSet <Type>();

            foreach (var type in types)
            {
                if (supportedFields.Add(type))
                {
                    typeNameRegistry.Map(type);
                }
            }

            typeNameRegistry.MapObsolete(typeof(ReferencesFieldProperties), "References");
            typeNameRegistry.MapObsolete(typeof(DateTimeFieldProperties), "DateTime");
        }
Exemple #4
0
        public FieldRegistry(TypeNameRegistry typeNameRegistry)
        {
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));

            this.typeNameRegistry = typeNameRegistry;

            RegisterField <AssetsFieldProperties>();
            RegisterField <BooleanFieldProperties>();
            RegisterField <DateTimeFieldProperties>();
            RegisterField <GeolocationFieldProperties>();
            RegisterField <JsonFieldProperties>();
            RegisterField <NumberFieldProperties>();
            RegisterField <ReferencesFieldProperties>();
            RegisterField <StringFieldProperties>();
            RegisterField <TagsFieldProperties>();

            typeNameRegistry.MapObsolete(typeof(ReferencesFieldProperties), "DateTime");
            typeNameRegistry.MapObsolete(typeof(DateTimeFieldProperties), "References");
        }
Exemple #5
0
        public FieldRegistry(TypeNameRegistry typeNameRegistry)
        {
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));

            this.typeNameRegistry = typeNameRegistry;

            Add <BooleanFieldProperties>(
                (id, name, partitioning, properties) =>
                new BooleanField(id, name, partitioning, (BooleanFieldProperties)properties));

            Add <NumberFieldProperties>(
                (id, name, partitioning, properties) =>
                new NumberField(id, name, partitioning, (NumberFieldProperties)properties));

            Add <StringFieldProperties>(
                (id, name, partitioning, properties) =>
                new StringField(id, name, partitioning, (StringFieldProperties)properties));

            Add <JsonFieldProperties>(
                (id, name, partitioning, properties) =>
                new JsonField(id, name, partitioning, (JsonFieldProperties)properties));

            Add <AssetsFieldProperties>(
                (id, name, partitioning, properties) =>
                new AssetsField(id, name, partitioning, (AssetsFieldProperties)properties));

            Add <GeolocationFieldProperties>(
                (id, name, partitioning, properties) =>
                new GeolocationField(id, name, partitioning, (GeolocationFieldProperties)properties));

            Add <ReferencesFieldProperties>(
                (id, name, partitioning, properties) =>
                new ReferencesField(id, name, partitioning, (ReferencesFieldProperties)properties));

            Add <DateTimeFieldProperties>(
                (id, name, partitioning, properties) =>
                new DateTimeField(id, name, partitioning, (DateTimeFieldProperties)properties));

            typeNameRegistry.MapObsolete(typeof(ReferencesFieldProperties), "DateTime");

            typeNameRegistry.MapObsolete(typeof(DateTimeFieldProperties), "References");
        }
Exemple #6
0
        public SchemaHistoryEventsCreator(TypeNameRegistry typeNameRegistry)
            : base(typeNameRegistry)
        {
            AddEventMessage <SchemaCreated>(
                "created schema {[Name]}");

            AddEventMessage <SchemaUpdated>(
                "updated schema {[Name]}");

            AddEventMessage <SchemaDeleted>(
                "deleted schema {[Name]}");

            AddEventMessage <SchemaPublished>(
                "published schema {[Name]}");

            AddEventMessage <SchemaUnpublished>(
                "unpublished schema {[Name]}");

            AddEventMessage <FieldAdded>(
                "added field {[Field]} to schema {[Name]}");

            AddEventMessage <FieldDeleted>(
                "deleted field {[Field]} from schema {[Name]}");

            AddEventMessage <FieldDisabled>(
                "disabled field {[Field]} of schema {[Name]}");

            AddEventMessage <FieldEnabled>(
                "disabled field {[Field]} of schema {[Name]}");

            AddEventMessage <FieldHidden>(
                "has hidden field {[Field]} of schema {[Name]}");

            AddEventMessage <FieldShown>(
                "has shown field {[Field]} of schema {[Name]}");

            AddEventMessage <FieldUpdated>(
                "has updated field {[Field]} of schema {[Name]}");

            AddEventMessage <FieldDeleted>(
                "deleted field {[Field]} of schema {[Name]}");
        }
Exemple #7
0
        public AppHistoryEventsCreator(TypeNameRegistry typeNameRegistry)
            : base(typeNameRegistry)
        {
            AddEventMessage <AppContributorAssigned>(
                "assigned {user:[Contributor]} as {[Permission]}");

            AddEventMessage <AppContributorRemoved>(
                "removed {user:[Contributor]} from app");

            AddEventMessage <AppClientAttached>(
                "added client {[Id]} to app");

            AddEventMessage <AppClientRevoked>(
                "revoked client {[Id]}");

            AddEventMessage <AppClientUpdated>(
                "updated client {[Id]}");

            AddEventMessage <AppClientRenamed>(
                "renamed client {[Id]} to {[Name]}");

            AddEventMessage <AppLanguageAdded>(
                "added language {[Language]}");

            AddEventMessage <AppLanguageRemoved>(
                "removed language {[Language]}");

            AddEventMessage <AppLanguageUpdated>(
                "updated language {[Language]}");

            AddEventMessage <AppMasterLanguageSet>(
                "changed master language to {[Language]}");

            AddEventMessage <AppPatternAdded>(
                "added pattern {[Name]}");

            AddEventMessage <AppPatternDeleted>(
                "deleted pattern {[PatternId]}");

            AddEventMessage <AppPatternUpdated>(
                "updated pattern {[Name]}");
        }
Exemple #8
0
        public RecursiveDeleter(
            ICommandBus commandBus,
            IAssetRepository assetRepository,
            IAssetFolderRepository assetFolderRepository,
            TypeNameRegistry typeNameRegistry,
            ISemanticLog log)
        {
            Guard.NotNull(commandBus, nameof(commandBus));
            Guard.NotNull(assetRepository, nameof(assetRepository));
            Guard.NotNull(assetFolderRepository, nameof(assetFolderRepository));
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));
            Guard.NotNull(log, nameof(log));

            this.commandBus            = commandBus;
            this.assetRepository       = assetRepository;
            this.assetFolderRepository = assetFolderRepository;
            this.log = log;

            folderDeletedType = typeNameRegistry.GetName <AssetFolderDeleted>();
        }
        public WebhookEnqueuer(TypeNameRegistry typeNameRegistry,
                               IWebhookEventRepository webhookEventRepository,
                               IWebhookRepository webhookRepository,
                               IClock clock,
                               JsonSerializer webhookSerializer)
        {
            Guard.NotNull(webhookEventRepository, nameof(webhookEventRepository));
            Guard.NotNull(webhookSerializer, nameof(webhookSerializer));
            Guard.NotNull(webhookRepository, nameof(webhookRepository));
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));
            Guard.NotNull(clock, nameof(clock));

            this.webhookEventRepository = webhookEventRepository;
            this.webhookSerializer      = webhookSerializer;
            this.webhookRepository      = webhookRepository;

            this.clock = clock;

            this.typeNameRegistry = typeNameRegistry;
        }
Exemple #10
0
        public static JsonSerializerSettings DefaultSettings(TypeNameRegistry typeNameRegistry = null)
        {
            return(new JsonSerializerSettings
            {
                SerializationBinder = new TypeNameSerializationBinder(typeNameRegistry ?? new TypeNameRegistry()),

                ContractResolver = new ConverterContractResolver(
                    new ClaimsPrincipalConverter(),
                    new InstantConverter(),
                    new EnvelopeHeadersConverter(),
                    new JsonValueConverter(),
                    new LanguageConverter(),
                    new NamedGuidIdConverter(),
                    new NamedLongIdConverter(),
                    new NamedStringIdConverter(),
                    new RefTokenConverter(),
                    new StringEnumConverter()),

                TypeNameHandling = TypeNameHandling.Auto
            });
        }
Exemple #11
0
        public RuleService(
            IEnumerable <IRuleTriggerHandler> ruleTriggerHandlers,
            IEnumerable <IRuleActionHandler> ruleActionHandlers,
            IEventEnricher eventEnricher,
            IClock clock,
            TypeNameRegistry typeNameRegistry)
        {
            Guard.NotNull(ruleTriggerHandlers, nameof(ruleTriggerHandlers));
            Guard.NotNull(ruleActionHandlers, nameof(ruleActionHandlers));
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));
            Guard.NotNull(eventEnricher, nameof(eventEnricher));
            Guard.NotNull(clock, nameof(clock));

            this.typeNameRegistry = typeNameRegistry;

            this.ruleTriggerHandlers = ruleTriggerHandlers.ToDictionary(x => x.TriggerType);
            this.ruleActionHandlers  = ruleActionHandlers.ToDictionary(x => x.ActionType);

            this.eventEnricher = eventEnricher;

            this.clock = clock;
        }
Exemple #12
0
        public RuleService(
            IOptions <RuleOptions> ruleOptions,
            IEnumerable <IRuleTriggerHandler> ruleTriggerHandlers,
            IEnumerable <IRuleActionHandler> ruleActionHandlers,
            IEventEnricher eventEnricher,
            IJsonSerializer jsonSerializer,
            IClock clock,
            ILogger <RuleService> log,
            TypeNameRegistry typeNameRegistry)
        {
            this.typeNameRegistry = typeNameRegistry;

            this.ruleOptions         = ruleOptions.Value;
            this.ruleTriggerHandlers = ruleTriggerHandlers.ToDictionary(x => x.TriggerType);
            this.ruleActionHandlers  = ruleActionHandlers.ToDictionary(x => x.ActionType);
            this.eventEnricher       = eventEnricher;

            this.jsonSerializer = jsonSerializer;

            this.clock = clock;

            this.log = log;
        }
Exemple #13
0
        public FieldRegistry(TypeNameRegistry typeNameRegistry)
        {
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));

            this.typeNameRegistry = typeNameRegistry;

            Add <BooleanFieldProperties>(
                (id, name, p) => new BooleanField(id, name, (BooleanFieldProperties)p));

            Add <NumberFieldProperties>(
                (id, name, p) => new NumberField(id, name, (NumberFieldProperties)p));

            Add <StringFieldProperties>(
                (id, name, p) => new StringField(id, name, (StringFieldProperties)p));

            Add <DateTimeFieldProperties>(
                (id, name, p) => new DateTimeField(id, name, (DateTimeFieldProperties)p));

            Add <JsonFieldProperties>(
                (id, name, p) => new JsonField(id, name, (JsonFieldProperties)p));

            Add <GeolocationFieldProperties>(
                (id, name, p) => new GeolocationField(id, name, (GeolocationFieldProperties)p));
        }
Exemple #14
0
        private static JsonSerializerSettings CreateJsonSerializerSettings(TypeNameRegistry typeNameRegistry, FieldRegistry fieldRegistry)
        {
            var settings = new JsonSerializerSettings();

            settings.SerializationBinder = new TypeNameSerializationBinder(typeNameRegistry);

            settings.ContractResolver = new ConverterContractResolver(
                new AppClientsConverter(),
                new AppContributorsConverter(),
                new ClaimsPrincipalConverter(),
                new InstantConverter(),
                new LanguageConverter(),
                new LanguagesConfigConverter(),
                new NamedGuidIdConverter(),
                new NamedLongIdConverter(),
                new NamedStringIdConverter(),
                new PropertiesBagConverter <EnvelopeHeaders>(),
                new PropertiesBagConverter <PropertiesBag>(),
                new RefTokenConverter(),
                new RuleConverter(),
                new SchemaConverter(fieldRegistry),
                new StringEnumConverter());

            settings.NullValueHandling = NullValueHandling.Ignore;

            settings.DateFormatHandling = DateFormatHandling.IsoDateFormat;
            settings.DateParseHandling  = DateParseHandling.None;

            settings.TypeNameHandling = TypeNameHandling.Auto;

            settings.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);

            BsonJsonConvention.Register(JsonSerializer.Create(settings));

            return(settings);
        }
Exemple #15
0
        public MongoContentRepository(IMongoDatabase database, IAppProvider appProvider, IJsonSerializer serializer, ITextIndexer indexer, TypeNameRegistry typeNameRegistry)
        {
            Guard.NotNull(appProvider, nameof(appProvider));
            Guard.NotNull(database, nameof(database));
            Guard.NotNull(serializer, nameof(serializer));
            Guard.NotNull(indexer, nameof(indexer));
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));

            this.appProvider = appProvider;
            this.database    = database;
            this.indexer     = indexer;
            this.serializer  = serializer;

            typeAssetDeleted   = typeNameRegistry.GetName <AssetDeleted>();
            typeContentDeleted = typeNameRegistry.GetName <ContentDeleted>();

            contents = new MongoContentCollection(database, serializer, appProvider);
        }
Exemple #16
0
        public DefaultEventDataFormatter(TypeNameRegistry typeNameRegistry, IJsonSerializer serializer)
        {
            this.typeNameRegistry = typeNameRegistry;

            this.serializer = serializer;
        }
Exemple #17
0
        public WebhookInvoker(ISchemaWebhookRepository webhookRepository, JsonSerializer webhookSerializer, ISemanticLog log, TypeNameRegistry typeNameRegistry)
        {
            Guard.NotNull(webhookRepository, nameof(webhookRepository));
            Guard.NotNull(webhookSerializer, nameof(webhookSerializer));
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));
            Guard.NotNull(log, nameof(log));

            this.webhookRepository = webhookRepository;
            this.webhookSerializer = webhookSerializer;

            this.log = log;

            this.typeNameRegistry = typeNameRegistry;

            invokeBlock =
                new TransformBlock <InvocationRequest, InvocationResponse>(x => DispatchEventAsync(x),
                                                                           new ExecutionDataflowBlockOptions {
                MaxDegreeOfParallelism = 1, BoundedCapacity = 8
            });

            dumpBlock =
                new ActionBlock <InvocationResponse>(DumpAsync,
                                                     new ExecutionDataflowBlockOptions {
                MaxDegreeOfParallelism = 32, BoundedCapacity = 64
            });

            invokeBlock.LinkTo(dumpBlock,
                               new DataflowLinkOptions {
                PropagateCompletion = true
            }, x => x != null);
        }
Exemple #18
0
 public void Map(TypeNameRegistry typeNameRegistry)
 {
     typeNameRegistry.MapUnmapped(typeof(T).Assembly);
 }
        protected HistoryEventsCreatorBase(TypeNameRegistry typeNameRegistry)
        {
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));

            this.typeNameRegistry = typeNameRegistry;
        }
Exemple #20
0
        public static IJsonSerializer CreateSerializer(TypeNameRegistry typeNameRegistry = null)
        {
            var serializerSettings = DefaultSettings(typeNameRegistry);

            return(new NewtonsoftJsonSerializer(serializerSettings));
        }
Exemple #21
0
 public TypeNameSerializationBinder(TypeNameRegistry typeNameRegistry)
 {
     this.typeNameRegistry = typeNameRegistry;
 }
Exemple #22
0
        public AssetPermanentDeleterTests()
        {
            var typeNameRegistry = new TypeNameRegistry().Map(typeof(AssetDeleted));

            sut = new AssetPermanentDeleter(assetFiletore, typeNameRegistry);
        }
Exemple #23
0
        public RecursiveDeleterTests()
        {
            var typeNameRegistry = new TypeNameRegistry().Map(typeof(AssetFolderDeleted));

            sut = new RecursiveDeleter(commandBus, assetRepository, assetFolderRepository, typeNameRegistry, log);
        }
Exemple #24
0
        public TypeNameSerializationBinder(TypeNameRegistry typeNameRegistry)
        {
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));

            this.typeNameRegistry = typeNameRegistry;
        }