public override AclPermissionItem Read()

in csharp/Microsoft.Azure.Databricks.Client/Converters/AclPermissionItemConverter.cs [28:79]


    public override AclPermissionItem Read(ref Utf8JsonReader reader, Type typeToConvert,
        JsonSerializerOptions options)
    {
        var aclItemNode = JsonNode.Parse(ref reader)!.AsObject();

        AclPermissionItem aclItem;

        if (aclItemNode.TryGetPropertyValue("user_name", out var userName))
        {
            aclItem = new UserAclItem
            {
                Principal = userName!.GetValue<string>()
            };
        }
        else if (aclItemNode.TryGetPropertyValue("group_name", out var groupName))
        {
            aclItem = new GroupAclItem
            {
                Principal = groupName!.GetValue<string>()
            };
        }
        else if (aclItemNode.TryGetPropertyValue("service_principal_name", out var servicePrincipalName))
        {
            aclItem = new ServicePrincipalAclItem
            {
                Principal = servicePrincipalName!.GetValue<string>()
            };
        }
        else
        {
            throw new NotImplementedException(
                $"JsonConverter not implemented for node {aclItemNode.ToJsonString()}");
        }

        if (aclItemNode.ContainsKey("all_permissions"))
        {
            var permissionNode = aclItemNode["all_permissions"]![0]!.AsObject();
            aclItem.PermissionLevel = permissionNode["permission_level"]!.Deserialize<PermissionLevel>(options);
            aclItem.Inherited = permissionNode.TryGetPropertyValue("inherited", out var inherited) &&
                                inherited!.GetValue<bool>();
            aclItem.InheritedFromObject =
                permissionNode.TryGetPropertyValue("inherited_from_object", out var inheritedFrom)
                    ? inheritedFrom!.Deserialize<IEnumerable<string>>(options)
                    : Enumerable.Empty<string>();
        }
        else
        {
            aclItem.PermissionLevel = aclItemNode["permission_level"]!.Deserialize<PermissionLevel>(options);
        }

        return aclItem;
    }