public ProjectConfigurationFileChangeDetector(
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            FilePathNormalizer filePathNormalizer,
            IEnumerable <IProjectConfigurationFileChangeListener> listeners,
            LanguageServerFeatureOptions languageServerFeatureOptions,
            ILoggerFactory loggerFactory = null)
        {
            if (projectSnapshotManagerDispatcher is null)
            {
                throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
            }

            if (filePathNormalizer is null)
            {
                throw new ArgumentNullException(nameof(filePathNormalizer));
            }

            if (listeners is null)
            {
                throw new ArgumentNullException(nameof(listeners));
            }

            if (languageServerFeatureOptions is null)
            {
                throw new ArgumentNullException(nameof(languageServerFeatureOptions));
            }

            _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher;
            _filePathNormalizer           = filePathNormalizer;
            _listeners                    = listeners;
            _languageServerFeatureOptions = languageServerFeatureOptions;
            _logger = loggerFactory?.CreateLogger <ProjectConfigurationFileChangeDetector>();
        }
示例#2
0
        protected AbstractTextDocumentPresentationEndpointBase(
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            DocumentResolver documentResolver,
            RazorDocumentMappingService razorDocumentMappingService,
            ClientNotifierServiceBase languageServer,
            DocumentVersionCache documentVersionCache,
            LanguageServerFeatureOptions languageServerFeatureOptions,
            ILogger logger)
        {
            if (projectSnapshotManagerDispatcher is null)
            {
                throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
            }

            if (documentResolver is null)
            {
                throw new ArgumentNullException(nameof(documentResolver));
            }

            if (razorDocumentMappingService is null)
            {
                throw new ArgumentNullException(nameof(razorDocumentMappingService));
            }

            if (languageServer is null)
            {
                throw new ArgumentNullException(nameof(languageServer));
            }

            if (documentVersionCache is null)
            {
                throw new ArgumentNullException(nameof(documentVersionCache));
            }

            if (languageServerFeatureOptions is null)
            {
                throw new ArgumentNullException(nameof(languageServerFeatureOptions));
            }

            if (logger is null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher;
            _documentResolver            = documentResolver;
            _razorDocumentMappingService = razorDocumentMappingService;
            _languageServer               = languageServer;
            _documentVersionCache         = documentVersionCache;
            _languageServerFeatureOptions = languageServerFeatureOptions;
            _logger = logger;
        }
 public RazorComponentRenameEndpoint(
     ForegroundDispatcher foregroundDispatcher,
     DocumentResolver documentResolver,
     RazorComponentSearchEngine componentSearchEngine,
     ProjectSnapshotManagerAccessor projectSnapshotManagerAccessor,
     LanguageServerFeatureOptions languageServerFeatureOptions)
 {
     _foregroundDispatcher         = foregroundDispatcher ?? throw new ArgumentNullException(nameof(foregroundDispatcher));
     _documentResolver             = documentResolver ?? throw new ArgumentNullException(nameof(documentResolver));
     _componentSearchEngine        = componentSearchEngine ?? throw new ArgumentNullException(nameof(componentSearchEngine));
     _projectSnapshotManager       = projectSnapshotManagerAccessor?.Instance ?? throw new ArgumentNullException(nameof(projectSnapshotManagerAccessor));
     _languageServerFeatureOptions = languageServerFeatureOptions ?? throw new ArgumentNullException(nameof(languageServerFeatureOptions));
 }
 public CodeActionEndpoint(
     RazorDocumentMappingService documentMappingService,
     IEnumerable <RazorCodeActionProvider> razorCodeActionProviders,
     IEnumerable <CSharpCodeActionProvider> csharpCodeActionProviders,
     ForegroundDispatcher foregroundDispatcher,
     DocumentResolver documentResolver,
     IClientLanguageServer languageServer,
     LanguageServerFeatureOptions languageServerFeatureOptions)
 {
     _documentMappingService       = documentMappingService ?? throw new ArgumentNullException(nameof(documentMappingService));
     _razorCodeActionProviders     = razorCodeActionProviders ?? throw new ArgumentNullException(nameof(razorCodeActionProviders));
     _csharpCodeActionProviders    = csharpCodeActionProviders ?? throw new ArgumentNullException(nameof(csharpCodeActionProviders));
     _foregroundDispatcher         = foregroundDispatcher ?? throw new ArgumentNullException(nameof(foregroundDispatcher));
     _documentResolver             = documentResolver ?? throw new ArgumentNullException(nameof(documentResolver));
     _languageServer               = languageServer ?? throw new ArgumentNullException(nameof(languageServer));
     _languageServerFeatureOptions = languageServerFeatureOptions ?? throw new ArgumentNullException(nameof(languageServerFeatureOptions));
 }
示例#5
0
 public TextDocumentTextPresentationEndpoint(
     ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
     DocumentResolver documentResolver,
     RazorDocumentMappingService razorDocumentMappingService,
     ClientNotifierServiceBase languageServer,
     DocumentVersionCache documentVersionCache,
     LanguageServerFeatureOptions languageServerFeatureOptions,
     ILoggerFactory loggerFactory)
     : base(projectSnapshotManagerDispatcher,
            documentResolver,
            razorDocumentMappingService,
            languageServer,
            documentVersionCache,
            languageServerFeatureOptions,
            loggerFactory.CreateLogger <TextDocumentTextPresentationEndpoint>())
 {
 }
        public CodeActionEndpoint(
            RazorDocumentMappingService documentMappingService,
            IEnumerable <RazorCodeActionProvider> razorCodeActionProviders,
            IEnumerable <CSharpCodeActionProvider> csharpCodeActionProviders,
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            DocumentResolver documentResolver,
            ClientNotifierServiceBase languageServer,
            LanguageServerFeatureOptions languageServerFeatureOptions)
        {
            _documentMappingService           = documentMappingService ?? throw new ArgumentNullException(nameof(documentMappingService));
            _razorCodeActionProviders         = razorCodeActionProviders ?? throw new ArgumentNullException(nameof(razorCodeActionProviders));
            _csharpCodeActionProviders        = csharpCodeActionProviders ?? throw new ArgumentNullException(nameof(csharpCodeActionProviders));
            _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher ?? throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
            _documentResolver             = documentResolver ?? throw new ArgumentNullException(nameof(documentResolver));
            _languageServer               = languageServer ?? throw new ArgumentNullException(nameof(languageServer));
            _languageServerFeatureOptions = languageServerFeatureOptions ?? throw new ArgumentNullException(nameof(languageServerFeatureOptions));

            _allAvailableCodeActionNames = GetAllAvailableCodeActionNames();
        }
示例#7
0
        public TextDocumentUriPresentationEndpoint(
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            DocumentResolver documentResolver,
            RazorDocumentMappingService razorDocumentMappingService,
            RazorComponentSearchEngine razorComponentSearchEngine,
            ClientNotifierServiceBase languageServer,
            DocumentVersionCache documentVersionCache,
            LanguageServerFeatureOptions languageServerFeatureOptions,
            ILoggerFactory loggerFactory)
            : base(projectSnapshotManagerDispatcher,
                   documentResolver,
                   razorDocumentMappingService,
                   languageServer,
                   documentVersionCache,
                   languageServerFeatureOptions,
                   loggerFactory.CreateLogger <TextDocumentUriPresentationEndpoint>())
        {
            if (razorComponentSearchEngine is null)
            {
                throw new ArgumentNullException(nameof(razorComponentSearchEngine));
            }

            _razorComponentSearchEngine = razorComponentSearchEngine;
        }
        private RazorComponentRenameEndpoint CreateEndpoint(LanguageServerFeatureOptions languageServerFeatureOptions = null)
        {
            var tagHelperDescriptors = new List <TagHelperDescriptor>();

            tagHelperDescriptors.AddRange(CreateRazorComponentTagHelperDescriptors("First", "First.Components", "Component1"));
            tagHelperDescriptors.AddRange(CreateRazorComponentTagHelperDescriptors("First", "Test", "Component2"));
            tagHelperDescriptors.AddRange(CreateRazorComponentTagHelperDescriptors("Second", "Second.Components", "Component3"));
            tagHelperDescriptors.AddRange(CreateRazorComponentTagHelperDescriptors("Second", "Second.Components", "Component4"));
            tagHelperDescriptors.AddRange(CreateRazorComponentTagHelperDescriptors("First", "Test", "Component1337"));
            tagHelperDescriptors.AddRange(CreateRazorComponentTagHelperDescriptors("First", "Test.Components", "Directory1"));
            tagHelperDescriptors.AddRange(CreateRazorComponentTagHelperDescriptors("First", "Test.Components", "Directory2"));

            var item1 = CreateProjectItem("@namespace First.Components\n@using Test\n<Component2></Component2>", "c:/First/Component1.razor");
            var item2 = CreateProjectItem("@namespace Test", "c:/First/Component2.razor");
            var item3 = CreateProjectItem("@namespace Second.Components\n<Component3></Component3>", "c:/Second/Component3.razor");
            var item4 = CreateProjectItem("@namespace Second.Components\n<Component3></Component3>\n<Component3></Component3>", "c:/Second/Component4.razor");
            var itemComponentParam = CreateProjectItem("@namespace Second.Components\n<Component3 Title=\"Something\"></Component3>", "c:/Second/Component5.razor");
            var item1337           = CreateProjectItem(string.Empty, "c:/First/Component1337.razor");
            var indexItem          = CreateProjectItem("@namespace First.Components\n@using Test\n<Component1337></Component1337>\n<Test.Component1337></Test.Component1337>", "c:/First/Index.razor");

            var itemDirectory1 = CreateProjectItem("@namespace Test.Components\n<Directory2></Directory2>", "c:/Dir1/Directory1.razor");
            var itemDirectory2 = CreateProjectItem("@namespace Test.Components\n<Directory1></Directory1>", "c:/Dir2/Directory2.razor");

            var fileSystem = new TestRazorProjectFileSystem(new[] { item1, item2, item3, item4, itemComponentParam, indexItem, itemDirectory1, itemDirectory2 });

            var projectEngine = RazorProjectEngine.Create(RazorConfiguration.Default, fileSystem, builder => {
                builder.AddDirective(NamespaceDirective.Directive);
                builder.AddTagHelpers(tagHelperDescriptors);
            });

            var component1         = CreateRazorDocumentSnapshot(projectEngine, item1, "First.Components", tagHelperDescriptors);
            var component2         = CreateRazorDocumentSnapshot(projectEngine, item2, "Test", tagHelperDescriptors);
            var component3         = CreateRazorDocumentSnapshot(projectEngine, item3, "Second.Components", tagHelperDescriptors);
            var component4         = CreateRazorDocumentSnapshot(projectEngine, item4, "Second.Components", tagHelperDescriptors);
            var componentWithParam = CreateRazorDocumentSnapshot(projectEngine, itemComponentParam, "Second.Components", tagHelperDescriptors);
            var component1337      = CreateRazorDocumentSnapshot(projectEngine, item1337, "Test", tagHelperDescriptors);
            var index = CreateRazorDocumentSnapshot(projectEngine, indexItem, "First.Components", tagHelperDescriptors);
            var directory1Component = CreateRazorDocumentSnapshot(projectEngine, itemDirectory1, "Test.Components", tagHelperDescriptors);
            var directory2Component = CreateRazorDocumentSnapshot(projectEngine, itemDirectory2, "Test.Components", tagHelperDescriptors);

            var firstProject = Mock.Of <ProjectSnapshot>(p =>
                                                         p.FilePath == "c:/First/First.csproj" &&
                                                         p.DocumentFilePaths == new[] { "c:/First/Component1.razor", "c:/First/Component2.razor", itemDirectory1.FilePath, itemDirectory2.FilePath, component1337.FilePath } &&
                                                         p.GetDocument("c:/First/Component1.razor") == component1 &&
                                                         p.GetDocument("c:/First/Component2.razor") == component2 &&
                                                         p.GetDocument(itemDirectory1.FilePath) == directory1Component &&
                                                         p.GetDocument(itemDirectory2.FilePath) == directory2Component &&
                                                         p.GetDocument(component1337.FilePath) == component1337, MockBehavior.Strict);

            var secondProject = Mock.Of <ProjectSnapshot>(p =>
                                                          p.FilePath == "c:/Second/Second.csproj" &&
                                                          p.DocumentFilePaths == new[] { "c:/Second/Component3.razor", "c:/Second/Component4.razor", index.FilePath } &&
                                                          p.GetDocument("c:/Second/Component3.razor") == component3 &&
                                                          p.GetDocument("c:/Second/Component4.razor") == component4 &&
                                                          p.GetDocument("c:/Second/ComponentWithParam.razor") == componentWithParam &&
                                                          p.GetDocument(index.FilePath) == index, MockBehavior.Strict);

            var projectSnapshotManager         = Mock.Of <ProjectSnapshotManagerBase>(p => p.Projects == new[] { firstProject, secondProject }, MockBehavior.Strict);
            var projectSnapshotManagerAccessor = new TestProjectSnapshotManagerAccessor(projectSnapshotManager);

            var documentResolver = Mock.Of <DocumentResolver>(d =>
                                                              d.TryResolveDocument("c:/First/Component1.razor", out component1) == true &&
                                                              d.TryResolveDocument("c:/First/Component2.razor", out component2) == true &&
                                                              d.TryResolveDocument("c:/Second/Component3.razor", out component3) == true &&
                                                              d.TryResolveDocument("c:/Second/Component4.razor", out component4) == true &&
                                                              d.TryResolveDocument("c:/Second/ComponentWithParam.razor", out componentWithParam) == true &&
                                                              d.TryResolveDocument(index.FilePath, out index) == true &&
                                                              d.TryResolveDocument(component1337.FilePath, out component1337) == true &&
                                                              d.TryResolveDocument(itemDirectory1.FilePath, out directory1Component) == true &&
                                                              d.TryResolveDocument(itemDirectory2.FilePath, out directory2Component) == true, MockBehavior.Strict);

            var searchEngine = new DefaultRazorComponentSearchEngine(Dispatcher, projectSnapshotManagerAccessor);

            languageServerFeatureOptions = languageServerFeatureOptions ?? Mock.Of <LanguageServerFeatureOptions>(options => options.SupportsFileManipulation == true, MockBehavior.Strict);
            var endpoint = new RazorComponentRenameEndpoint(Dispatcher, documentResolver, searchEngine, projectSnapshotManagerAccessor, languageServerFeatureOptions);

            return(endpoint);
        }