public IEnumerable <IHandlerPostProcessor> FindPostProcessor(ILspHandlerDescriptor descriptor, object parameters, object response) { if (descriptor.Method == DocumentNames.CodeLens || descriptor.Method == DocumentNames.Completion) { _logger.LogTrace("Using handler {Method}:{Handler}", descriptor.Method, descriptor.Handler.GetType().FullName); yield return(this); } }
public IEnumerable <IHandlerPreProcessor> FindPreProcessor(ILspHandlerDescriptor descriptor, object parameters) { if (parameters is ICanBeResolved canBeResolved) { _logger.LogTrace("Using handler {Method}:{Handler}", descriptor.Method, descriptor.Handler.GetType().FullName); yield return(this); } }
public bool AllowsDynamicRegistration(ILspHandlerDescriptor descriptor) { if (descriptor.HasCapability && _supports.TryGetValue(descriptor.CapabilityType, out var capability)) { if (capability is DynamicCapability dc) { return(dc.DynamicRegistration); } } return(false); }
public void SetCapability(ILspHandlerDescriptor descriptor, IJsonRpcHandler handler) { if (!descriptor.HasCapability) { return; } if (_supports.TryGetValue(descriptor.CapabilityType, out var capability)) { SetCapabilityInnerMethod .MakeGenericMethod(descriptor.CapabilityType) .Invoke(null, new[] { handler, capability }); } }
public object Process(ILspHandlerDescriptor descriptor, object parameters) { if (parameters is ICanBeResolved canBeResolved) { string handlerType = null; if (canBeResolved.Data != null && canBeResolved.Data.Type == JTokenType.Object) { handlerType = canBeResolved.Data?[PrivateHandlerTypeName]?.ToString(); } if (!string.IsNullOrWhiteSpace(handlerType)) { canBeResolved.Data = canBeResolved.Data["data"]; } } return(parameters); }
public object Process(ILspHandlerDescriptor descriptor, object parameters, object response) { // Only pin the handler type, if we know the source handler (codelens) is also the resolver. if (response is IEnumerable <ICanBeResolved> canBeResolveds && descriptor.CanBeResolvedHandlerType.GetTypeInfo().IsAssignableFrom(descriptor.Handler.GetType())) { _logger.LogTrace("Updating Resolve items with wrapped data for {Method}:{Handler}", descriptor.Method, descriptor.Handler.GetType().FullName); foreach (var item in canBeResolveds) { // Originally we were going to change Data to be a JObject instead of JToken // This allows us to leave data alone by simply wrapping it // Since we're always going to intercept these items, we can control this. var data = new JObject(); data["data"] = item.Data; data[PrivateHandlerTypeName] = descriptor.Handler.GetType().FullName; item.Data = data; } } return(response); }
public ResolveCommandPipeline(IRequestContext context, ILogger <ResolveCommandPipeline <TRequest, TResponse> > logger) { _logger = logger; _descriptor = context.Descriptor as ILspHandlerDescriptor; }
public object Process(ILspHandlerDescriptor descriptor, object parameters, object response) { _descriptor = descriptor; return(response); }
// ReSharper disable once UnusedParameter.Local // ReSharper disable once UnusedMember.Local public bool AllowsDynamicRegistration(ILspHandlerDescriptor descriptor) => false;
public void SetCapability(ILspHandlerDescriptor descriptor, IJsonRpcHandler handler) { }
public static IJsonRpcHandler InitializeHandler(ILspHandlerDescriptor descriptor, ISupportedCapabilities supportedCapabilities, IJsonRpcHandler handler) { supportedCapabilities.SetCapability(descriptor, handler); return(handler); }
// ReSharper disable once UnusedParameter.Local // ReSharper disable once UnusedMember.Local public bool AllowsDynamicRegistration(ILspHandlerDescriptor descriptor) { return(false); }