in src/Microsoft.Extensions.Configuration.AzureAppConfiguration/FeatureManagement/FeatureManagementKeyValueAdapter.cs [965:1046]
private FeatureGroupAllocation ParseFeatureGroupAllocation(ref Utf8JsonReader reader, string settingKey)
{
var featureGroupAllocation = new FeatureGroupAllocation();
while (reader.Read() && reader.TokenType != JsonTokenType.EndObject)
{
if (reader.TokenType != JsonTokenType.PropertyName)
{
continue;
}
string groupAllocationPropertyName = reader.GetString();
switch (groupAllocationPropertyName)
{
case FeatureManagementConstants.Variant:
{
if (reader.Read() && reader.TokenType == JsonTokenType.String)
{
featureGroupAllocation.Variant = reader.GetString();
}
else if (reader.TokenType != JsonTokenType.Null)
{
throw CreateFeatureFlagFormatException(
FeatureManagementConstants.Variant,
settingKey,
reader.TokenType.ToString(),
JsonTokenType.String.ToString());
}
break;
}
case FeatureManagementConstants.Groups:
{
if (reader.Read() && reader.TokenType == JsonTokenType.StartArray)
{
List<string> groups = new List<string>();
int i = 0;
while (reader.Read() && reader.TokenType != JsonTokenType.EndArray)
{
if (reader.TokenType == JsonTokenType.String)
{
groups.Add(reader.GetString());
}
else if (reader.TokenType != JsonTokenType.Null)
{
throw CreateFeatureFlagFormatException(
$"{FeatureManagementConstants.Groups}[{i}]",
settingKey,
reader.TokenType.ToString(),
JsonTokenType.String.ToString());
}
i++;
}
featureGroupAllocation.Groups = groups;
}
else if (reader.TokenType != JsonTokenType.Null)
{
throw CreateFeatureFlagFormatException(
FeatureManagementConstants.Groups,
settingKey,
reader.TokenType.ToString(),
JsonTokenType.StartArray.ToString());
}
break;
}
default:
reader.Skip();
break;
}
}
return featureGroupAllocation;
}