Skip to content

Commit 2611c9a

Browse files
authored
Update XAML EA to use DocumentUri instead of System.Uri (dotnet#78555)
Remove usages of System.Uri in the Xaml EA APIs. Requires a dual insertion with Xaml https://devdiv.visualstudio.com/DevDiv/_git/VS/pullrequest/636295
2 parents f4e6964 + 9eb1da4 commit 2611c9a

File tree

7 files changed

+32
-29
lines changed

7 files changed

+32
-29
lines changed

src/Tools/ExternalAccess/Xaml/External/ConversionHelpers.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77
using System.Linq;
88
using Microsoft.CodeAnalysis.LanguageServer;
99
using Microsoft.CodeAnalysis.QuickInfo;
10+
using Roslyn.LanguageServer.Protocol;
1011
using LSP = Roslyn.LanguageServer.Protocol;
1112

1213
namespace Microsoft.CodeAnalysis.ExternalAccess.Xaml;
1314

1415
internal static class ConversionHelpers
1516
{
16-
public static Uri CreateAbsoluteUri(string absolutePath)
17-
=> ProtocolConversions.CreateAbsoluteUri(absolutePath);
17+
public static DocumentUri CreateAbsoluteDocumentUri(string absolutePath)
18+
=> ProtocolConversions.CreateAbsoluteDocumentUri(absolutePath);
1819

1920
public static (string content, bool isMarkdown) CreateMarkdownContent(TextDocument document, QuickInfoItem info, XamlRequestContext context)
2021
{

src/Tools/ExternalAccess/Xaml/External/IResolveCachedDataService.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// See the LICENSE file in the project root for more information.
44

55
using System;
6+
using Roslyn.LanguageServer.Protocol;
67

78
namespace Microsoft.CodeAnalysis.ExternalAccess.Xaml;
89

@@ -14,6 +15,6 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.Xaml;
1415
/// </remarks>
1516
internal interface IResolveCachedDataService
1617
{
17-
object ToResolveData(object data, Uri uri);
18-
(object? data, Uri? uri) FromResolveData(object? resolveData);
18+
object ToResolveData(object data, DocumentUri uri);
19+
(object? data, DocumentUri? uri) FromResolveData(object? resolveData);
1920
}

src/Tools/ExternalAccess/Xaml/External/ResolveDataConversions.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,24 @@ internal static class ResolveDataConversions
1717
private record DataResolveData(object Data, LSP.TextDocumentIdentifier Document) : DocumentResolveData(Document);
1818
private record DataIdResolveData(long DataId, LSP.TextDocumentIdentifier Document) : DocumentResolveData(Document);
1919

20-
public static object ToResolveData(object data, Uri uri)
21-
=> new DataResolveData(data, new LSP.TextDocumentIdentifier { DocumentUri = new(uri) });
20+
public static object ToResolveData(object data, DocumentUri uri)
21+
=> new DataResolveData(data, new LSP.TextDocumentIdentifier { DocumentUri = uri });
2222

23-
public static (object? data, Uri? uri) FromResolveData(object? requestData)
23+
public static (object? data, DocumentUri? uri) FromResolveData(object? requestData)
2424
{
2525
Contract.ThrowIfNull(requestData);
2626
var resolveData = JsonSerializer.Deserialize<DataResolveData>((JsonElement)requestData);
27-
return (resolveData?.Data, resolveData?.Document.DocumentUri.GetRequiredParsedUri());
27+
return (resolveData?.Data, resolveData?.Document.DocumentUri);
2828
}
2929

30-
internal static object ToCachedResolveData(object data, Uri uri, ResolveDataCache resolveDataCache)
30+
internal static object ToCachedResolveData(object data, DocumentUri uri, ResolveDataCache resolveDataCache)
3131
{
3232
var dataId = resolveDataCache.UpdateCache(data);
3333

34-
return new DataIdResolveData(dataId, new LSP.TextDocumentIdentifier { DocumentUri = new(uri) });
34+
return new DataIdResolveData(dataId, new LSP.TextDocumentIdentifier { DocumentUri = uri });
3535
}
3636

37-
internal static (object? data, Uri? uri) FromCachedResolveData(object? lspData, ResolveDataCache resolveDataCache)
37+
internal static (object? data, DocumentUri? uri) FromCachedResolveData(object? lspData, ResolveDataCache resolveDataCache)
3838
{
3939
DataIdResolveData? resolveData;
4040
if (lspData is JsonElement token)
@@ -50,6 +50,6 @@ internal static (object? data, Uri? uri) FromCachedResolveData(object? lspData,
5050
var data = resolveDataCache.GetCachedEntry(resolveData.DataId);
5151
var document = resolveData.Document;
5252

53-
return (data, document.DocumentUri.GetRequiredParsedUri());
53+
return (data, document.DocumentUri);
5454
}
5555
}

src/Tools/ExternalAccess/Xaml/External/XamlRequestContext.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
using System;
66
using Microsoft.CodeAnalysis.LanguageServer.Handler;
7+
using Roslyn.LanguageServer.Protocol;
78
using LSP = Roslyn.LanguageServer.Protocol;
89

910
namespace Microsoft.CodeAnalysis.ExternalAccess.Xaml;
@@ -27,14 +28,14 @@ private XamlRequestContext(RequestContext context)
2728
[Obsolete("Use ClientCapabilities instead.")]
2829
public readonly IClientCapabilityProvider ClientCapabilityProvider => new ClientCapabilityProvider(_context.GetRequiredClientCapabilities());
2930

30-
public object ToCachedResolveData(object data, Uri uri)
31+
public object ToCachedResolveData(object data, DocumentUri uri)
3132
{
3233
var resolveDataCache = _context.GetRequiredLspService<ResolveDataCache>();
3334

3435
return ResolveDataConversions.ToCachedResolveData(data, uri, resolveDataCache);
3536
}
3637

37-
public (object? data, Uri? uri) FromCachedResolveData(object? lspData)
38+
public (object? data, DocumentUri? uri) FromCachedResolveData(object? lspData)
3839
{
3940
var resolveDataCache = _context.GetRequiredLspService<ResolveDataCache>();
4041

src/Tools/ExternalAccess/Xaml/External/XamlRequestHandlerBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ public XamlRequestHandlerBase(IXamlRequestHandler<TRequest, TResponse>? xamlRequ
2525
public bool RequiresLSPSolution => true;
2626

2727
public LSP.TextDocumentIdentifier GetTextDocumentIdentifier(TRequest request)
28-
=> new() { DocumentUri = new(GetTextDocumentUri(request)) };
28+
=> new() { DocumentUri = GetTextDocumentUri(request) };
2929

30-
public abstract Uri GetTextDocumentUri(TRequest request);
30+
public abstract DocumentUri GetTextDocumentUri(TRequest request);
3131

3232
public Task<TResponse> HandleRequestAsync(TRequest request, RequestContext context, CancellationToken cancellationToken)
3333
=> _xamlRequestHandler?.HandleRequestAsync(request, XamlRequestContext.FromRequestContext(context), cancellationToken) ?? throw new NotImplementedException();

src/Tools/ExternalAccess/Xaml/External/XamlRequestHandlerFactoryBase.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System;
66
using Microsoft.CodeAnalysis.LanguageServer;
77
using Microsoft.CodeAnalysis.LanguageServer.Handler;
8+
using Roslyn.LanguageServer.Protocol;
89

910
namespace Microsoft.CodeAnalysis.ExternalAccess.Xaml;
1011

@@ -36,10 +37,10 @@ public ResolveCachedDataService(ResolveDataCache resolveDataCache)
3637
_resolveDataCache = resolveDataCache ?? throw new ArgumentNullException(nameof(resolveDataCache));
3738
}
3839

39-
public object ToResolveData(object data, Uri uri)
40+
public object ToResolveData(object data, DocumentUri uri)
4041
=> ResolveDataConversions.ToCachedResolveData(data, uri, _resolveDataCache);
4142

42-
public (object? data, Uri? uri) FromResolveData(object? lspData)
43+
public (object? data, DocumentUri? uri) FromResolveData(object? lspData)
4344
=> ResolveDataConversions.FromCachedResolveData(lspData, _resolveDataCache);
4445
}
4546
}

src/Tools/ExternalAccess/Xaml/InternalAPI.Unshipped.txt

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
abstract Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestHandlerBase<TRequest, TResponse>.GetTextDocumentUri(TRequest request) -> System.Uri!
1+
abstract Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestHandlerBase<TRequest, TResponse>.GetTextDocumentUri(TRequest request) -> Roslyn.LanguageServer.Protocol.DocumentUri!
22
abstract Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestHandlerFactoryBase<TRequest, TResponse>.CreateHandler(Microsoft.CodeAnalysis.ExternalAccess.Xaml.IXamlRequestHandler<TRequest, TResponse>? xamlRequestHandler, Microsoft.CodeAnalysis.ExternalAccess.Xaml.IResolveCachedDataService! resolveDataService) -> Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestHandlerBase<TRequest, TResponse>!
33
const Microsoft.CodeAnalysis.ExternalAccess.Xaml.Constants.DiagnosticSourceProviderName = "XamlDiagnostics" -> string!
44
const Microsoft.CodeAnalysis.ExternalAccess.Xaml.StringConstants.FactoryMethodMessage = "This factory method only provides services for the MEF export provider." -> string!
@@ -40,8 +40,8 @@ Microsoft.CodeAnalysis.ExternalAccess.Xaml.ILocationService.GetSymbolLocationsAs
4040
Microsoft.CodeAnalysis.ExternalAccess.Xaml.IOnInitializedService
4141
Microsoft.CodeAnalysis.ExternalAccess.Xaml.IOnInitializedService.OnInitializedAsync(Microsoft.CodeAnalysis.ExternalAccess.Xaml.IClientRequestManager! clientRequestManager, Roslyn.LanguageServer.Protocol.ClientCapabilities! clientCapabilities, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
4242
Microsoft.CodeAnalysis.ExternalAccess.Xaml.IResolveCachedDataService
43-
Microsoft.CodeAnalysis.ExternalAccess.Xaml.IResolveCachedDataService.FromResolveData(object? resolveData) -> (object? data, System.Uri? uri)
44-
Microsoft.CodeAnalysis.ExternalAccess.Xaml.IResolveCachedDataService.ToResolveData(object! data, System.Uri! uri) -> object!
43+
Microsoft.CodeAnalysis.ExternalAccess.Xaml.IResolveCachedDataService.FromResolveData(object? resolveData) -> (object? data, Roslyn.LanguageServer.Protocol.DocumentUri? uri)
44+
Microsoft.CodeAnalysis.ExternalAccess.Xaml.IResolveCachedDataService.ToResolveData(object! data, Roslyn.LanguageServer.Protocol.DocumentUri! uri) -> object!
4545
Microsoft.CodeAnalysis.ExternalAccess.Xaml.IXamlDiagnosticSource
4646
Microsoft.CodeAnalysis.ExternalAccess.Xaml.IXamlDiagnosticSource.GetDiagnosticsAsync(Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext context, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.Diagnostic!>>!
4747
Microsoft.CodeAnalysis.ExternalAccess.Xaml.IXamlRequestHandler<TRequest, TResponse>
@@ -67,9 +67,9 @@ Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlMethodAttribute.XamlMethodAttribu
6767
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext
6868
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext.ClientCapabilities.get -> Roslyn.LanguageServer.Protocol.ClientCapabilities!
6969
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext.ClientCapabilityProvider.get -> Microsoft.CodeAnalysis.ExternalAccess.Xaml.IClientCapabilityProvider!
70-
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext.FromCachedResolveData(object? lspData) -> (object? data, System.Uri? uri)
70+
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext.FromCachedResolveData(object? lspData) -> (object? data, Roslyn.LanguageServer.Protocol.DocumentUri? uri)
7171
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext.TextDocument.get -> Microsoft.CodeAnalysis.TextDocument?
72-
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext.ToCachedResolveData(object! data, System.Uri! uri) -> object!
72+
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext.ToCachedResolveData(object! data, Roslyn.LanguageServer.Protocol.DocumentUri! uri) -> object!
7373
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext.XamlRequestContext() -> void
7474
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestHandlerBase<TRequest, TResponse>
7575
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestHandlerBase<TRequest, TResponse>.GetTextDocumentIdentifier(TRequest request) -> Roslyn.LanguageServer.Protocol.TextDocumentIdentifier!
@@ -80,11 +80,10 @@ Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestHandlerBase<TRequest, TRes
8080
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestHandlerFactoryBase<TRequest, TResponse>
8181
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestHandlerFactoryBase<TRequest, TResponse>.CreateILspService(Microsoft.CodeAnalysis.LanguageServer.LspServices! lspServices, Microsoft.CodeAnalysis.LanguageServer.WellKnownLspServerKinds serverKind) -> Microsoft.CodeAnalysis.LanguageServer.ILspService!
8282
Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestHandlerFactoryBase<TRequest, TResponse>.XamlRequestHandlerFactoryBase(Microsoft.CodeAnalysis.ExternalAccess.Xaml.IXamlRequestHandler<TRequest, TResponse>? xamlRequestHandler) -> void
83-
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ConversionHelpers.CreateAbsoluteUri(string! absolutePath) -> System.Uri!
84-
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ConversionHelpers.CreateHoverResultAsync(Microsoft.CodeAnalysis.TextDocument! document, Microsoft.CodeAnalysis.QuickInfo.QuickInfoItem! info, Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext context, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task<Roslyn.LanguageServer.Protocol.Hover!>!
83+
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ConversionHelpers.CreateAbsoluteDocumentUri(string! absolutePath) -> Roslyn.LanguageServer.Protocol.DocumentUri!
8584
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ConversionHelpers.CreateMarkdownContent(Microsoft.CodeAnalysis.TextDocument! document, Microsoft.CodeAnalysis.QuickInfo.QuickInfoItem! info, Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext context) -> (string! content, bool isMarkdown)
86-
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ResolveDataConversions.FromCachedResolveData(object? lspData, Microsoft.CodeAnalysis.LanguageServer.Handler.ResolveDataCache! resolveDataCache) -> (object? data, System.Uri? uri)
87-
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ResolveDataConversions.FromResolveData(object? requestData) -> (object? data, System.Uri? uri)
88-
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ResolveDataConversions.ToCachedResolveData(object! data, System.Uri! uri, Microsoft.CodeAnalysis.LanguageServer.Handler.ResolveDataCache! resolveDataCache) -> object!
89-
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ResolveDataConversions.ToResolveData(object! data, System.Uri! uri) -> object!
85+
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ResolveDataConversions.FromCachedResolveData(object? lspData, Microsoft.CodeAnalysis.LanguageServer.Handler.ResolveDataCache! resolveDataCache) -> (object? data, Roslyn.LanguageServer.Protocol.DocumentUri? uri)
86+
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ResolveDataConversions.FromResolveData(object? requestData) -> (object? data, Roslyn.LanguageServer.Protocol.DocumentUri? uri)
87+
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ResolveDataConversions.ToCachedResolveData(object! data, Roslyn.LanguageServer.Protocol.DocumentUri! uri, Microsoft.CodeAnalysis.LanguageServer.Handler.ResolveDataCache! resolveDataCache) -> object!
88+
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.ResolveDataConversions.ToResolveData(object! data, Roslyn.LanguageServer.Protocol.DocumentUri! uri) -> object!
9089
static Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext.FromRequestContext(Microsoft.CodeAnalysis.LanguageServer.Handler.RequestContext context) -> Microsoft.CodeAnalysis.ExternalAccess.Xaml.XamlRequestContext

0 commit comments

Comments
 (0)