{"record":{"id":"69c84ba6160d286b","repo":"RicoSuter/NSwag","slug":"document","errorCode":null,"errorMessage":"document","messagePattern":"document","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/NSwag.Core/OpenApiSchemaResolver.cs","lineNumber":30,"sourceCode":"namespace NSwag\n{\n    /// <summary>Appends a JSON Schema to the Definitions of a Swagger document.</summary>\n    public class OpenApiSchemaResolver : JsonSchemaResolver\n    {\n        private readonly ITypeNameGenerator _typeNameGenerator;\n\n        private OpenApiDocument Document => (OpenApiDocument)RootObject;\n\n        /// <summary>Initializes a new instance of the <see cref=\"OpenApiSchemaResolver\" /> class.</summary>\n        /// <param name=\"document\">The Swagger document.</param>\n        /// <param name=\"settings\">The settings.</param>\n        /// <exception cref=\"ArgumentNullException\"><paramref name=\"document\" /> is <see langword=\"null\" /></exception>\n        public OpenApiSchemaResolver(OpenApiDocument document, JsonSchemaGeneratorSettings settings)\n            : base(document, settings)\n        {\n            if (document == null)\n            {\n                throw new ArgumentNullException(nameof(document));\n            }\n\n            _typeNameGenerator = settings.TypeNameGenerator;\n        }\n\n        /// <summary>Appends the schema to the root object.</summary>\n        /// <param name=\"schema\">The schema to append.</param>\n        /// <param name=\"typeNameHint\">The type name hint.</param>\n        public override void AppendSchema(JsonSchema schema, string typeNameHint)\n        {\n            if (!Document.Definitions.Values.Contains(schema))\n            {\n                var typeName = _typeNameGenerator.Generate(schema, typeNameHint, Document.Definitions.Keys);\n                Document.Definitions[typeName] = schema;\n            }\n        }\n    }\n}","sourceCodeStart":12,"sourceCodeEnd":48,"githubUrl":"https://github.com/RicoSuter/NSwag/blob/63daf8fcc3a25151b62eb4b326a1e8ea048a0d41/src/NSwag.Core/OpenApiSchemaResolver.cs#L12-L48","documentation":"The OpenApiSchemaResolver constructor throws ArgumentNullException when the document parameter is null. The resolver needs a non-null OpenApiDocument to append generated schemas to its root and inherits base-class behavior that also depends on the document.","triggerScenarios":"Constructing OpenApiSchemaResolver with a null document, e.g. when document generation failed earlier and the null was propagated into schema resolution.","commonSituations":"Custom generator pipelines that build the resolver manually, or passing a document variable that was never assigned after an async load.","solutions":["Ensure the OpenApiDocument is successfully created before constructing the resolver","Guard: if (document == null) handle/throw a descriptive error before construction","Rely on high-level generator APIs (OpenApiDocumentGenerator) which construct the resolver internally"],"exampleFix":"// before\nvar resolver = new OpenApiSchemaResolver(document, settings);\n// after\nif (document == null)\n    throw new InvalidOperationException(\"Document must be loaded before schema resolution\");\nvar resolver = new OpenApiSchemaResolver(document, settings);","handlingStrategy":"validation","validationCode":"if (document == null) throw new InvalidOperationException(\"Document not loaded\");\nvar resolver = new OpenApiSchemaResolver(document, settings);","typeGuard":"bool ready = document is OpenApiDocument;","tryCatchPattern":"try { resolver = new OpenApiSchemaResolver(document, settings); } catch (ArgumentNullException) { /* load document first */ }","preventionTips":["Always construct the document via await OpenApiDocument.FromJsonAsync or the factory before schema resolution","Avoid manual resolver construction; use the generator pipelines"],"tags":["nswag","null-argument","constructor"],"backgroundTag":"null-argument","analyzedSha":"63daf8fcc3a25151b62eb4b326a1e8ea048a0d41","analyzedAt":"2026-09-14T11:38:15.205Z","contentChangedAt":"2026-09-14T11:38:15.205Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}