mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-16 09:35:36 -05:00
Move unused forked code to external directory (#1192)
* Move unused forked code to external directory * Fix SLN build errors * Add back resource provider core since it's referenced by main resource provider project * Update PackageProjects step of pipeline
This commit is contained in:
118
external/Microsoft.SqlTools.DataProtocol.Contracts/ServerCapabilities/Workspace.cs
vendored
Normal file
118
external/Microsoft.SqlTools.DataProtocol.Contracts/ServerCapabilities/Workspace.cs
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
//
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
//
|
||||
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace Microsoft.SqlTools.DataProtocol.Contracts.ServerCapabilities
|
||||
{
|
||||
public class WorkspaceCapabilities
|
||||
{
|
||||
/// <summary>
|
||||
/// Options specific to workspace folders the server supports
|
||||
/// </summary>
|
||||
public WorkspaceFolderCapabilities WorkspaceFolders { get; set; }
|
||||
}
|
||||
|
||||
public class WorkspaceFolderCapabilities
|
||||
{
|
||||
/// <summary>
|
||||
/// Whether or not the server supports multiple workspace folders
|
||||
/// </summary>
|
||||
public bool? Supported { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether the server wants to receive workspace folder change notifications
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// If a string is provided, the string is treated as an ID under which the notification is
|
||||
/// registered on the client side. The ID can be used to unregister for these events using
|
||||
/// the client/unregisterCapability request
|
||||
/// </remarks>
|
||||
public WorkspaceChangeNotification ChangeNotifications { get; set; }
|
||||
}
|
||||
|
||||
[JsonConverter(typeof(WorkspaceChangeNotificationJsonConverter))]
|
||||
public class WorkspaceChangeNotification
|
||||
{
|
||||
public bool BooleanValue { get; }
|
||||
|
||||
public string UnregisterId { get; }
|
||||
|
||||
private WorkspaceChangeNotification(bool booleanValue, string unregisterId)
|
||||
{
|
||||
BooleanValue = booleanValue;
|
||||
UnregisterId = unregisterId;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Indicates that this server can accept notifications that the workspace has changed
|
||||
/// </summary>
|
||||
public static WorkspaceChangeNotification True => new WorkspaceChangeNotification(true, null);
|
||||
|
||||
/// <summary>
|
||||
/// Indicates that this server cannot accept notifications that the workspace has changed
|
||||
/// </summary>
|
||||
public static WorkspaceChangeNotification False => new WorkspaceChangeNotification(false, null);
|
||||
|
||||
/// <summary>
|
||||
/// Indicates that this server can accept notifications that the workspace has changed but
|
||||
/// reserves the right to unsubscribe from receiving workspace change notifications
|
||||
/// </summary>
|
||||
/// <param name="unregisterId">ID to use when unregistering for workspace change notifications</param>
|
||||
public static WorkspaceChangeNotification WithId(string unregisterId)
|
||||
{
|
||||
return unregisterId == null ? null : new WorkspaceChangeNotification(true, unregisterId);
|
||||
}
|
||||
}
|
||||
|
||||
internal class WorkspaceChangeNotificationJsonConverter : JsonConverter
|
||||
{
|
||||
public override bool CanRead => true;
|
||||
public override bool CanWrite => true;
|
||||
|
||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
writer.WriteNull();
|
||||
return;
|
||||
}
|
||||
|
||||
WorkspaceChangeNotification castValue = (WorkspaceChangeNotification) value;
|
||||
if (castValue.UnregisterId != null)
|
||||
{
|
||||
writer.WriteValue(castValue.UnregisterId);
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteValue(castValue.BooleanValue);
|
||||
}
|
||||
}
|
||||
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
||||
{
|
||||
JToken jToken = JToken.Load(reader);
|
||||
if (jToken.Type == JTokenType.Null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (jToken.Type == JTokenType.Boolean)
|
||||
{
|
||||
return jToken.Value<bool>()
|
||||
? WorkspaceChangeNotification.True
|
||||
: WorkspaceChangeNotification.False;
|
||||
}
|
||||
|
||||
return WorkspaceChangeNotification.WithId(jToken.Value<string>());
|
||||
}
|
||||
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
return objectType == typeof(WorkspaceChangeNotificationJsonConverter);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user