public virtual IOutputDescription TestService(DbService dbService) { VerifyArgument.IsNotNull("dbService", dbService); VerifyArgument.IsNotNull("dbService.Source", dbService.Source); IOutputDescription result; using (var server = CreateDbServer(dbService.Source as DbSource)) { server.Connect(((DbSource)dbService.Source).ConnectionString); server.BeginTransaction(); try { var command = CommandFromServiceMethod(server, dbService.Method); var dataTable = server.FetchDataTable(command); result = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); result.DataSourceShapes.Add(dataSourceShape); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); dataSourceShape.Paths.AddRange(dataBrowser.Map(dataTable)); } catch (Exception ex) { throw new WarewolfDbException(ex.Message); } finally { server.RollbackTransaction(); } } return(result); }
public IOutputDescription Test(PluginInvokeArgs setupInfo) { Assembly loadedAssembly; if (!TryLoadAssembly(setupInfo.AssemblyLocation, setupInfo.AssemblyName, out loadedAssembly)) { return(null); } var parameters = BuildParameterList(setupInfo.Parameters); var typeList = BuildTypeList(setupInfo.Parameters); var type = loadedAssembly.GetType(setupInfo.Fullname); var methodToRun = type.GetMethod(setupInfo.Method, typeList); var instance = Activator.CreateInstance(type); var pluginResult = methodToRun.Invoke(instance, parameters); // do formating here to avoid object serialization issues ;) var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); if (pluginResult != null) { pluginResult = AdjustPluginResult(pluginResult, methodToRun); var tmpData = dataBrowser.Map(pluginResult); dataSourceShape.Paths.AddRange(tmpData); } var result = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); result.DataSourceShapes.Add(dataSourceShape); return(result); }
public void SelectEnumerableValuesAsRelatedUsingPocoEnumerablePathsFromReferenceType_Where_PathsContainNestedEnumerablePaths_Expected_FlattenedDataWithValuesFromOuterEnumerablePathRepeatingForEveryValueFromNestedEnumerablePath() { PocoTestData testData = GivenPocoWithParallelAndNestedEnumerables(); PocoPath enumerableNamePath = new PocoPath("EnumerableData().Name", "EnumerableData.Name"); PocoPath nestedEnumerableNamePath = new PocoPath("EnumerableData().EnumerableData().Name", "EnumerableData.EnumerableData.Name"); List <IPath> paths = new List <IPath> { enumerableNamePath, nestedEnumerableNamePath }; IDataBrowser dataBrowser = DataBrowserFactory.CreateDataBrowser(); Dictionary <IPath, IList <object> > data = dataBrowser.SelectEnumerablesAsRelated(paths, testData); #region Complex Setup for Expected // // The code in this region is used to setup the exprected value. // It can't be reused for other tests and can't be made generic // without replicating the funcationality being tested. // string tmpExpected = ""; string tmpExpected1 = ""; string separator = "|"; for (int outerCount = 0; outerCount < testData.EnumerableData.Count; outerCount++) { for (int innerCount = 0; innerCount < testData.EnumerableData[outerCount].EnumerableData.Count; innerCount++) { if ((outerCount == testData.EnumerableData.Count - 1) && (innerCount == testData.EnumerableData[outerCount].EnumerableData.Count - 1)) { separator = ""; } if (outerCount < testData.EnumerableData.Count) { tmpExpected += testData.EnumerableData[outerCount].Name + separator; } else { tmpExpected += separator; } if (innerCount < testData.EnumerableData[outerCount].EnumerableData.Count) { tmpExpected1 += testData.EnumerableData[outerCount].EnumerableData[innerCount].Name + separator; } else { tmpExpected1 += separator; } } } #endregion Complex Setup for Expected string expected = tmpExpected + "^" + tmpExpected1; string actual = string.Join("|", data[enumerableNamePath]); actual += "^" + string.Join("|", data[nestedEnumerableNamePath]); Assert.AreEqual(expected, actual); }
public void DataBrowserFactory_Map_GivenJson_PathsOfReferenceType_Expected_JsonPaths() { var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var paths = dataBrowser.Map(GivenJson()); Assert.IsTrue(paths.All(p => p.GetType() == typeof(JsonPath))); }
public IOutputDescription GetOutputDescription() { IOutputDescription result = null; var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); var requestResponse = Scrubber.Scrub(RequestResponse); try { result = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); result.DataSourceShapes.Add(dataSourceShape); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); dataSourceShape.Paths.AddRange(dataBrowser.Map(requestResponse)); } catch (Exception ex) { var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var errorResult = new XElement("Error"); errorResult.Add(ex); var data = errorResult.ToString(); dataSourceShape.Paths.AddRange(dataBrowser.Map(data)); } return(result); }
public void MapPathsOfJson_Expected_JsonPaths() { var testData = GivenJson(); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var paths = dataBrowser.Map(testData); Assert.IsTrue(paths.All(p => p.GetType() == typeof(JsonPath))); }
public void DataBrowserFactory_Map_PathsOfXml_Expected_XmlPaths() { var testData = GivenXml(); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var paths = dataBrowser.Map(testData); Assert.IsTrue(paths.All(p => p.GetType() == typeof(XmlPath))); }
public void DataBrowserFactory_Map_GivenPoco_MapPathsOfReferenceType_Expected_PocoPaths() { var testData = GivenPoco(); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var paths = dataBrowser.Map(testData); Assert.IsTrue(paths.All(p => p.GetType() == typeof(PocoPath))); }
public void MapPathsOfReferenceType_Expected_PocoPaths() { PocoTestData testData = GivenPoco(); IDataBrowser dataBrowser = DataBrowserFactory.CreateDataBrowser(); IEnumerable <IPath> paths = dataBrowser.Map(testData); Assert.IsTrue(paths.All(p => p.GetType() == typeof(PocoPath))); }
public void MapPathsOfJson_Expected_JsonPaths() { string testData = GivenJson(); IDataBrowser dataBrowser = DataBrowserFactory.CreateDataBrowser(); IEnumerable <IPath> paths = dataBrowser.Map(testData); Assert.IsTrue(paths.All(p => p.GetType() == typeof(JsonPath))); }
public void DataBrowserFactory_Map_PathsOfUnexpectedType_Expected_PocoPaths() { var uri = new Uri("/cake", UriKind.Relative); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var paths = dataBrowser.Map(uri); Assert.IsTrue(paths.All(p => p.GetType() == typeof(PocoPath))); }
public void MapPathsOfUnexpectedType_Expected_PocoPaths() { Uri uri = new Uri("/cake", UriKind.Relative); IDataBrowser dataBrowser = DataBrowserFactory.CreateDataBrowser(); IEnumerable <IPath> paths = dataBrowser.Map(uri); Assert.IsTrue(paths.All(p => p.GetType() == typeof(PocoPath))); }
public void SelectScalarValueUsingJsonScalarPathFromJson_Expected_ScalarValue() { string testData = GivenJson(); IPath namePath = new JsonPath("Name", "Name"); IDataBrowser dataBrowser = DataBrowserFactory.CreateDataBrowser(); object data = dataBrowser.SelectScalar(namePath, testData); Assert.AreEqual(data, "Dev2"); }
public void SelectScalarValueUsingPocoScalarPathFromXml_Expected_ScalarValue() { string testData = GivenXml(); IPath namePath = new XmlPath("Company:Name", "Company:Name"); IDataBrowser dataBrowser = DataBrowserFactory.CreateDataBrowser(); object data = dataBrowser.SelectScalar(namePath, testData); Assert.AreEqual(data, "Dev2"); }
public void SelectScalarValueUsingPocoScalarPathFromReferenceType_Expected_ScalarValue() { PocoTestData testData = GivenPoco(); IPath namePath = new PocoPath("Name", "Name"); IDataBrowser dataBrowser = DataBrowserFactory.CreateDataBrowser(); object data = dataBrowser.SelectScalar(namePath, testData); Assert.AreEqual(data, testData.Name); }
/// <summary> /// Map the data given in the StringData field of the payload using the DataBrowser /// </summary> public string MapStringData(string data) { string stringData = ValueExtractor.GetValueFromDataList("StringData", data); IDataBrowser dataBrowser = DataBrowserFactory.CreateDataBrowser(); IEnumerable <IPath> mappedPaths = dataBrowser.Map(stringData); string pathsString = string.Join(Environment.NewLine, mappedPaths.Select(p => p.DisplayPath)); return("<ADL><PathData>" + pathsString + "</PathData></ADL>"); }
public void SelectEnumerableValueUsingPocoEnumerablePathFromReferenceType_Expected_ValuesFromEachItemInEnumeration() { PocoTestData testData = GivenPoco(); IPath namePath = new PocoPath("EnumerableData().Name", "EnumerableData.Name"); IDataBrowser dataBrowser = DataBrowserFactory.CreateDataBrowser(); IEnumerable <object> data = dataBrowser.SelectEnumerable(namePath, testData); string expected = string.Join("|", testData.EnumerableData.Select(e => e.Name)); string actual = string.Join("|", data.Select(o => o.ToString())); Assert.AreEqual(expected, actual); }
public IOutputDescription Test(ComPluginInvokeArgs setupInfo, out string serializedResult) { try { serializedResult = null; var methodToRun = ExecuteComPlugin(setupInfo, out object pluginResult); // do formating here to avoid object serialization issues ;) var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); if (pluginResult != null) { if (pluginResult is KeyValuePair <bool, string> ) { var pluginKeyValuePair = (KeyValuePair <bool, string>)pluginResult; serializedResult = "Exception: " + pluginKeyValuePair.Value; } else { serializedResult = pluginResult.ToString(); } pluginResult = AdjustPluginResult(pluginResult); var tmpData = dataBrowser.Map(pluginResult); dataSourceShape.Paths.AddRange(tmpData); } var result = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); result.DataSourceShapes.Add(dataSourceShape); return(result); } catch (COMException e) { Dev2Logger.Error("IOutputDescription Test(PluginInvokeArgs setupInfo)", e, GlobalConstants.WarewolfError); throw; } catch (Exception e) { if (e.InnerException is COMException) { throw e.InnerException; } Dev2Logger.Error("IOutputDescription Test(PluginInvokeArgs setupInfo)", e, GlobalConstants.WarewolfError); serializedResult = null; return(null); } }
public override IOutputDescription TestService(DbService dbService) { VerifyArgument.IsNotNull("dbService", dbService); VerifyArgument.IsNotNull("dbService.Source", dbService.Source); IOutputDescription result; using (var server = CreateDbServer(dbService.Source as DbSource)) { server.Connect(((DbSource)dbService.Source).ConnectionString); server.BeginTransaction(); try { var command = CommandFromServiceMethod(server, dbService.Method); var outParams = server.GetProcedureOutParams(command.CommandText); foreach (var dbDataParameter in outParams) { if (command.Parameters.Contains(dbDataParameter)) { continue; } command.Parameters.Add(dbDataParameter); } var dataTable = server.FetchDataTable(command); result = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); result.DataSourceShapes.Add(dataSourceShape); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); dataSourceShape.Paths.AddRange(dataBrowser.Map(dataTable)); } catch (Exception ex) { Dev2Logger.Error(ex.Message, GlobalConstants.WarewolfError); throw; } finally { server.RollbackTransaction(); } } return(result); }
public override IOutputDescription TestService(DbService dbService) { VerifyArgument.IsNotNull("dbService", dbService); VerifyArgument.IsNotNull("dbService.Source", dbService.Source); IOutputDescription result; using (var server = CreateDbServer(dbService.Source as DbSource)) { server.Connect(((DbSource)dbService.Source).ConnectionString); server.BeginTransaction(); try { // // Execute command and normalize XML // var command = CommandFromServiceMethod(server, dbService.Method); // ReSharper disable PossibleNullReferenceException var outParams = server.GetProcedureOutParams(dbService.Method.Name, (dbService.Source as DbSource).DatabaseName); // ReSharper restore PossibleNullReferenceException foreach (var dbDataParameter in outParams) { command.Parameters.Add(dbDataParameter); } var dataTable = server.FetchDataTable(command); // // Map shape of XML // result = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); result.DataSourceShapes.Add(dataSourceShape); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); dataSourceShape.Paths.AddRange(dataBrowser.Map(dataTable)); } finally { server.RollbackTransaction(); } } return(result); }
public void SelectEnumerableValuesAsRelatedUsingPocoEnumerablePathsFromXml_Where_PathsContainNestedEnumerablePaths_Expected_FlattenedDataWithValuesFromOuterEnumerablePathRepeatingForEveryValueFromNestedEnumerablePath() { var testData = GivenXml(); var enumerableNamePath = new XmlPath("Company.Departments().Department:Name", "Company.Departments.Department:Name"); var nestedEnumerableNamePath = new XmlPath("Company.Departments().Department.Employees().Person:Name", "Company.Departments.Department.Employees.Person:Name"); var paths = new List <IPath> { enumerableNamePath, nestedEnumerableNamePath }; var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var data = dataBrowser.SelectEnumerablesAsRelated(paths, testData); const string expected = "Dev|Dev|Accounts|Accounts^Brendon|Jayd|Bob|Joe"; var actual = string.Join("|", data[enumerableNamePath]); actual += "^" + string.Join("|", data[nestedEnumerableNamePath]); Assert.AreEqual(expected, actual); }
public void SelectEnumerableValuesAsRelatedUsingJsonEnumerablePathsFromJson_Where_PathsContainNestedEnumerablePaths_Expected_FlattenedDataWithValuesFromOuterEnumerablePathRepeatingForEveryValueFromNestedEnumerablePath() { string testData = GivenJson(); IPath enumerableNamePath = new JsonPath("Departments().Name", "Departments.Name"); IPath nestedEnumerableNamePath = new JsonPath("Departments().Employees().Name", "Departments.Employees.Name"); List <IPath> paths = new List <IPath> { enumerableNamePath, nestedEnumerableNamePath }; IDataBrowser dataBrowser = DataBrowserFactory.CreateDataBrowser(); Dictionary <IPath, IList <object> > data = dataBrowser.SelectEnumerablesAsRelated(paths, testData); string expected = "Dev|Dev|Accounts|Accounts^Brendon|Jayd|Bob|Joe"; string actual = string.Join("|", data[enumerableNamePath]); actual += "^" + string.Join("|", data[nestedEnumerableNamePath]); Assert.AreEqual(expected, actual); }
public IOutputDescription ExecuteWebService(WcfService src) { var source = (WcfSource)src.Source; var factory = new DynamicProxyFactory(source.EndpointUrl); var contract = factory.Contracts.FirstOrDefault(); if (contract == null) { throw new DynamicProxyException(ErrorResource.NoContractFound); } var proxy = factory.CreateProxy(contract.Name); var parameters = src.Method.Parameters?.Select(a => new MethodParameter { Name = a.Name, Value = a.Value, TypeName = a.TypeName }) .ToList() ?? new List <MethodParameter>(); var paramObjects = parameters.Select(methodParameter => Convert.ChangeType(methodParameter.Value, Type.GetType(methodParameter.TypeName))).ToArray(); var result = proxy.CallMethod(src.Method.Name, paramObjects); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); var method = GetMethod(src.Method.Name, proxy); if (result != null) { result = AdjustPluginResult(result, method); var tmpData = dataBrowser.Map(result); dataSourceShape.Paths.AddRange(tmpData); } var output = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); output.DataSourceShapes.Add(dataSourceShape); return(output); }
public override IOutputDescription TestSqliteService(SqliteDBService dbService) { VerifyArgument.IsNotNull("SqliteDBService", dbService); VerifyArgument.IsNotNull("SqliteDBService.Source", dbService.Source); IOutputDescription result; using (var server = CreateSqliteDbServer(dbService.Source as SqliteDBSource)) { server.Connect(((SqliteDBSource)dbService.Source).ConnectionString); server.BeginTransaction(); try { // // Execute command and normalize XML // var command = server.CreateCommand(); command.CommandText = dbService.Method.QueryString; var dataTable = server.FetchDataTable(command); // // Map shape of XML // result = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); result.DataSourceShapes.Add(dataSourceShape); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); dataSourceShape.Paths.AddRange(dataBrowser.Map(dataTable)); } finally { server.RollbackTransaction(); } } return(result); }
public IOutputDescription Test(PluginInvokeArgs setupInfo, out string jsonResult) { try { Assembly loadedAssembly; jsonResult = null; _assemblyLocation = setupInfo.AssemblyLocation; AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; if (!_assemblyLoader.TryLoadAssembly(setupInfo.AssemblyLocation, setupInfo.AssemblyName, out loadedAssembly)) { return(null); } object pluginResult; var methodToRun = ExecutePlugin(setupInfo, loadedAssembly, out pluginResult); AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve; // do formating here to avoid object serialization issues ;) var dataBrowser = DataBrowserFactory.CreateDataBrowser(); var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); if (pluginResult != null) { jsonResult = JsonConvert.SerializeObject(pluginResult); pluginResult = AdjustPluginResult(pluginResult, methodToRun); var tmpData = dataBrowser.Map(pluginResult); dataSourceShape.Paths.AddRange(tmpData); } var result = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); result.DataSourceShapes.Add(dataSourceShape); return(result); } catch (Exception e) { Dev2Logger.Error("IOutputDescription Test(PluginInvokeArgs setupInfo)", e); jsonResult = null; return(null); } }
public ShapedXmlOutputFormatter(IOutputDescription outputDescription, string rootNodeName) { RootNodeName = rootNodeName; OutputDescription = outputDescription; DataBrowser = DataBrowserFactory.CreateDataBrowser(); }
public ShapedXmlOutputFormatter(IOutputDescription outputDescription) { RootNodeName = "ADL"; OutputDescription = outputDescription; DataBrowser = DataBrowserFactory.CreateDataBrowser(); }
public override IOutputDescription TestService(DbService dbService) { VerifyArgument.IsNotNull("dbService", dbService); VerifyArgument.IsNotNull("dbService.Source", dbService.Source); IOutputDescription result; using (var server = CreateDbServer(dbService.Source as DbSource)) { server.Connect(((DbSource)dbService.Source).ConnectionString); server.BeginTransaction(); try { // // Execute command and normalize XML // var command = CommandFromServiceMethod(server, dbService.Method); var databaseName = (dbService.Source as DbSource).DatabaseName; var fullProcedureName = dbService.Method.ExecuteAction.Substring(dbService.Method.ExecuteAction.IndexOf(".", StringComparison.Ordinal) + 1); var outParams = server.GetProcedureOutParams(fullProcedureName, databaseName); var countRefCursors = outParams.Count(parameter => parameter.OracleDbType == OracleDbType.RefCursor); var countSingleParams = outParams.Count(parameter => parameter.OracleDbType != OracleDbType.RefCursor); if (countRefCursors > 1) { throw new Exception("Multiple Ref Cursor are not currently supported."); } if (countRefCursors >= 1 && countSingleParams >= 1) { throw new Exception("Mixing single return values and Ref Cursors are not currently supported."); } var dbDataParameters = server.GetProcedureInputParameters(command, databaseName, fullProcedureName); var cmd = command.Connection.CreateCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = databaseName + "." + fullProcedureName; var parameters = dbService.Method.Parameters; foreach (var dbDataParameter in dbDataParameters) { var foundParameter = parameters.FirstOrDefault(parameter => parameter.Name == dbDataParameter.ParameterName); if (foundParameter != null) { dbDataParameter.Value = foundParameter.Value; } cmd.Parameters.Add(dbDataParameter); } foreach (var dbDataParameter in outParams) { cmd.Parameters.Add(dbDataParameter); } var dataTable = server.FetchDataTable(cmd); // // Map shape of XML // result = OutputDescriptionFactory.CreateOutputDescription(OutputFormats.ShapedXML); var dataSourceShape = DataSourceShapeFactory.CreateDataSourceShape(); result.DataSourceShapes.Add(dataSourceShape); var dataBrowser = DataBrowserFactory.CreateDataBrowser(); dataSourceShape.Paths.AddRange(dataBrowser.Map(dataTable)); cmd.Dispose(); } finally { server.RollbackTransaction(); } } return(result); }