Esempio n. 1
0
        /// <summary>
        /// Clears the errors.
        /// </summary>
        /// <author>Jurie.smit</author>
        /// <date>2013/02/06</date>
        public void ClearErrors()
        {
            IBinaryDataListEntry entry;
            string error;

            TryGetEntry(DataListUtil.BuildSystemTagForDataList(enSystemTag.Dev2Error, false), out entry, out error);
            if (entry != null)
            {
                entry.TryPutScalar(new BinaryDataListItem(string.Empty, GlobalConstants.ErrorPayload), out error);
            }
        }
Esempio n. 2
0
        // internal to impl api methods
        private IBinaryDataList ConvertTo(byte[] input, StringBuilder targetShape, out ErrorResultTO errors, bool onlyMapInputs)
        {
            errors = new ErrorResultTO();
            string payload = Encoding.UTF8.GetString(input);

            IBinaryDataList result = new BinaryDataList();
            TranslatorUtils tu     = new TranslatorUtils();

            // build shape
            if (targetShape == null)
            {
                errors.AddError("Null payload or shape");
            }
            else
            {
                ErrorResultTO invokeErrors;
                result = tu.TranslateShapeToObject(targetShape, true, out invokeErrors);
                errors.MergeErrors(invokeErrors);

                // populate the shape
                if (payload != string.Empty)
                {
                    try
                    {
                        string      toLoad = DataListUtil.StripCrap(payload); // clean up the rubish ;)
                        XmlDocument xDoc   = new XmlDocument();

                        // BUG 9626 - 2013.06.11 - TWR: ensure our DocumentElement
                        toLoad = string.Format("<Tmp{0}>{1}</Tmp{0}>", Guid.NewGuid().ToString("N"), toLoad);
                        xDoc.LoadXml(toLoad);

                        if (xDoc.DocumentElement != null)
                        {
                            XmlNodeList children = xDoc.DocumentElement.ChildNodes;

                            IDictionary <string, int> indexCache = new Dictionary <string, int>();

                            // BUG 9626 - 2013.06.11 - TWR: refactored for recursion
                            TryConvert(children, result, indexCache, errors, onlyMapInputs);
                        }

                        // Transfer System Tags
                        for (int i = 0; i < TranslationConstants.systemTags.Length; i++)
                        {
                            string  key   = TranslationConstants.systemTags.GetValue(i).ToString();
                            string  query = String.Concat("//", key);
                            XmlNode n     = xDoc.SelectSingleNode(query);

                            // try system namespace tags ;)
                            if (n == null)
                            {
                                var values = "//" + DataListUtil.BuildSystemTagForDataList(key, false);
                                query = values;
                                n     = xDoc.SelectSingleNode(query);
                            }

                            if (n != null && !string.IsNullOrEmpty(n.InnerXml))
                            {
                                string bkey = DataListUtil.BuildSystemTagForDataList(key, false);
                                string error;
                                IBinaryDataListEntry sysEntry;
                                if (result.TryGetEntry(bkey, out sysEntry, out error))
                                {
                                    sysEntry.TryPutScalar(Dev2BinaryDataListFactory.CreateBinaryItem(n.InnerXml, bkey), out error);
                                }
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        // if use passed in empty input they only wanted the shape ;)
                        if (input.Length > 0)
                        {
                            errors.AddError(e.Message);
                        }
                    }
                }
            }
            return(result);
        }