コード例 #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));
        }
コード例 #2
0
ファイル: TestUtils.cs プロジェクト: umakers/squidex
        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);
        }
コード例 #3
0
        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");
        }
コード例 #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");
        }
コード例 #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");
        }
コード例 #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]}");
        }
コード例 #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]}");
        }
コード例 #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>();
        }
コード例 #9
0
        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;
        }
コード例 #10
0
ファイル: JsonHelper.cs プロジェクト: squidexcontrib/sendgrid
        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
            });
        }
コード例 #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;
        }
コード例 #12
0
ファイル: RuleService.cs プロジェクト: jrlost/squidex
        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;
        }
コード例 #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));
        }
コード例 #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);
        }
コード例 #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);
        }
コード例 #16
0
        public DefaultEventDataFormatter(TypeNameRegistry typeNameRegistry, IJsonSerializer serializer)
        {
            this.typeNameRegistry = typeNameRegistry;

            this.serializer = serializer;
        }
コード例 #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);
        }
コード例 #18
0
 public void Map(TypeNameRegistry typeNameRegistry)
 {
     typeNameRegistry.MapUnmapped(typeof(T).Assembly);
 }
コード例 #19
0
        protected HistoryEventsCreatorBase(TypeNameRegistry typeNameRegistry)
        {
            Guard.NotNull(typeNameRegistry, nameof(typeNameRegistry));

            this.typeNameRegistry = typeNameRegistry;
        }
コード例 #20
0
ファイル: JsonHelper.cs プロジェクト: uzbekdev1/squidex
        public static IJsonSerializer CreateSerializer(TypeNameRegistry typeNameRegistry = null)
        {
            var serializerSettings = DefaultSettings(typeNameRegistry);

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

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

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

            this.typeNameRegistry = typeNameRegistry;
        }