diff --git a/src/Microsoft.OpenApi.Readers/V2/OpenApiParameterDeserializer.cs b/src/Microsoft.OpenApi.Readers/V2/OpenApiParameterDeserializer.cs index b708576b0..601003862 100644 --- a/src/Microsoft.OpenApi.Readers/V2/OpenApiParameterDeserializer.cs +++ b/src/Microsoft.OpenApi.Readers/V2/OpenApiParameterDeserializer.cs @@ -16,8 +16,6 @@ namespace Microsoft.OpenApi.Readers.V2 /// internal static partial class OpenApiV2Deserializer { - private static bool _isBodyOrFormData; - private static readonly FixedFieldMap _parameterFixedFields = new FixedFieldMap { @@ -232,11 +230,11 @@ private static void ProcessIn(OpenApiParameter o, ParseNode n) switch (value) { case "body": - _isBodyOrFormData = true; + n.Context.SetTempStorage(TempStorageKeys.ParameterIsBodyOrFormData, true); n.Context.SetTempStorage(TempStorageKeys.BodyParameter, o); break; case "formData": - _isBodyOrFormData = true; + n.Context.SetTempStorage(TempStorageKeys.ParameterIsBodyOrFormData, true); var formParameters = n.Context.GetFromTempStorage>("formParameters"); if (formParameters == null) { @@ -265,7 +263,7 @@ public static OpenApiParameter LoadParameter(ParseNode node) public static OpenApiParameter LoadParameter(ParseNode node, bool loadRequestBody) { // Reset the local variables every time this method is called. - _isBodyOrFormData = false; + node.Context.SetTempStorage(TempStorageKeys.ParameterIsBodyOrFormData, false); var mapNode = node.CheckMapNode("parameter"); @@ -290,12 +288,13 @@ public static OpenApiParameter LoadParameter(ParseNode node, bool loadRequestBod node.Context.SetTempStorage("schema", null); } - if (_isBodyOrFormData && !loadRequestBody) + bool isBodyOrFormData = (bool)node.Context.GetFromTempStorage(TempStorageKeys.ParameterIsBodyOrFormData); + if (isBodyOrFormData && !loadRequestBody) { return null; // Don't include Form or Body parameters when normal parameters are loaded. } - if (loadRequestBody && !_isBodyOrFormData) + if (loadRequestBody && !isBodyOrFormData) { return null; // Don't include non-Body or non-Form parameters when request bodies are loaded. } diff --git a/src/Microsoft.OpenApi.Readers/V2/TempStorageKeys.cs b/src/Microsoft.OpenApi.Readers/V2/TempStorageKeys.cs index ef1bbf219..4e0e890a9 100644 --- a/src/Microsoft.OpenApi.Readers/V2/TempStorageKeys.cs +++ b/src/Microsoft.OpenApi.Readers/V2/TempStorageKeys.cs @@ -15,5 +15,6 @@ internal static class TempStorageKeys public const string OperationConsumes = "operationConsumes"; public const string GlobalConsumes = "globalConsumes"; public const string GlobalProduces = "globalProduces"; + public const string ParameterIsBodyOrFormData = "parameterIsBodyOrFormData"; } } \ No newline at end of file