Skip to content

Commit 2707493

Browse files
committed
Code cleanup
1 parent 5fd6039 commit 2707493

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

src/Microsoft.OpenApi/Validations/Rules/OpenApiSchemaRules.cs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,13 @@ public static class OpenApiSchemaRules
6868

6969
if (schema.Reference != null && schema.Discriminator != null)
7070
{
71-
var discriminator = schema.Discriminator?.PropertyName;
72-
var schemaReferenceId = schema.Reference.Id;
71+
var discriminatorName = schema.Discriminator?.PropertyName;
7372

74-
if (!ValidateChildSchemaAgainstDiscriminator(schema, discriminator, schemaReferenceId, context))
73+
if (!ValidateChildSchemaAgainstDiscriminator(schema, discriminatorName))
7574
{
7675
context.CreateError(nameof(ValidateSchemaDiscriminator),
7776
string.Format(SRResource.Validation_SchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator,
78-
schemaReferenceId, discriminator));
77+
schema.Reference.Id, discriminatorName));
7978
}
8079
}
8180

@@ -86,51 +85,52 @@ public static class OpenApiSchemaRules
8685
/// Validates the property name in the discriminator against the ones present in the children schema
8786
/// </summary>
8887
/// <param name="schema">The parent schema.</param>
89-
/// <param name="discriminator">Adds support for polymorphism. The discriminator is an object name that is used to differentiate
88+
/// <param name="discriminatorName">Adds support for polymorphism. The discriminator is an object name that is used to differentiate
9089
/// between other schemas which may satisfy the payload description.</param>
91-
/// <param name="schemaReferenceId"></param>
92-
/// <param name="context">A validation context.</param>
93-
public static bool ValidateChildSchemaAgainstDiscriminator(OpenApiSchema schema, string discriminator, string schemaReferenceId, IValidationContext context)
90+
public static bool ValidateChildSchemaAgainstDiscriminator(OpenApiSchema schema, string discriminatorName)
9491
{
9592
bool containsDiscriminator = false;
9693

97-
if (!schema.Required.Contains(discriminator))
94+
if (!schema.Required?.Contains(discriminatorName) ?? false)
9895
{
9996
// recursively check nested schema.OneOf, schema.AnyOf or schema.AllOf and their required fields for the discriminator
10097
if (schema.OneOf.Count != 0)
10198
{
102-
return TraverseSchemaElements(discriminator, schema.OneOf, schemaReferenceId, context, containsDiscriminator);
99+
return TraverseSchemaElements(discriminatorName, schema.OneOf, ref containsDiscriminator);
103100
}
104101
if (schema.AnyOf.Count != 0)
105102
{
106-
return TraverseSchemaElements(discriminator, schema.AnyOf, schemaReferenceId, context, containsDiscriminator);
103+
return TraverseSchemaElements(discriminatorName, schema.AnyOf, ref containsDiscriminator);
107104
}
108105
if (schema.AllOf.Count != 0)
109106
{
110-
return TraverseSchemaElements(discriminator, schema.AllOf, schemaReferenceId, context, containsDiscriminator);
107+
return TraverseSchemaElements(discriminatorName, schema.AllOf, ref containsDiscriminator);
111108
}
112109
}
110+
else
111+
{
112+
return true;
113+
}
113114

114115
return containsDiscriminator;
115116
}
116117

117118
/// <summary>
118119
/// Traverses the schema elements and checks whether the schema contains the discriminator.
119120
/// </summary>
120-
/// <param name="discriminator">Adds support for polymorphism. The discriminator is an object name that is used to differentiate
121+
/// <param name="discriminatorName">Adds support for polymorphism. The discriminator is an object name that is used to differentiate
121122
/// between other schemas which may satisfy the payload description.</param>
122123
/// <param name="childSchema">The child schema.</param>
123-
/// <param name="schemaReferenceId"> The schema reference Id.</param>
124-
/// <param name="context"> A validation context.</param>
125124
/// <param name="containsDiscriminator">Tracks whether the discriminator is present.</param>
126125
/// <returns></returns>
127-
public static bool TraverseSchemaElements(string discriminator, IList<OpenApiSchema> childSchema, string schemaReferenceId, IValidationContext context, bool containsDiscriminator)
126+
public static bool TraverseSchemaElements(string discriminatorName, IList<OpenApiSchema> childSchema, ref bool containsDiscriminator)
128127
{
129128
foreach (var childItem in childSchema)
130129
{
131-
if (!childItem.Properties.ContainsKey(discriminator) && !childItem.Required.Contains(discriminator))
130+
if ((!childItem.Properties?.ContainsKey(discriminatorName) ?? false) &&
131+
(!childItem.Required?.Contains(discriminatorName) ?? false))
132132
{
133-
return ValidateChildSchemaAgainstDiscriminator(childItem, discriminator, schemaReferenceId, context);
133+
return ValidateChildSchemaAgainstDiscriminator(childItem, discriminatorName);
134134
}
135135
else
136136
{

0 commit comments

Comments
 (0)