Fix issue 1665: prevent sending null error message

This commit is contained in:
Troy Dai 2016-03-02 22:53:20 -08:00
parent d918d527bd
commit 81baacd641
9 changed files with 28 additions and 28 deletions

View file

@ -18,13 +18,13 @@ namespace Microsoft.DotNet.ProjectModel.Server.Messengers
Equals(local.CompilerOptions, remote.CompilerOptions); Equals(local.CompilerOptions, remote.CompilerOptions);
} }
protected override object CreatePayload(ProjectContextSnapshot local) protected override void SendPayload(ProjectContextSnapshot local, Action<object> send)
{ {
return new CompilationOptionsMessage send(new CompilationOptionsMessage
{ {
Framework = local.TargetFramework.ToPayload(), Framework = local.TargetFramework.ToPayload(),
Options = local.CompilerOptions Options = local.CompilerOptions
}; });
} }
protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote) protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote)

View file

@ -22,14 +22,14 @@ namespace Microsoft.DotNet.ProjectModel.Server.Messengers
Enumerable.SequenceEqual(local.Dependencies, remote.Dependencies); Enumerable.SequenceEqual(local.Dependencies, remote.Dependencies);
} }
protected override object CreatePayload(ProjectContextSnapshot local) protected override void SendPayload(ProjectContextSnapshot local, Action<object> send)
{ {
return new DependenciesMessage send(new DependenciesMessage
{ {
Framework = local.TargetFramework.ToPayload(), Framework = local.TargetFramework.ToPayload(),
RootDependency = local.RootDependency, RootDependency = local.RootDependency,
Dependencies = local.Dependencies Dependencies = local.Dependencies
}; });
} }
protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote) protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote)

View file

@ -19,11 +19,11 @@ namespace Microsoft.DotNet.ProjectModel.Server.Messengers
Enumerable.SequenceEqual(local.DependencyDiagnostics, remote.DependencyDiagnostics); Enumerable.SequenceEqual(local.DependencyDiagnostics, remote.DependencyDiagnostics);
} }
protected override object CreatePayload(ProjectContextSnapshot local) protected override void SendPayload(ProjectContextSnapshot local, Action<object> send)
{ {
return new DiagnosticsListMessage( send(new DiagnosticsListMessage(
local.DependencyDiagnostics, local.DependencyDiagnostics,
local.TargetFramework?.ToPayload()); local.TargetFramework?.ToPayload()));
} }
protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote) protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote)

View file

@ -16,9 +16,12 @@ namespace Microsoft.DotNet.ProjectModel.Server.Messengers
return remote != null && Equals(local.GlobalErrorMessage, remote.GlobalErrorMessage); return remote != null && Equals(local.GlobalErrorMessage, remote.GlobalErrorMessage);
} }
protected override object CreatePayload(ProjectSnapshot local) protected override void SendPayload(ProjectSnapshot local, Action<object> send)
{ {
return local.GlobalErrorMessage; if (local.GlobalErrorMessage != null)
{
send(local.GlobalErrorMessage);
}
} }
protected override void SetValue(ProjectSnapshot local, ProjectSnapshot remote) protected override void SetValue(ProjectSnapshot local, ProjectSnapshot remote)

View file

@ -22,16 +22,13 @@ namespace Microsoft.DotNet.ProjectModel.Server.Messengers
{ {
if (!CheckDifference(local, remote)) if (!CheckDifference(local, remote))
{ {
var payload = CreatePayload(local); SendPayload(local, payload => _transmit(MessageType, payload));
_transmit(MessageType, payload);
SetValue(local, remote); SetValue(local, remote);
} }
} }
protected abstract void SetValue(T local, T remote); protected abstract void SetValue(T local, T remote);
protected abstract object CreatePayload(T local); protected abstract void SendPayload(T local, Action<object> send);
protected abstract bool CheckDifference(T local, T remote); protected abstract bool CheckDifference(T local, T remote);
} }
} }

View file

@ -19,9 +19,9 @@ namespace Microsoft.DotNet.ProjectModel.Server.Messengers
Enumerable.SequenceEqual(local.ProjectDiagnostics, remote.ProjectDiagnostics); Enumerable.SequenceEqual(local.ProjectDiagnostics, remote.ProjectDiagnostics);
} }
protected override object CreatePayload(ProjectSnapshot local) protected override void SendPayload(ProjectSnapshot local, Action<object> send)
{ {
return new DiagnosticsListMessage(local.ProjectDiagnostics); send(new DiagnosticsListMessage(local.ProjectDiagnostics));
} }
protected override void SetValue(ProjectSnapshot local, ProjectSnapshot remote) protected override void SetValue(ProjectSnapshot local, ProjectSnapshot remote)

View file

@ -26,9 +26,9 @@ namespace Microsoft.DotNet.ProjectModel.Server.Messengers
Enumerable.SequenceEqual(local.ProjectSearchPaths, remote.ProjectSearchPaths); Enumerable.SequenceEqual(local.ProjectSearchPaths, remote.ProjectSearchPaths);
} }
protected override object CreatePayload(ProjectSnapshot local) protected override void SendPayload(ProjectSnapshot local, Action<object> send)
{ {
return new ProjectInformationMessage(local.Project, local.GlobalJsonPath, local.ProjectSearchPaths); send(new ProjectInformationMessage(local.Project, local.GlobalJsonPath, local.ProjectSearchPaths));
} }
protected override void SetValue(ProjectSnapshot local, ProjectSnapshot remote) protected override void SetValue(ProjectSnapshot local, ProjectSnapshot remote)

View file

@ -22,14 +22,14 @@ namespace Microsoft.DotNet.ProjectModel.Server.Messengers
Enumerable.SequenceEqual(local.ProjectReferences, remote.ProjectReferences); Enumerable.SequenceEqual(local.ProjectReferences, remote.ProjectReferences);
} }
protected override object CreatePayload(ProjectContextSnapshot local) protected override void SendPayload(ProjectContextSnapshot local, Action<object> send)
{ {
return new ReferencesMessage send(new ReferencesMessage
{ {
Framework = local.TargetFramework.ToPayload(), Framework = local.TargetFramework.ToPayload(),
ProjectReferences = local.ProjectReferences, ProjectReferences = local.ProjectReferences,
FileReferences = local.FileReferences FileReferences = local.FileReferences
}; });
} }
protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote) protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote)

View file

@ -20,14 +20,14 @@ namespace Microsoft.DotNet.ProjectModel.Server.Messengers
Enumerable.SequenceEqual(local.SourceFiles, remote.SourceFiles); Enumerable.SequenceEqual(local.SourceFiles, remote.SourceFiles);
} }
protected override object CreatePayload(ProjectContextSnapshot local) protected override void SendPayload(ProjectContextSnapshot local, Action<object> send)
{ {
return new SourcesMessage send(new SourcesMessage
{ {
Framework = local.TargetFramework.ToPayload(), Framework = local.TargetFramework.ToPayload(),
Files = local.SourceFiles, Files = local.SourceFiles,
GeneratedFiles = new Dictionary<string, string>() GeneratedFiles = new Dictionary<string, string>()
}; });
} }
protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote) protected override void SetValue(ProjectContextSnapshot local, ProjectContextSnapshot remote)