Ejemplo n.º 1
0
        public void DataListTO_IgnoreColumnDirection_False_MapForInputOutput_ColumnIODirection_HasElements_True_HasGrandChild_ExpectSuccess()
        {
            //--------------------------Arrange-------------------------------
            var dataList = new StringBuilder(
                "<DataList>" +
                "<Child0 ColumnIODirection='" + enDev2ColumnArgumentDirection.Input + "' IsJson='False'>content</Child0>" +
                "<Child01 ColumnIODirection='" + enDev2ColumnArgumentDirection.Both + "' IsJson='False'>content</Child01>" +
                "<Child011>child attribute content</Child011>" +
                "<Child02 ColumnIODirection='" + enDev2ColumnArgumentDirection.Output + "' IsJson='False'>content</Child02>" +
                "<Child03 ColumnIODirection='" + enDev2ColumnArgumentDirection.None + "' IsJson='False'>content</Child03>" +
                "<Child1>content</Child1>" +
                "<Child2>" +
                "<Child3 ColumnIODirection='" + enDev2ColumnArgumentDirection.Both + "'>content</Child3>" +
                "<Child4 ColumnIODirection='" + enDev2ColumnArgumentDirection.Input + "'>content</Child4>" +
                "<Child5 ColumnIODirection='" + enDev2ColumnArgumentDirection.Output + "'>content</Child5>" +
                "</Child2>" +
                "</DataList>");

            //--------------------------Act-----------------------------------
            var dataListTo = new DataListTO(dataList.ToString(), false);

            //--------------------------Assert--------------------------------
            Assert.AreEqual(4, dataListTo.Inputs.Count);
            Assert.AreEqual(4, dataListTo.Outputs.Count);

            Assert.AreEqual("Child0", dataListTo.Inputs[0]);
            Assert.AreEqual("Child01", dataListTo.Inputs[1]);
            Assert.AreEqual("[[Child2(*).Child3]]", dataListTo.Inputs[2]);
            Assert.AreEqual("[[Child2(*).Child4]]", dataListTo.Inputs[3]);

            Assert.AreEqual("Child01", dataListTo.Outputs[0]);
            Assert.AreEqual("Child02", dataListTo.Outputs[1]);
            Assert.AreEqual("[[Child2(*).Child3]]", dataListTo.Outputs[2]);
            Assert.AreEqual("[[Child2(*).Child5]]", dataListTo.Outputs[3]);
        }
Ejemplo n.º 2
0
        public void DataListTO_IgnoreColumnDirection_True_ExpectSuccess()
        {
            //--------------------------Arrange-------------------------------
            var dataList = new StringBuilder(
                "<DataList>" +
                "<Child1>content</Child1>" +
                "<Child2>" +
                "<Child3>content</Child3>" +
                "<Child4>content</Child4>" +
                "<Child5>content</Child5>" +
                "</Child2>" +
                "</DataList>");

            //--------------------------Act-----------------------------------
            var dataListTo = new DataListTO(dataList.ToString(), true);

            //--------------------------Assert--------------------------------
            Assert.AreEqual(4, dataListTo.Inputs.Count);
            Assert.AreEqual(0, dataListTo.Outputs.Count);

            Assert.AreEqual("Child1", dataListTo.Inputs[0]);
            Assert.AreEqual("[[Child2(*).Child3]]", dataListTo.Inputs[1]);
            Assert.AreEqual("[[Child2(*).Child4]]", dataListTo.Inputs[2]);
            Assert.AreEqual("[[Child2(*).Child5]]", dataListTo.Inputs[3]);
        }
Ejemplo n.º 3
0
        public static void UpdateEnvironmentFromInputPayload(IDSFDataObject dataObject, StringBuilder rawPayload, string dataList, int update)
        {
            string toLoad = DataListUtil.StripCrap(rawPayload.ToString()); // clean up the rubish ;)

            if (toLoad.IsJSON())
            {
                XNode node = JsonConvert.DeserializeXNode(toLoad, "Root");
                if (node == null)
                {
                    return;
                }
                toLoad = node.ToString();
            }
            XmlDocument xDoc = new XmlDocument();

            toLoad = string.Format("<Tmp{0}>{1}</Tmp{0}>", Guid.NewGuid().ToString("N"), toLoad);
            xDoc.LoadXml(toLoad);
            dataList = dataList.Replace("ADL>", "DataList>").Replace("root>", "DataList>");
            if (xDoc.DocumentElement != null)
            {
                XmlNodeList children   = xDoc.DocumentElement.ChildNodes;
                var         dataListTO = new DataListTO(dataList);
                TryConvert(dataObject, children, dataListTO.Inputs, update);
            }
        }
Ejemplo n.º 4
0
        public void DataListTO_IgnoreColumnDirection_False_MapForInputOutput_AllColumnIODirectionSet_IsJson_True_ExpectSuccess()
        {
            //--------------------------Arrange-------------------------------
            var dataList = new StringBuilder(
                "<DataList>" +
                "<Child0 ColumnIODirection='" + enDev2ColumnArgumentDirection.Input + "' IsJson='True'>content</Child0>" +
                "<Child01 ColumnIODirection='" + enDev2ColumnArgumentDirection.Both + "' IsJson='True'>content</Child01>" +
                "<Child02 ColumnIODirection='" + enDev2ColumnArgumentDirection.Output + "' IsJson='True'>content</Child02>" +
                "<Child03 ColumnIODirection='" + enDev2ColumnArgumentDirection.None + "' IsJson='True'>content</Child03>" +
                "<Child1>content</Child1>" +
                "<Child2>" +
                "<Child3>content</Child3>" +
                "<Child4>content</Child4>" +
                "<Child5>content</Child5>" +
                "</Child2>" +
                "</DataList>");

            //--------------------------Act-----------------------------------
            var dataListTo = new DataListTO(dataList.ToString(), false);

            //--------------------------Assert--------------------------------
            Assert.AreEqual(2, dataListTo.Inputs.Count);
            Assert.AreEqual(2, dataListTo.Outputs.Count);

            Assert.AreEqual("Child0", dataListTo.Inputs[0]);
            Assert.AreEqual("Child01", dataListTo.Inputs[1]);

            Assert.AreEqual("Child01", dataListTo.Outputs[0]);
            Assert.AreEqual("Child02", dataListTo.Outputs[1]);
        }
        public InternalServiceContainer(ServiceAction sa, IDSFDataObject dataObj, IWorkspace theWorkspace, IEsbChannel esbChannel, EsbExecuteRequest request, IEsbManagementServiceLocator managementServiceLocator = null)
            : base(sa, dataObj, theWorkspace, esbChannel, request)
        {
            if (request.Args == null)
            {
                if (sa.DataListSpecification == null)
                {
                    sa.DataListSpecification = new StringBuilder("<DataList></DataList>");
                }
                var dataListTo = new DataListTO(sa.DataListSpecification.ToString());
                request.Args = new Dictionary <string, StringBuilder>();
                foreach (var input in dataListTo.Inputs)
                {
                    var warewolfEvalResult = dataObj.Environment.Eval(DataListUtil.AddBracketsToValueIfNotExist(input), 0);
                    if (warewolfEvalResult.IsWarewolfAtomResult)
                    {
                        var scalarResult = warewolfEvalResult as CommonFunctions.WarewolfEvalResult.WarewolfAtomResult;
                        if (scalarResult != null && !scalarResult.Item.IsNothing)
                        {
                            request.Args.Add(input, new StringBuilder(scalarResult.Item.ToString()));
                        }
                    }
                }
            }

            _managementServiceLocator = managementServiceLocator ?? new EsbManagementServiceLocator();
        }
Ejemplo n.º 6
0
        public static void UpdateEnvironmentFromOutputPayload(IDSFDataObject dataObject, StringBuilder rawPayload, string dataList)
        {
            dataList = dataList.Replace("ADL>", "DataList>").Replace("root>", "DataList>");
            var dataListTO = new DataListTO(dataList);
            var outputs    = dataListTO.Outputs;

            TryUpdateEnviromentWithMappings(dataObject, rawPayload, outputs);
        }
Ejemplo n.º 7
0
        static JToken BuildParametersObject(string dataList)
        {
            JArray arrayObj   = new JArray();
            var    dataListTo = new DataListTO(dataList);

            var scalarInputs = dataListTo.Inputs.Where(s => !DataListUtil.IsValueRecordset(s));

            foreach (var input in scalarInputs)
            {
                var inputObject = new JObject
                {
                    { "name", input },
                    { "in", "query" },
                    { "required", true },
                    {
                        "schema", new JObject
                        {
                            { "type", "string" }
                        }
                    }
                };
                arrayObj.Add(inputObject);
            }

            var recSetInputs   = dataListTo.Inputs.Where(DataListUtil.IsValueRecordset).ToList();
            var groupedRecSets = recSetInputs.GroupBy(DataListUtil.ExtractRecordsetNameFromValue);

            foreach (var groupedRecSet in groupedRecSets)
            {
                var recSetName      = groupedRecSet.Key;
                var propObject      = BuildPropertyDefinition(groupedRecSet);
                var recSchemaObject = new Schema
                {
                    Type       = "object",
                    Properties = propObject
                };
                var serializedSchema   = JsonConvert.SerializeObject(recSchemaObject);
                var deserializedSchema = JsonConvert.DeserializeObject(serializedSchema) as JToken;
                var recObject          = new JObject
                {
                    { "name", recSetName },
                    { "in", "query" },
                    { "required", true },
                    { "schema", deserializedSchema }
                };
                arrayObj.Add(recObject);
            }

            var serialized       = JsonConvert.SerializeObject(arrayObj);
            var des              = JsonConvert.DeserializeObject(serialized) as JToken;
            var definitionObject = des;

            return(definitionObject);
        }
Ejemplo n.º 8
0
        public void DataListTO_IgnoreColumnDirection_False_ExpectFail()
        {
            //--------------------------Arrange-------------------------------
            var dataList = new StringBuilder(
                "<DataList></DataList>");
            //--------------------------Act-----------------------------------
            var dataListTo = new DataListTO(dataList.ToString(), false);

            //--------------------------Assert--------------------------------
            Assert.AreEqual(0, dataListTo.Inputs.Count);
            Assert.AreEqual(0, dataListTo.Outputs.Count);
        }
Ejemplo n.º 9
0
        public void DataListTO_Load()
        {
            const string expectedResult = @"<DataList><Car Description=""A recordset of information about a car"" IsEditable=""True"" ColumnIODirection=""Both"" ><Make Description=""Make of vehicle"" IsEditable=""True"" ColumnIODirection=""None"" /><Model Description=""Model of vehicle"" IsEditable=""True"" ColumnIODirection=""None"" /></Car><Country Description=""name of Country"" IsEditable=""True"" ColumnIODirection=""Both"" /><Person Description="""" IsEditable=""True"" IsJson=""True"" IsArray=""False"" ColumnIODirection=""None"" ><Age Description="""" IsEditable=""True"" IsJson=""True"" IsArray=""False"" ColumnIODirection=""None"" ></Age><Name Description="""" IsEditable=""True"" IsJson=""True"" IsArray=""False"" ColumnIODirection=""None"" ></Name><School Description="""" IsEditable=""True"" IsJson=""True"" IsArray=""False"" ColumnIODirection=""None"" ><Name Description="""" IsEditable=""True"" IsJson=""True"" IsArray=""False"" ColumnIODirection=""None"" ></Name><Location Description="""" IsEditable=""True"" IsJson=""True"" IsArray=""False"" ColumnIODirection=""None"" ></Location></School></Person></DataList>";
            var          dataList       = new DataListTO(expectedResult, true);

            Assert.AreEqual("Country", dataList.Inputs[0]);
            Assert.AreEqual("[[Car(*).Make]]", dataList.Inputs[1]);
            Assert.AreEqual("[[Car(*).Model]]", dataList.Inputs[2]);
            Assert.AreEqual("[[Person(*).Age]]", dataList.Inputs[3]);
            Assert.AreEqual("[[Person(*).Name]]", dataList.Inputs[4]);
            Assert.AreEqual("[[Person(*).School]]", dataList.Inputs[5]);

            Assert.AreEqual(6, dataList.Inputs.Count);
        }
        public static void UpdateEnvironmentFromOutputPayload(IDSFDataObject dataObject, StringBuilder rawPayload, string dataList)
        {
            string      toLoad = DataListUtil.StripCrap(rawPayload.ToString()); // clean up the rubish ;)
            XmlDocument xDoc   = new XmlDocument();

            toLoad = string.Format("<Tmp{0}>{1}</Tmp{0}>", Guid.NewGuid().ToString("N"), toLoad);
            xDoc.LoadXml(toLoad);
            dataList = dataList.Replace("ADL>", "DataList>").Replace("root>", "DataList>");
            if (xDoc.DocumentElement != null)
            {
                XmlNodeList children   = xDoc.DocumentElement.ChildNodes;
                var         dataListTO = new DataListTO(dataList);
                TryConvert(dataObject, children, dataListTO.Outputs);
            }
        }
Ejemplo n.º 11
0
        public static void UpdateEnvironmentFromXmlPayload(IDSFDataObject dataObject, StringBuilder rawPayload, string dataList, int update)
        {
            var toLoad = rawPayload.ToString().ToCleanXml(); // clean up the rubish ;)
            var xDoc   = new XmlDocument();

            toLoad = string.Format("<Tmp{0:N}>{1}</Tmp{0:N}>", Guid.NewGuid(), toLoad);
            xDoc.LoadXml(toLoad);
            if (dataList != null)
            {
                dataList = dataList.Replace("ADL>", "DataList>").Replace("root>", "DataList>");
                if (xDoc.DocumentElement != null)
                {
                    var children   = xDoc.DocumentElement.ChildNodes;
                    var dataListTO = new DataListTO(dataList, true);
                    TryConvert(dataObject, children, dataListTO.Inputs, update);
                }
            }
        }
Ejemplo n.º 12
0
        static JToken GetParametersDefinition(out List <JObject> parameters, string dataList, out bool isScalarInputOnly)
        {
            var dataListTO    = new DataListTO(dataList);
            var scalarInputs  = dataListTO.Inputs.Where(s => !DataListUtil.IsValueRecordset(s));
            var recSetInputs  = dataListTO.Inputs.Where(DataListUtil.IsValueRecordset).ToList();
            var scalarOutputs = dataListTO.Outputs.Where(s => !DataListUtil.IsValueRecordset(s));
            var recSetOutputs = dataListTO.Outputs.Where(DataListUtil.IsValueRecordset);

            parameters        = null;
            isScalarInputOnly = true;
            var dataListSchema = new Dictionary <string, Schema>
            {
                {
                    "Output", new Schema
                    {
                        Type       = "object",
                        Properties = BuildDefinition(scalarOutputs, recSetOutputs)
                    }
                }
            };

            if (recSetInputs.Any())
            {
                dataListSchema.Add("DataList", new Schema
                {
                    Type       = "object",
                    Properties = BuildDefinition(scalarInputs, recSetInputs)
                });
                isScalarInputOnly = false;
            }
            else
            {
                parameters = scalarInputs.Select(scalarInput => new JObject
                {
                    { "name", scalarInput }, { "in", "query" }, { "required", true }, { "type", "string" }
                }).ToList();
            }
            var serialized       = JsonConvert.SerializeObject(dataListSchema);
            var des              = JsonConvert.DeserializeObject(serialized) as JToken;
            var definitionObject = des;

            return(definitionObject);
        }
Ejemplo n.º 13
0
        private static JToken BuildResponseSchema(string dataList)
        {
            var dataListTo    = new DataListTO(dataList);
            var scalarOutputs = dataListTo.Outputs.Where(s => !DataListUtil.IsValueRecordset(s));
            var recSetOutputs = dataListTo.Outputs.Where(DataListUtil.IsValueRecordset);

            var propertiesObject = scalarOutputs.ToDictionary(scalarInput => scalarInput, scalarInput => new Schema {
                Type = "string"
            });
            var groupedRecSets = recSetOutputs.GroupBy(DataListUtil.ExtractRecordsetNameFromValue);

            foreach (var groupedRecSet in groupedRecSets)
            {
                var recSetName = groupedRecSet.Key;
                var propObject = BuildPropertyDefinition(groupedRecSet);

                var recObject = new Schema
                {
                    Type       = "object",
                    Properties = propObject
                };
                propertiesObject.Add(recSetName, recObject);
            }

            var responseSchema = new Dictionary <string, Schema>
            {
                {
                    "schema", new Schema
                    {
                        Type       = "object",
                        Properties = propertiesObject,
                    }
                }
            };
            var serialized       = JsonConvert.SerializeObject(responseSchema);
            var definitionObject = JsonConvert.DeserializeObject(serialized) as JToken;
            var res = definitionObject;

            return(res);
        }
Ejemplo n.º 14
0
        public InternalServiceContainer(ServiceAction sa, IDSFDataObject dataObj, IWorkspace theWorkspace, IEsbChannel esbChannel, EsbExecuteRequest request)
            : base(sa, dataObj, theWorkspace, esbChannel, request)
        {
            var dataListTO = new DataListTO(sa.DataListSpecification.ToString());

            if (request.Args == null)
            {
                request.Args = new Dictionary <string, StringBuilder>();
                foreach (var input in dataListTO.Inputs)
                {
                    var warewolfEvalResult = dataObj.Environment.Eval(DataListUtil.AddBracketsToValueIfNotExist(input), 0, false);
                    if (warewolfEvalResult.IsWarewolfAtomResult)
                    {
                        var scalarResult = warewolfEvalResult as WarewolfDataEvaluationCommon.WarewolfEvalResult.WarewolfAtomResult;
                        if (scalarResult != null && !scalarResult.Item.IsNothing)
                        {
                            request.Args.Add(input, new StringBuilder(scalarResult.Item.ToString()));
                        }
                    }
                }
            }
        }
        public static string GetXmlInputFromEnvironment(IDSFDataObject dataObject, Guid workspaceGuid, string dataList)
        {
            var           environment    = dataObject.Environment;
            var           dataListTO     = new DataListTO(dataList);
            StringBuilder result         = new StringBuilder("<" + "DataList" + ">");
            var           scalarOutputs  = dataListTO.Inputs.Where(s => !DataListUtil.IsValueRecordset(s));
            var           recSetOutputs  = dataListTO.Inputs.Where(DataListUtil.IsValueRecordset);
            var           groupedRecSets = recSetOutputs.GroupBy(DataListUtil.ExtractRecordsetNameFromValue);

            foreach (var groupedRecSet in groupedRecSets)
            {
                var i = 1;
                var warewolfListIterators = new WarewolfListIterator();
                Dictionary <string, IWarewolfIterator> iterators = new Dictionary <string, IWarewolfIterator>();
                foreach (var name in groupedRecSet)
                {
                    var warewolfIterator = new WarewolfIterator(environment.Eval(name));
                    iterators.Add(DataListUtil.ExtractFieldNameFromValue(name), warewolfIterator);
                    warewolfListIterators.AddVariableToIterateOn(warewolfIterator);
                }
                while (warewolfListIterators.HasMoreData())
                {
                    result.Append("<");
                    result.Append(groupedRecSet.Key);
                    result.Append(string.Format(" Index=\"{0}\">", i));
                    foreach (var namedIterator in iterators)
                    {
                        var value = warewolfListIterators.FetchNextValue(namedIterator.Value);
                        result.Append("<");
                        result.Append(namedIterator.Key);
                        result.Append(">");
                        result.Append(value);
                        result.Append("</");
                        result.Append(namedIterator.Key);
                        result.Append(">");
                    }
                    result.Append("</");
                    result.Append(groupedRecSet.Key);
                    result.Append(">");
                    i++;
                }
            }


            foreach (var output in scalarOutputs)
            {
                var evalResult = environment.Eval(DataListUtil.AddBracketsToValueIfNotExist(output));
                if (evalResult.IsWarewolfAtomResult)
                {
                    var scalarResult = evalResult as WarewolfDataEvaluationCommon.WarewolfEvalResult.WarewolfAtomResult;
                    if (scalarResult != null && !scalarResult.Item.IsNothing)
                    {
                        result.Append("<");
                        result.Append(output);
                        result.Append(">");
                        result.Append(scalarResult.Item);
                        result.Append("</");
                        result.Append(output);
                        result.Append(">");
                    }
                }
            }

            result.Append("</" + "DataList" + ">");


            return(result.ToString());
        }
Ejemplo n.º 16
0
        public static string GetXmlOutputFromEnvironment(IDSFDataObject dataObject, string dataList, int update)
        {
            var           environment    = dataObject.Environment;
            var           dataListTO     = new DataListTO(dataList);
            StringBuilder result         = new StringBuilder("<DataList>");
            var           scalarOutputs  = dataListTO.Outputs.Where(s => !DataListUtil.IsValueRecordset(s));
            var           recSetOutputs  = dataListTO.Outputs.Where(DataListUtil.IsValueRecordset);
            var           groupedRecSets = recSetOutputs.GroupBy(DataListUtil.ExtractRecordsetNameFromValue);

            foreach (var groupedRecSet in groupedRecSets)
            {
                var i = 1;
                var warewolfListIterators = new WarewolfListIterator();
                Dictionary <string, IWarewolfIterator> iterators = new Dictionary <string, IWarewolfIterator>();
                foreach (var name in groupedRecSet)
                {
                    var warewolfEvalResult = WarewolfDataEvaluationCommon.WarewolfEvalResult.NewWarewolfAtomResult(DataASTMutable.WarewolfAtom.Nothing);
                    try
                    {
                        warewolfEvalResult = environment.Eval(name, update, false);
                    }
                    // ReSharper disable once RESP510236
                    // ReSharper disable once RESP510241
                    catch (Exception e)
                    {
                        Dev2Logger.Log.Debug("Null Variable", e);
                    }
                    var warewolfIterator = new WarewolfIterator(warewolfEvalResult);
                    iterators.Add(DataListUtil.ExtractFieldNameFromValue(name), warewolfIterator);
                    warewolfListIterators.AddVariableToIterateOn(warewolfIterator);
                }
                while (warewolfListIterators.HasMoreData())
                {
                    result.Append("<");
                    result.Append(groupedRecSet.Key);
                    result.Append(string.Format(" Index=\"{0}\">", i));
                    foreach (var namedIterator in iterators)
                    {
                        try
                        {
                            var value = warewolfListIterators.FetchNextValue(namedIterator.Value);
                            result.Append("<");
                            result.Append(namedIterator.Key);
                            result.Append(">");
                            result.Append(value);
                            result.Append("</");
                            result.Append(namedIterator.Key);
                            result.Append(">");
                        }
                        catch (Exception e)
                        {
                            Dev2Logger.Log.Debug(e.Message, e);
                        }
                    }
                    result.Append("</");
                    result.Append(groupedRecSet.Key);
                    result.Append(">");
                    i++;
                }
            }

            foreach (var output in scalarOutputs)
            {
                var evalResult = environment.Eval(DataListUtil.AddBracketsToValueIfNotExist(output), update, false);
                if (evalResult.IsWarewolfAtomResult)
                {
                    var scalarResult = evalResult as WarewolfDataEvaluationCommon.WarewolfEvalResult.WarewolfAtomResult;
                    if (scalarResult != null && !scalarResult.Item.IsNothing)
                    {
                        result.Append("<");
                        result.Append(output);
                        result.Append(">");
                        result.Append(scalarResult.Item);
                        result.Append("</");
                        result.Append(output);
                        result.Append(">");
                    }
                }
            }

            result.Append("</DataList>");


            return(result.ToString());
        }
        public static string GetJsonOutputFromEnvironment(IDSFDataObject dataObject, Guid workspaceGuid, string dataList)
        {
            var           environment    = dataObject.Environment;
            var           dataListTO     = new DataListTO(dataList);
            StringBuilder result         = new StringBuilder("{");
            var           keyCnt         = 0;
            var           scalarOutputs  = dataListTO.Outputs.Where(s => !DataListUtil.IsValueRecordset(s));
            var           recSetOutputs  = dataListTO.Outputs.Where(DataListUtil.IsValueRecordset);
            var           groupedRecSets = recSetOutputs.GroupBy(DataListUtil.ExtractRecordsetNameFromValue);
            var           recSets        = groupedRecSets as IGrouping <string, string>[] ?? groupedRecSets.ToArray();

            foreach (var groupedRecSet in recSets)
            {
                var i = 0;
                var warewolfListIterators = new WarewolfListIterator();
                Dictionary <string, IWarewolfIterator> iterators = new Dictionary <string, IWarewolfIterator>();
                foreach (var name in groupedRecSet)
                {
                    var warewolfIterator = new WarewolfIterator(environment.Eval(name));
                    iterators.Add(DataListUtil.ExtractFieldNameFromValue(name), warewolfIterator);
                    warewolfListIterators.AddVariableToIterateOn(warewolfIterator);
                }
                result.Append("\"");
                result.Append(groupedRecSet.Key);
                result.Append("\" : [");


                while (warewolfListIterators.HasMoreData())
                {
                    int colIdx = 0;
                    result.Append("{");
                    foreach (var namedIterator in iterators)
                    {
                        var value = warewolfListIterators.FetchNextValue(namedIterator.Value);
                        result.Append("\"");
                        result.Append(namedIterator.Key);
                        result.Append("\":\"");
                        result.Append(value);
                        result.Append("\"");

                        colIdx++;
                        if (colIdx < iterators.Count)
                        {
                            result.Append(",");
                        }
                    }
                    if (warewolfListIterators.HasMoreData())
                    {
                        result.Append("}");
                        result.Append(",");
                    }
                }
                result.Append("}");
                result.Append("]");
                i++;
                if (i < recSets.Count())
                {
                    result.Append(",");
                }
            }

            var scalars = scalarOutputs as string[] ?? scalarOutputs.ToArray();

            foreach (var output in scalars)
            {
                var evalResult = environment.Eval(DataListUtil.AddBracketsToValueIfNotExist(output));
                if (evalResult.IsWarewolfAtomResult)
                {
                    var scalarResult = evalResult as WarewolfDataEvaluationCommon.WarewolfEvalResult.WarewolfAtomResult;
                    if (scalarResult != null && !scalarResult.Item.IsNothing)
                    {
                        result.Append("\"");
                        result.Append(output);
                        result.Append("\":\"");
                        result.Append(scalarResult.Item);
                        result.Append("\"");
                    }
                }
                keyCnt++;
                if (keyCnt < scalars.Count())
                {
                    result.Append(",");
                }
            }
            var jsonOutputFromEnvironment = result.ToString();

            jsonOutputFromEnvironment += "}";
            return(jsonOutputFromEnvironment);
        }