public void XmlNamespaceFromValidConfig()
        {
            string content = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<sqlMapConfig xmlns=\"http://Batis.apache.org/dataMapper\"\r\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n\r\n  <settings>\r\n    <setting useStatementNamespaces=\"true\" />\r\n    <setting cacheModelsEnabled=\"true\" />\r\n    <setting validateSqlMap=\"true\" />\r\n  </settings>\r\n\r\n  <database>\r\n    <provider name=\"sqlServer\" />\r\n    <dataSource name=\"Store\" connectionString=\"\"/>\r\n  </database>\r\n\r\n  <sqlMaps>\r\n    <sqlMap embedded=\"sqlMap1.xml, CoolApp\" />\r\n  </sqlMaps>\r\n</sqlMapConfig>";
            var    parser  = new BatisXmlConfigParser().WithStringReader(new StringReader(content)).Load();

            Assert.Equal(BatisXmlFileTypeEnum.SqlMapConfig, parser.BatisXmlFileType);
        }
예제 #2
0
        public SqlMapConfig ParseSingleConfigFile(XmlFileInfo xmlDocument)
        {
            BatisXmlConfigParser parser = new BatisXmlConfigParser().WithFileInfo(xmlDocument.FilePath, xmlDocument.ProjectName).Load();

            if (parser.BatisXmlFileType == BatisXmlFileTypeEnum.SqlMapConfig)
            {
                return(parser.Result);
            }

            return(new SqlMapConfig {
                ParsedSuccessfully = false
            });
        }
        public void SettingsFromProperConfig()
        {
            string content = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<sqlMapConfig xmlns=\"http://Batis.apache.org/dataMapper\"\r\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n\r\n  <settings>\r\n    <setting useStatementNamespaces=\"true\" />\r\n    <setting cacheModelsEnabled=\"true\" />\r\n    <setting validateSqlMap=\"true\" />\r\n  </settings>\r\n\r\n  <database>\r\n    <provider name=\"sqlServer\" />\r\n    <dataSource name=\"Store\" connectionString=\"\"/>\r\n  </database>\r\n\r\n  <sqlMaps>\r\n    <sqlMap embedded=\"sqlMap1.xml, CoolApp\" />\r\n  </sqlMaps>\r\n</sqlMapConfig>";
            var    parser  = new BatisXmlConfigParser().WithStringReader(new StringReader(content)).Load();

            var expectedSettings = new Settings
            {
                UseStatementNamespaces = true,
                CacheModelsEnabled     = true,
                ValidateSqlMap         = true,
                UseReflectionOptimizer = true,
            };

            Assert.Equal(expectedSettings, parser.Settings);
        }
        public void SqlMapsFromNonValidConfig()
        {
            string content  = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<sqlMapConfig xmlns=\"http://Batis.apache.org/dataMapper\"\r\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n\r\n  <settings>\r\n    <setting useStatementNamespaces=\"true\" />\r\n    <setting cacheModelsEnabled=\"true\" />\r\n    <setting validateSqlMap=\"true\" />\r\n  </settings>\r\n\r\n  <database>\r\n    <provider name=\"sqlServer\" />\r\n    <dataSource name=\"Store\" connectionString=\"\"/>\r\n  </database>\r\n\r\n  <sqlMaps>\r\n    <sqlMap embedded=\"sqlMap1.xml, CoolApp\" />\r\n  </sqlMaps>\r\n</sqlMapConfig>";
            var    parser   = new BatisXmlConfigParser().WithStringReader(new StringReader(content)).Load();
            var    expected = new List <SqlMapDefinition>
            {
                new SqlMapDefinition
                {
                    Value        = "sqlMap1.xml",
                    RawValue     = "sqlMap1.xml, CoolApp",
                    ResourceType = XmlConfigConstants.SqlMapResourceType.EMBEDDED,
                },
            };

            var actual = parser.SqlMaps.ToList();

            Assert.Single(actual);
            Assert.Equal(expected.Count, actual.Count);
            Assert.Equal(expected.First(), actual.First());

            //CollectionAssert.AreEquivalent(expected, actual); //TODO: Move to nUnit or xUnit...
        }
예제 #5
0
        public async System.Threading.Tasks.Task HandleChangeAsync(IWpfTextView textView)
        {
            try
            {
                await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

                var profiler = MiniProfiler.StartNew(nameof(HandleChangeAsync));
                profiler.Storage = new NLogStorage(LogManager.GetLogger("profiler"));
                using (profiler.Step("HandleChangeXml"))
                {
                    var           snapshot = textView.Caret.Position.BufferPosition.Snapshot;
                    ITextDocument textDoc;
                    textView.TextBuffer.Properties.TryGetProperty(typeof(ITextDocument), out textDoc);
                    using (var stringReader = new StringReader(snapshot.GetText()))
                    {
                        var       project    = GotoAsyncPackage.EnvDTE.Solution.FindProjectItem(textDoc.FilePath)?.ContainingProject?.Name;
                        XmlParser baseParser = new XmlParser(stringReader).Load();

                        if (baseParser.BatisXmlFileType == BatisXmlFileTypeEnum.SqlMap)
                        {
                            BatisXmlMapParser parser = new BatisXmlMapParser(baseParser).WithFileInfo(textDoc.FilePath, project);
                            var newStatments         = parser.GetMapFileStatments();
                            GotoAsyncPackage.Storage.XmlQueries.UpdateStatmentForFileWihoutKey(newStatments);
                        }
                        if (baseParser.BatisXmlFileType == BatisXmlFileTypeEnum.SqlMapConfig)
                        {
                            BatisXmlConfigParser parser = new BatisXmlConfigParser(baseParser).WithFileInfo(textDoc.FilePath, project);
                            GotoAsyncPackage.Storage.SqlMapConfigProvider.UpdateOrAddConfig(parser.Result);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogManager.GetLogger("error").Error(ex, "XmlFileContentOnChange.HandleChange");
                OutputWindowLogger.WriteLn($"Exception occured during handling xml file change: {ex.Message}");
            }
        }