| File: LockFile\AssetsLogMessage.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.ProjectModel\NuGet.ProjectModel.csproj (NuGet.ProjectModel) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. #nullable disable using System; using System.Collections.Generic; using System.Diagnostics; using System.Text.Json.Serialization; using NuGet.Common; using NuGet.Shared; namespace NuGet.ProjectModel { [DebuggerDisplay("{Code} {Message}")] public partial class AssetsLogMessage : IAssetsLogMessage, IEquatable<IAssetsLogMessage> { [JsonConverter(typeof(JsonStringEnumConverter<NuGetLogCode>))] public NuGetLogCode Code { get; } [JsonConverter(typeof(JsonStringEnumConverter<LogLevel>))] public LogLevel Level { get; } public string Message { get; } public string ProjectPath { get; set; } [JsonIgnore] public WarningLevel WarningLevel { get; set; } = WarningLevel.Severe; //setting default to Severe as 0 implies show no warnings [JsonInclude] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] [JsonPropertyName("warningLevel")] internal WarningLevel? WarningLevelJson { get => Level == LogLevel.Warning ? WarningLevel : null; set { if (value.HasValue) { WarningLevel = value.Value; } } } public string FilePath { get; set; } public string LibraryId { get; set; } public IReadOnlyList<string> TargetGraphs { get; set; } [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] public int StartLineNumber { get; set; } [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] public int StartColumnNumber { get; set; } [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] public int EndLineNumber { get; set; } [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] public int EndColumnNumber { get; set; } public static IAssetsLogMessage Create(IRestoreLogMessage logMessage) { return new AssetsLogMessage(logMessage.Level, logMessage.Code, logMessage.Message) { ProjectPath = logMessage.ProjectPath, WarningLevel = logMessage.WarningLevel, FilePath = logMessage.FilePath, LibraryId = logMessage.LibraryId, TargetGraphs = logMessage.TargetGraphs, StartLineNumber = logMessage.StartLineNumber, StartColumnNumber = logMessage.StartColumnNumber, EndLineNumber = logMessage.EndLineNumber, EndColumnNumber = logMessage.EndColumnNumber }; } [JsonSerializable(typeof(AssetsLogMessage))] internal sealed partial class AssetsLogMessageSourceGen : JsonSerializerContext { } [JsonConstructor] internal AssetsLogMessage( LogLevel level, NuGetLogCode code, string message, string projectPath, string filePath, string libraryId, IReadOnlyList<string> targetGraphs, int startLineNumber, int startColumnNumber, int endLineNumber, int endColumnNumber) { Level = level; Code = code; Message = message; ProjectPath = projectPath; FilePath = filePath; LibraryId = libraryId; TargetGraphs = targetGraphs ?? new List<string>(); StartLineNumber = startLineNumber; StartColumnNumber = startColumnNumber; EndLineNumber = endLineNumber; EndColumnNumber = endColumnNumber; } public AssetsLogMessage(LogLevel logLevel, NuGetLogCode errorCode, string errorString, string targetGraph) { Level = logLevel; Code = errorCode; Message = errorString; if (!string.IsNullOrEmpty(targetGraph)) { TargetGraphs = new List<string> { targetGraph }; } } public AssetsLogMessage(LogLevel logLevel, NuGetLogCode errorCode, string errorString) : this(logLevel, errorCode, errorString, string.Empty) { } public bool Equals(IAssetsLogMessage other) { if (other == null) { return false; } if (ReferenceEquals(this, other)) { return true; } if (Level == other.Level && Code == other.Code && WarningLevel == other.WarningLevel && StartLineNumber == other.StartLineNumber && EndLineNumber == other.EndLineNumber && StartColumnNumber == other.StartColumnNumber && EndColumnNumber == other.EndColumnNumber && StringComparer.Ordinal.Equals(Message, other.Message) && StringComparer.Ordinal.Equals(ProjectPath, other.ProjectPath) && StringComparer.Ordinal.Equals(FilePath, other.FilePath) && StringComparer.Ordinal.Equals(LibraryId, other.LibraryId)) { return TargetGraphs.SequenceEqualWithNullCheck(other.TargetGraphs); } return false; } public override bool Equals(object other) { return Equals(other as IAssetsLogMessage); } public override int GetHashCode() { var combiner = new HashCodeCombiner(); combiner.AddStringIgnoreCase(Message); combiner.AddObject((int)Level); combiner.AddObject((int)Code); return combiner.CombinedHash; } } }