From b84c16945a9a18f7b30caffcaa4012102083836a Mon Sep 17 00:00:00 2001 From: i-moonlight Date: Tue, 19 Dec 2023 18:32:33 +0100 Subject: [PATCH] Add SchemaGeneratorFactory property to OpenApiDocumentGeneratorSettings, #4524 --- src/NSwag.Generation/OpenApiDocumentGenerator.cs | 3 ++- src/NSwag.Generation/OpenApiDocumentGeneratorSettings.cs | 4 ++++ src/NSwag.Generation/OpenApiSchemaGenerator.cs | 7 ++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/NSwag.Generation/OpenApiDocumentGenerator.cs b/src/NSwag.Generation/OpenApiDocumentGenerator.cs index 47ea6bf17..424a5c501 100644 --- a/src/NSwag.Generation/OpenApiDocumentGenerator.cs +++ b/src/NSwag.Generation/OpenApiDocumentGenerator.cs @@ -25,7 +25,8 @@ public class OpenApiDocumentGenerator /// The schema resolver. public OpenApiDocumentGenerator(OpenApiDocumentGeneratorSettings settings, JsonSchemaResolver schemaResolver) { - SchemaGenerator = new OpenApiSchemaGenerator(settings); + SchemaGenerator = settings.SchemaGeneratorFactory(); + _schemaResolver = schemaResolver; _settings = settings; } diff --git a/src/NSwag.Generation/OpenApiDocumentGeneratorSettings.cs b/src/NSwag.Generation/OpenApiDocumentGeneratorSettings.cs index 70c9b7079..94fabeb21 100644 --- a/src/NSwag.Generation/OpenApiDocumentGeneratorSettings.cs +++ b/src/NSwag.Generation/OpenApiDocumentGeneratorSettings.cs @@ -23,9 +23,13 @@ public class OpenApiDocumentGeneratorSettings /// Initializes a new instance of the class. public OpenApiDocumentGeneratorSettings() { + SchemaGeneratorFactory = () => new OpenApiSchemaGenerator(this); DefaultResponseReferenceTypeNullHandling = ReferenceTypeNullHandling.NotNull; } + /// Gets or sets the JSON Schema generator factory (default: new instance of . + public Func SchemaGeneratorFactory { get; set; } + /// public JsonSchemaGeneratorSettings SchemaSettings { get; set; } = new SystemTextJsonSchemaGeneratorSettings { diff --git a/src/NSwag.Generation/OpenApiSchemaGenerator.cs b/src/NSwag.Generation/OpenApiSchemaGenerator.cs index 2131ac8cd..eb1ebc906 100644 --- a/src/NSwag.Generation/OpenApiSchemaGenerator.cs +++ b/src/NSwag.Generation/OpenApiSchemaGenerator.cs @@ -21,12 +21,13 @@ public class OpenApiSchemaGenerator : JsonSchemaGenerator /// Initializes a new instance of the class. /// The settings. - public OpenApiSchemaGenerator(OpenApiDocumentGeneratorSettings settings) : base(settings.SchemaSettings) + public OpenApiSchemaGenerator(OpenApiDocumentGeneratorSettings settings) + : base(settings.SchemaSettings) { } /// Generates the properties for the given type and schema. - /// The type desription. + /// The type description. /// The properties /// The schema resolver. /// @@ -51,7 +52,7 @@ protected override void GenerateObject(JsonSchema schema, JsonTypeDescription ty } } - /// Generetes a schema directly or referenced for the requested schema type; also adds nullability if required. + /// Generates a schema directly or referenced for the requested schema type; also adds nullability if required. /// The resulted schema type which may reference the actual schema. /// The type of the schema to generate. /// Specifies whether the property, parameter or requested schema type is nullable.