Skip to content

Commit 578e587

Browse files
authored
Merge pull request #417 from wpbrown/master
Use context specific storage for param parsing
2 parents 9c83df3 + c86d29b commit 578e587

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

src/Microsoft.OpenApi.Readers/V2/OpenApiParameterDeserializer.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ namespace Microsoft.OpenApi.Readers.V2
1616
/// </summary>
1717
internal static partial class OpenApiV2Deserializer
1818
{
19-
private static bool _isBodyOrFormData;
20-
2119
private static readonly FixedFieldMap<OpenApiParameter> _parameterFixedFields =
2220
new FixedFieldMap<OpenApiParameter>
2321
{
@@ -232,11 +230,11 @@ private static void ProcessIn(OpenApiParameter o, ParseNode n)
232230
switch (value)
233231
{
234232
case "body":
235-
_isBodyOrFormData = true;
233+
n.Context.SetTempStorage(TempStorageKeys.ParameterIsBodyOrFormData, true);
236234
n.Context.SetTempStorage(TempStorageKeys.BodyParameter, o);
237235
break;
238236
case "formData":
239-
_isBodyOrFormData = true;
237+
n.Context.SetTempStorage(TempStorageKeys.ParameterIsBodyOrFormData, true);
240238
var formParameters = n.Context.GetFromTempStorage<List<OpenApiParameter>>("formParameters");
241239
if (formParameters == null)
242240
{
@@ -265,7 +263,7 @@ public static OpenApiParameter LoadParameter(ParseNode node)
265263
public static OpenApiParameter LoadParameter(ParseNode node, bool loadRequestBody)
266264
{
267265
// Reset the local variables every time this method is called.
268-
_isBodyOrFormData = false;
266+
node.Context.SetTempStorage(TempStorageKeys.ParameterIsBodyOrFormData, false);
269267

270268
var mapNode = node.CheckMapNode("parameter");
271269

@@ -290,12 +288,13 @@ public static OpenApiParameter LoadParameter(ParseNode node, bool loadRequestBod
290288
node.Context.SetTempStorage("schema", null);
291289
}
292290

293-
if (_isBodyOrFormData && !loadRequestBody)
291+
bool isBodyOrFormData = (bool)node.Context.GetFromTempStorage<object>(TempStorageKeys.ParameterIsBodyOrFormData);
292+
if (isBodyOrFormData && !loadRequestBody)
294293
{
295294
return null; // Don't include Form or Body parameters when normal parameters are loaded.
296295
}
297296

298-
if (loadRequestBody && !_isBodyOrFormData)
297+
if (loadRequestBody && !isBodyOrFormData)
299298
{
300299
return null; // Don't include non-Body or non-Form parameters when request bodies are loaded.
301300
}

src/Microsoft.OpenApi.Readers/V2/TempStorageKeys.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@ internal static class TempStorageKeys
1515
public const string OperationConsumes = "operationConsumes";
1616
public const string GlobalConsumes = "globalConsumes";
1717
public const string GlobalProduces = "globalProduces";
18+
public const string ParameterIsBodyOrFormData = "parameterIsBodyOrFormData";
1819
}
1920
}

0 commit comments

Comments
 (0)