コード例 #1
0
        private void RegisterExtensionPoints()
        {
            var extensionPointsRepository = ExtensionPointsRepository.Instance;

            // JZ: SrcMLService Integration
            extensionPointsRepository.RegisterParserImplementation(new List <string> {
                ".cs"
            }, new SrcMLCSharpParser());
            extensionPointsRepository.RegisterParserImplementation(new List <string> {
                ".h", ".cpp", ".cxx", ".c"
            }, new SrcMLCppParser(srcMLService));
            ////extensionPointsRepository.RegisterParserImplementation(new List<string> { ".cs" }, new SrcMLCSharpParser(_srcMLArchive));
            ////extensionPointsRepository.RegisterParserImplementation(new List<string> { ".h", ".cpp", ".cxx", ".c" }, new SrcMLCppParser(_srcMLArchive));
            // JZ: End of code changes
            extensionPointsRepository.RegisterParserImplementation(new List <string> {
                ".xaml"
            }, new XAMLFileParser());
            //extensionPointsRepository.RegisterParserImplementation(new List<string> { ".txt" },
            // new TextFileParser());

            extensionPointsRepository.RegisterWordSplitterImplementation(new WordSplitter());
            extensionPointsRepository.RegisterResultsReordererImplementation(new SortByScoreResultsReorderer());
            extensionPointsRepository.RegisterQueryWeightsSupplierImplementation(new QueryWeightsSupplier());
            extensionPointsRepository.RegisterQueryRewriterImplementation(new DefaultQueryRewriter());
            extensionPointsRepository.RegisterIndexFilterManagerImplementation(new IndexFilterManager());


            var sandoOptions = ServiceLocator.Resolve <ISandoOptionsProvider>().GetSandoOptions();

            var loggerPath = Path.Combine(sandoOptions.ExtensionPointsPluginDirectoryPath, "ExtensionPointsLogger.log");
            var logger     = FileLogger.CreateFileLogger("ExtensionPointsLogger", loggerPath);

            _extensionPointsConfiguration = ExtensionPointsConfigurationFileReader.ReadAndValidate(logger);

            if (_extensionPointsConfiguration != null)
            {
                _extensionPointsConfiguration.PluginDirectoryPath = sandoOptions.ExtensionPointsPluginDirectoryPath;
                ExtensionPointsConfigurationAnalyzer.FindAndRegisterValidExtensionPoints(_extensionPointsConfiguration, logger);
            }

            var csParser = extensionPointsRepository.GetParserImplementation(".cs") as SrcMLCSharpParser;
            // JZ: SrcMLService Integration
            ////if(csParser != null) {
            ////    csParser.Archive = _srcMLArchive;
            ////}
            // End of code changes
            var cppParser = extensionPointsRepository.GetParserImplementation(".cpp") as SrcMLCppParser;
            // JZ: SrcMLService Integration
            ////if(cppParser != null) {
            ////    cppParser.Archive = _srcMLArchive;
            ////}
            // End of code changes
        }
        private void CreateExtensionPointsConfiguration(
            bool addValidParserConfigurations                = false,
            bool addInvalidParserConfigurations              = false,
            bool addValidWordSplitterConfiguration           = false,
            bool addInvalidWordSplitterConfiguration         = false,
            bool addValidResultsReordererConfiguration       = false,
            bool addInvalidResultsReordererConfiguration     = false,
            bool addValidQueryWeightsSupplierConfiguration   = false,
            bool addInvalidQueryWeightsSupplierConfiguration = false,
            bool addValidQueryRewriterConfiguration          = false,
            bool addInvalidQueryRewriterConfiguration        = false,
            bool addValidIndexFilterManagerConfiguration     = false,
            bool addInvalidIndexFilterManagerConfiguration   = false,
            bool addInvalidExtensionPoints = false)
        {
            extensionPointsConfiguration = new ExtensionPointsConfiguration();
            extensionPointsConfiguration.PluginDirectoryPath  = pluginDirectory;
            extensionPointsConfiguration.ParsersConfiguration = new List <ParserExtensionPointsConfiguration>();

            if (addValidParserConfigurations)
            {
                extensionPointsConfiguration.ParsersConfiguration.AddRange(
                    new List <ParserExtensionPointsConfiguration>()
                {
                    new ParserExtensionPointsConfiguration()
                    {
                        FullClassName           = "Sando.TestExtensionPoints.TestCSharpParser",
                        LibraryFileRelativePath = "TestExtensionPoints.dll",
                        SupportedFileExtensions = new List <string>()
                        {
                            ".cs"
                        },
                        ProgramElementsConfiguration = new List <BaseExtensionPointConfiguration>()
                        {
                            new BaseExtensionPointConfiguration()
                            {
                                FullClassName           = "Sando.TestExtensionPoints.TestElement",
                                LibraryFileRelativePath = "TestExtensionPoints.dll"
                            }
                        }
                    },
                    new ParserExtensionPointsConfiguration()
                    {
                        FullClassName           = "Sando.TestExtensionPoints.TestCppParser",
                        LibraryFileRelativePath = "TestExtensionPoints.dll",
                        SupportedFileExtensions = new List <string>()
                        {
                            ".h", ".cpp", ".cxx"
                        }
                    }
                });
            }
            if (addInvalidParserConfigurations)
            {
                extensionPointsConfiguration.ParsersConfiguration.AddRange(
                    new List <ParserExtensionPointsConfiguration>()
                {
                    new ParserExtensionPointsConfiguration()
                    {
                        FullClassName           = "",
                        LibraryFileRelativePath = "TestExtensionPoints.dll",
                        SupportedFileExtensions = new List <string>()
                        {
                            ".cs"
                        }
                    },
                    new ParserExtensionPointsConfiguration()
                    {
                        FullClassName           = "Sando.TestExtensionPoints.TestCppParser",
                        LibraryFileRelativePath = "",
                        SupportedFileExtensions = new List <string>()
                        {
                            ".h", ".cpp", ".cxx"
                        }
                    },
                    new ParserExtensionPointsConfiguration()
                    {
                        FullClassName           = "Sando.TestExtensionPoints.TestCppParser",
                        LibraryFileRelativePath = "TestExtensionPoints.dll",
                        SupportedFileExtensions = new List <string>()
                        {
                            ".cs"
                        },
                        ProgramElementsConfiguration = new List <BaseExtensionPointConfiguration>()
                        {
                            new BaseExtensionPointConfiguration()
                            {
                                FullClassName           = "Sando.TestExtensionPoints.TestElement",
                                LibraryFileRelativePath = ""
                            }
                        }
                    }
                });
            }

            if (addValidWordSplitterConfiguration)
            {
                extensionPointsConfiguration.WordSplitterConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.TestWordSplitter",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };
            }

            if (addInvalidWordSplitterConfiguration)
            {
                extensionPointsConfiguration.WordSplitterConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.TestWordSplitter",
                    LibraryFileRelativePath = ""
                };
            }

            if (addValidResultsReordererConfiguration)
            {
                extensionPointsConfiguration.ResultsReordererConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.TestResultsReorderer",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };
            }

            if (addInvalidResultsReordererConfiguration)
            {
                extensionPointsConfiguration.ResultsReordererConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };
            }

            if (addValidQueryWeightsSupplierConfiguration)
            {
                extensionPointsConfiguration.QueryWeightsSupplierConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.TestQueryWeightsSupplier",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };
            }

            if (addInvalidQueryWeightsSupplierConfiguration)
            {
                extensionPointsConfiguration.QueryWeightsSupplierConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };
            }

            if (addValidQueryRewriterConfiguration)
            {
                extensionPointsConfiguration.QueryRewriterConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.TestQueryRewriter",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };
            }

            if (addInvalidQueryRewriterConfiguration)
            {
                extensionPointsConfiguration.QueryRewriterConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };
            }

            if (addValidIndexFilterManagerConfiguration)
            {
                extensionPointsConfiguration.IndexFilterManagerConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.TestIndexFilterManager",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };
            }

            if (addInvalidIndexFilterManagerConfiguration)
            {
                extensionPointsConfiguration.IndexFilterManagerConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };
            }

            if (addInvalidExtensionPoints)
            {
                extensionPointsConfiguration.ParsersConfiguration.AddRange(
                    new List <ParserExtensionPointsConfiguration>()
                {
                    new ParserExtensionPointsConfiguration()
                    {
                        FullClassName           = "Sando.NonExistingParser",
                        LibraryFileRelativePath = "TestExtensionPoints.dll",
                        SupportedFileExtensions = new List <string>()
                        {
                            ".cs"
                        }
                    },
                    new ParserExtensionPointsConfiguration()
                    {
                        FullClassName           = "Sando.TestExtensionPoints.TestCppParser",
                        LibraryFileRelativePath = "NonExistingParser.dll",
                        SupportedFileExtensions = new List <string>()
                        {
                            ".h", ".cpp", ".cxx"
                        }
                    },
                    new ParserExtensionPointsConfiguration()
                    {
                        FullClassName           = "Sando.TestExtensionPoints.TestCppParser",
                        LibraryFileRelativePath = "TestExtensionPoints.dll",
                        SupportedFileExtensions = new List <string>()
                        {
                            ".cs"
                        },
                        ProgramElementsConfiguration = new List <BaseExtensionPointConfiguration>()
                        {
                            new BaseExtensionPointConfiguration()
                            {
                                FullClassName           = "Sando.TestExtensionPoints.TestElement",
                                LibraryFileRelativePath = "NonExistingTestElement.dll"
                            }
                        }
                    }
                });

                extensionPointsConfiguration.WordSplitterConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.TestWordSplitter",
                    LibraryFileRelativePath = "NonExistingWordSplitter.dll"
                };

                extensionPointsConfiguration.ResultsReordererConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.NonExistingResultsReorderer",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };

                extensionPointsConfiguration.QueryWeightsSupplierConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.NonExistingQueryWeightsSupplier",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };

                extensionPointsConfiguration.QueryRewriterConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.NonExistingQueryRewriter",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };

                extensionPointsConfiguration.IndexFilterManagerConfiguration =
                    new BaseExtensionPointConfiguration()
                {
                    FullClassName           = "Sando.TestExtensionPoints.NonExistingIndexFilterManager",
                    LibraryFileRelativePath = "TestExtensionPoints.dll"
                };
            }
        }