From d75c2ccfa977f79f4b7830a0821f1d54af967c6a Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Thu, 13 Dec 2018 21:01:59 +0100 Subject: [PATCH] Discriminator fixes for json schema. --- .../Controllers/JsonInheritanceConverter.cs | 141 ------------------ .../Controllers/MyJsonInheritanceConverter.cs | 49 ++++++ .../Converters/RuleTriggerDtoFactory.cs | 6 +- .../Rules/Models/RuleActionProcessor.cs | 2 +- .../Rules/Models/RuleActionSerializer.cs | 2 +- .../Rules/Models/RuleTriggerDto.cs | 2 +- ...erDto.cs => AssetChangedRuleTriggerDto.cs} | 4 +- ...Dto.cs => ContentChangedRuleTriggerDto.cs} | 6 +- ... => ContentChangedRuleTriggerSchemaDto.cs} | 2 +- .../Schemas/Models/FieldPropertiesDto.cs | 2 +- .../Models/Fields/ArrayFieldPropertiesDto.cs | 2 - .../Models/Fields/AssetsFieldPropertiesDto.cs | 2 - .../Fields/BooleanFieldPropertiesDto.cs | 2 - .../Fields/DateTimeFieldPropertiesDto.cs | 2 - .../Fields/GeolocationFieldPropertiesDto.cs | 2 - .../Models/Fields/JsonFieldPropertiesDto.cs | 2 - .../Models/Fields/NumberFieldPropertiesDto.cs | 2 - .../Fields/ReferencesFieldPropertiesDto.cs | 2 - .../Models/Fields/StringFieldPropertiesDto.cs | 2 - .../Models/Fields/TagsFieldPropertiesDto.cs | 2 - .../Controllers/Schemas/SchemasController.cs | 2 +- 21 files changed, 61 insertions(+), 177 deletions(-) delete mode 100644 src/Squidex/Areas/Api/Controllers/JsonInheritanceConverter.cs create mode 100644 src/Squidex/Areas/Api/Controllers/MyJsonInheritanceConverter.cs rename src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/{AssetChangedTriggerDto.cs => AssetChangedRuleTriggerDto.cs} (91%) rename src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/{ContentChangedTriggerDto.cs => ContentChangedRuleTriggerDto.cs} (86%) rename src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/{ContentChangedTriggerSchemaDto.cs => ContentChangedRuleTriggerSchemaDto.cs} (96%) diff --git a/src/Squidex/Areas/Api/Controllers/JsonInheritanceConverter.cs b/src/Squidex/Areas/Api/Controllers/JsonInheritanceConverter.cs deleted file mode 100644 index b21fcef56..000000000 --- a/src/Squidex/Areas/Api/Controllers/JsonInheritanceConverter.cs +++ /dev/null @@ -1,141 +0,0 @@ -// ========================================================================== -// Squidex Headless CMS -// ========================================================================== -// Copyright (c) Squidex UG (haftungsbeschränkt) -// All rights reserved. Licensed under the MIT license. -// ========================================================================== - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using NJsonSchema.Annotations; - -#pragma warning disable SA1306 // Field names must begin with lower-case letter - -namespace Squidex.Areas.Api.Controllers -{ - public class JsonInheritanceConverter : JsonConverter - { - private readonly string discriminator; - private readonly Dictionary mapTypeToName = new Dictionary(StringComparer.OrdinalIgnoreCase); - private readonly Dictionary mapNameToType = new Dictionary(); - - [ThreadStatic] - private static bool IsReading; - - [ThreadStatic] - private static bool IsWriting; - - public string DiscriminatorName - { - get { return discriminator; } - } - - public override bool CanWrite - { - get - { - if (!IsWriting) - { - return true; - } - - return IsWriting = false; - } - } - - public override bool CanRead - { - get - { - if (!IsReading) - { - return true; - } - - return IsReading = false; - } - } - - public JsonInheritanceConverter(string discriminator, Type baseType) - : this(discriminator, baseType, null) - { - } - - protected JsonInheritanceConverter(string discriminator, Type baseType, IReadOnlyDictionary subTypes = null) - { - this.discriminator = discriminator; - - if (subTypes != null) - { - foreach (var subType in subTypes) - { - mapNameToType[subType.Value] = subType.Key; - mapTypeToName[subType.Key] = subType.Value; - } - } - else - { - foreach (var type in baseType.Assembly.GetTypes().Where(x => x != baseType && baseType.IsAssignableFrom(x))) - { - var name = type.GetTypeInfo().GetCustomAttribute()?.Name ?? type.Name; - - mapNameToType[type] = name; - mapTypeToName[name] = type; - } - } - } - - public override bool CanConvert(Type objectType) - { - return true; - } - - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - IsWriting = true; - try - { - var jsonObject = JObject.FromObject(value, serializer); - - jsonObject.AddFirst(new JProperty(discriminator, mapNameToType[value.GetType()])); - - writer.WriteToken(jsonObject.CreateReader()); - } - finally - { - IsWriting = false; - } - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - IsReading = true; - try - { - var jsonObject = serializer.Deserialize(reader); - - var subName = jsonObject[discriminator]?.Value(); - - if (subName == null) - { - return null; - } - - if (!mapTypeToName.TryGetValue(subName, out var subType)) - { - throw new InvalidOperationException($"Could not find subtype of '{objectType.Name}' with discriminator '{subName}'."); - } - - return serializer.Deserialize(jsonObject.CreateReader(), subType); - } - finally - { - IsReading = false; - } - } - } -} \ No newline at end of file diff --git a/src/Squidex/Areas/Api/Controllers/MyJsonInheritanceConverter.cs b/src/Squidex/Areas/Api/Controllers/MyJsonInheritanceConverter.cs new file mode 100644 index 000000000..27748dd35 --- /dev/null +++ b/src/Squidex/Areas/Api/Controllers/MyJsonInheritanceConverter.cs @@ -0,0 +1,49 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschränkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System; +using System.Collections.Generic; +using System.Linq; +using NJsonSchema.Converters; + +namespace Squidex.Areas.Api.Controllers +{ + public class MyJsonInheritanceConverter : JsonInheritanceConverter + { + private readonly IDictionary mapping; + private readonly Type baseType; + + public MyJsonInheritanceConverter(string discriminator, Type baseType) + : base(baseType, discriminator) + { + this.baseType = baseType; + } + + public MyJsonInheritanceConverter(string discriminator, Type baseType, IDictionary mapping) + : this(discriminator, baseType) + { + this.mapping = mapping; + } + + public override string GetDiscriminatorValue(Type type) + { + var result = type.Name; + + if (baseType != null) + { + var baseName = baseType.Name; + + if (result.EndsWith(baseName, StringComparison.CurrentCulture)) + { + return result.Substring(0, result.Length - baseName.Length); + } + } + + return mapping?.FirstOrDefault(x => x.Value == type).Key ?? result; + } + } +} \ No newline at end of file diff --git a/src/Squidex/Areas/Api/Controllers/Rules/Models/Converters/RuleTriggerDtoFactory.cs b/src/Squidex/Areas/Api/Controllers/Rules/Models/Converters/RuleTriggerDtoFactory.cs index cd75ac32b..cf2c3c4a2 100644 --- a/src/Squidex/Areas/Api/Controllers/Rules/Models/Converters/RuleTriggerDtoFactory.cs +++ b/src/Squidex/Areas/Api/Controllers/Rules/Models/Converters/RuleTriggerDtoFactory.cs @@ -28,14 +28,14 @@ namespace Squidex.Areas.Api.Controllers.Rules.Models.Converters public RuleTriggerDto Visit(AssetChangedTrigger trigger) { - return SimpleMapper.Map(trigger, new AssetChangedTriggerDto()); + return SimpleMapper.Map(trigger, new AssetChangedRuleTriggerDto()); } public RuleTriggerDto Visit(ContentChangedTrigger trigger) { - var schemas = trigger.Schemas.Select(x => SimpleMapper.Map(x, new ContentChangedTriggerSchemaDto())).ToArray(); + var schemas = trigger.Schemas.Select(x => SimpleMapper.Map(x, new ContentChangedRuleTriggerSchemaDto())).ToArray(); - return new ContentChangedTriggerDto { Schemas = schemas, HandleAll = trigger.HandleAll }; + return new ContentChangedRuleTriggerDto { Schemas = schemas, HandleAll = trigger.HandleAll }; } } } diff --git a/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleActionProcessor.cs b/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleActionProcessor.cs index 316d40781..339edef26 100644 --- a/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleActionProcessor.cs +++ b/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleActionProcessor.cs @@ -28,7 +28,7 @@ namespace Squidex.Areas.Api.Controllers.Rules.Models { var discriminator = new OpenApiDiscriminator { - JsonInheritanceConverter = new JsonInheritanceConverter("actionType", typeof(RuleAction)), + JsonInheritanceConverter = new MyJsonInheritanceConverter("actionType", typeof(RuleAction)), PropertyName = "actionType" }; diff --git a/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleActionSerializer.cs b/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleActionSerializer.cs index 9de13838a..8eb1d91f1 100644 --- a/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleActionSerializer.cs +++ b/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleActionSerializer.cs @@ -11,7 +11,7 @@ using Squidex.Extensions.Actions; namespace Squidex.Areas.Api.Controllers.Rules.Models { - public sealed class RuleActionSerializer : JsonInheritanceConverter + public sealed class RuleActionSerializer : MyJsonInheritanceConverter { public RuleActionSerializer() : base("actionType", typeof(RuleAction), RuleElementRegistry.Actions.ToDictionary(x => x.Key, x => x.Value.Type)) diff --git a/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleTriggerDto.cs b/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleTriggerDto.cs index f30b5d5e0..da5d5399d 100644 --- a/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleTriggerDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Rules/Models/RuleTriggerDto.cs @@ -13,7 +13,7 @@ using Squidex.Domain.Apps.Core.Rules; namespace Squidex.Areas.Api.Controllers.Rules.Models { - [JsonConverter(typeof(JsonInheritanceConverter), "triggerType", typeof(RuleTriggerDto))] + [JsonConverter(typeof(MyJsonInheritanceConverter), "triggerType", typeof(RuleTriggerDto))] [KnownType(nameof(Subtypes))] public abstract class RuleTriggerDto { diff --git a/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/AssetChangedTriggerDto.cs b/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/AssetChangedRuleTriggerDto.cs similarity index 91% rename from src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/AssetChangedTriggerDto.cs rename to src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/AssetChangedRuleTriggerDto.cs index 740e13fea..4a499124d 100644 --- a/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/AssetChangedTriggerDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/AssetChangedRuleTriggerDto.cs @@ -5,15 +5,13 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Rules; using Squidex.Domain.Apps.Core.Rules.Triggers; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Rules.Models.Triggers { - [JsonSchema("AssetChanged")] - public sealed class AssetChangedTriggerDto : RuleTriggerDto + public sealed class AssetChangedRuleTriggerDto : RuleTriggerDto { /// /// Determines whether to handle the event when an asset is created. diff --git a/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedTriggerDto.cs b/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedRuleTriggerDto.cs similarity index 86% rename from src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedTriggerDto.cs rename to src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedRuleTriggerDto.cs index 219d42c1a..107c7d548 100644 --- a/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedTriggerDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedRuleTriggerDto.cs @@ -7,7 +7,6 @@ using System.ComponentModel.DataAnnotations; using System.Linq; -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Rules; using Squidex.Domain.Apps.Core.Rules.Triggers; using Squidex.Infrastructure.Collections; @@ -15,14 +14,13 @@ using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Rules.Models.Triggers { - [JsonSchema("ContentChanged")] - public sealed class ContentChangedTriggerDto : RuleTriggerDto + public sealed class ContentChangedRuleTriggerDto : RuleTriggerDto { /// /// The schema settings. /// [Required] - public ContentChangedTriggerSchemaDto[] Schemas { get; set; } + public ContentChangedRuleTriggerSchemaDto[] Schemas { get; set; } /// /// Determines whether the trigger should handle all content changes events. diff --git a/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedTriggerSchemaDto.cs b/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedRuleTriggerSchemaDto.cs similarity index 96% rename from src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedTriggerSchemaDto.cs rename to src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedRuleTriggerSchemaDto.cs index 2a16e9639..9570a5182 100644 --- a/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedTriggerSchemaDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Rules/Models/Triggers/ContentChangedRuleTriggerSchemaDto.cs @@ -9,7 +9,7 @@ using System; namespace Squidex.Areas.Api.Controllers.Rules.Models.Triggers { - public sealed class ContentChangedTriggerSchemaDto + public sealed class ContentChangedRuleTriggerSchemaDto { /// /// The id of the schema. diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/FieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/FieldPropertiesDto.cs index ed0e6accc..e08a73b60 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/FieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/FieldPropertiesDto.cs @@ -14,7 +14,7 @@ using Squidex.Domain.Apps.Core.Schemas; namespace Squidex.Areas.Api.Controllers.Schemas.Models { - [JsonConverter(typeof(JsonInheritanceConverter), "fieldType", typeof(FieldPropertiesDto))] + [JsonConverter(typeof(MyJsonInheritanceConverter), "fieldType", typeof(FieldPropertiesDto))] [KnownType(nameof(Subtypes))] public abstract class FieldPropertiesDto { diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/ArrayFieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/ArrayFieldPropertiesDto.cs index b818b6815..08445816d 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/ArrayFieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/ArrayFieldPropertiesDto.cs @@ -5,13 +5,11 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields { - [JsonSchema("Array")] public sealed class ArrayFieldPropertiesDto : FieldPropertiesDto { /// diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/AssetsFieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/AssetsFieldPropertiesDto.cs index f3bdb67bd..30a43fd08 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/AssetsFieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/AssetsFieldPropertiesDto.cs @@ -5,14 +5,12 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure.Collections; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields { - [JsonSchema("Assets")] public sealed class AssetsFieldPropertiesDto : FieldPropertiesDto { /// diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/BooleanFieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/BooleanFieldPropertiesDto.cs index 7b92fccdb..1e3e8652f 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/BooleanFieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/BooleanFieldPropertiesDto.cs @@ -5,13 +5,11 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields { - [JsonSchema("Boolean")] public sealed class BooleanFieldPropertiesDto : FieldPropertiesDto { /// diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/DateTimeFieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/DateTimeFieldPropertiesDto.cs index 0340f7313..e776a0ecf 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/DateTimeFieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/DateTimeFieldPropertiesDto.cs @@ -5,14 +5,12 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using NJsonSchema.Annotations; using NodaTime; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields { - [JsonSchema("DateTime")] public sealed class DateTimeFieldPropertiesDto : FieldPropertiesDto { /// diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/GeolocationFieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/GeolocationFieldPropertiesDto.cs index 4ba929093..004d6c740 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/GeolocationFieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/GeolocationFieldPropertiesDto.cs @@ -5,13 +5,11 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields { - [JsonSchema("Geolocation")] public sealed class GeolocationFieldPropertiesDto : FieldPropertiesDto { /// diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/JsonFieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/JsonFieldPropertiesDto.cs index cae556336..2919d1370 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/JsonFieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/JsonFieldPropertiesDto.cs @@ -5,13 +5,11 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields { - [JsonSchema("Json")] public sealed class JsonFieldPropertiesDto : FieldPropertiesDto { public override FieldProperties ToProperties() diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/NumberFieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/NumberFieldPropertiesDto.cs index bc8c0d259..13629fe7a 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/NumberFieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/NumberFieldPropertiesDto.cs @@ -5,14 +5,12 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure.Collections; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields { - [JsonSchema("Number")] public sealed class NumberFieldPropertiesDto : FieldPropertiesDto { /// diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/ReferencesFieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/ReferencesFieldPropertiesDto.cs index e2b6dfada..07ee52dc5 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/ReferencesFieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/ReferencesFieldPropertiesDto.cs @@ -6,13 +6,11 @@ // ========================================================================== using System; -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields { - [JsonSchema("References")] public sealed class ReferencesFieldPropertiesDto : FieldPropertiesDto { /// diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/StringFieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/StringFieldPropertiesDto.cs index bf3817561..59af7bd68 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/StringFieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/StringFieldPropertiesDto.cs @@ -5,14 +5,12 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure.Collections; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields { - [JsonSchema("String")] public sealed class StringFieldPropertiesDto : FieldPropertiesDto { /// diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/TagsFieldPropertiesDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/TagsFieldPropertiesDto.cs index 777103f7c..449cdbf18 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/TagsFieldPropertiesDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/Fields/TagsFieldPropertiesDto.cs @@ -5,14 +5,12 @@ // All rights reserved. Licensed under the MIT license. // ========================================================================== -using NJsonSchema.Annotations; using Squidex.Domain.Apps.Core.Schemas; using Squidex.Infrastructure.Collections; using Squidex.Infrastructure.Reflection; namespace Squidex.Areas.Api.Controllers.Schemas.Models.Fields { - [JsonSchema("Tags")] public sealed class TagsFieldPropertiesDto : FieldPropertiesDto { /// diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs b/src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs index 86e5bdd96..79271b493 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs @@ -69,7 +69,7 @@ namespace Squidex.Areas.Api.Controllers.Schemas /// [HttpGet] [Route("apps/{app}/schemas/{name}/")] - [ProducesResponseType(typeof(SchemaDetailsDto[]), 200)] + [ProducesResponseType(typeof(SchemaDetailsDto), 200)] [ApiPermission(Permissions.AppCommon)] [ApiCosts(0)] public async Task GetSchema(string app, string name)