Exemple #1
0
        public void TestMultidimStringArray()
        {
            string[,] x;
            x = (string[, ])Array.CreateInstance(typeof(string), new int[] { 2, 2 }, new int[] { 5, 9 });

            x[5, 9]  = "first";
            x[5, 10] = "second";
            x[6, 9]  = "third";
            x[6, 10] = "fourth";

            var c = new CSerializationContext();

            c.SetConcise();

            var s   = new CSerializer(c);
            var doc = s.Serialize(x);

            Print(doc);
            var elem = doc.DocumentElement;

            Assert.AreEqual(1, elem.ChildNodes.Count, "Should be one child (an XmlText node)");
            Assert.AreEqual("2,2",
                            XmlExtensions.GetAttributeValue(elem, c.ArrayAttributeName),
                            "Array Lengths are wrong");
            Assert.AreEqual("5,9",
                            XmlExtensions.GetAttributeValue(elem, c.ArrayLowerBoundAttribute),
                            "Array Lowerbounds are wrong");
            Assert.AreEqual("first,second,third,fourth", elem.InnerText, "The text for the multidim array is wrong");
        }
        public static JobResponse ParseResponseContent(Stream content)
        {
            var masterObjectList = XmlExtensions.ReadDocument(content).ElementOrThrow("MasterObjectList");

            return(new JobResponse(
                       bucketName: masterObjectList.AttributeText("BucketName"),
                       jobId: Guid.Parse(masterObjectList.AttributeText("JobId")),
                       priority: masterObjectList.AttributeText("Priority"),
                       requestType: masterObjectList.AttributeText("RequestType"),
                       startDate: DateTime.Parse(masterObjectList.AttributeText("StartDate")),
                       chunkOrder: ParseChunkOrdering(masterObjectList.AttributeText("ChunkClientProcessingOrderGuarantee")),
                       nodes: (
                           from nodesElement in masterObjectList.Elements("Nodes")
                           from nodeElement in nodesElement.Elements("Node")
                           select new Node(
                               Guid.Parse(nodeElement.AttributeText("Id")),
                               nodeElement.AttributeText("EndPoint"),
                               ParseIntOrNull(nodeElement.AttributeTextOrNull("HttpPort")),
                               ParseIntOrNull(nodeElement.AttributeTextOrNull("HttpsPort"))
                               )
                           ).ToList(),
                       objectLists: masterObjectList
                       .Elements("Objects")
                       .Select(ParseObjectList)
                       .ToList(),
                       status: ResponseParseUtilities.ParseJobStatus(masterObjectList.AttributeTextOrNull("Status"))
                       ));
        }
Exemple #3
0
        public void TestExternalSurrogate()
        {
            var x = new CStdBaseObject
            {
                Name = "Alyssa",
                Age  = 21
            };
            var c = new CSerializationContext();

            var s   = new CSerializer(c);
            var doc = s.Serialize(x);

            Print(doc);
            var elem = doc.DocumentElement;

            Assert.AreEqual(2, elem.ChildNodes.Count, "Child Node Count is wrong");
            Assert.AreEqual(x.Name, XmlExtensions.GetElementValue(elem, "Name"), "Name");
            Assert.AreEqual(x.Age.ToString(), XmlExtensions.GetElementValue(elem, "Age"), "Age");

            Console.WriteLine(
                "\r\n\r\n-----------------------------------------------------------------------------\r\n\r\n");
            c.RegisterExternalSurrogate(typeof(CStdBaseObject), new CStdExternalSurrogate());

            doc = s.Serialize(x);
            Print(doc);
            elem = doc.DocumentElement;

            Assert.AreEqual(0, elem.ChildNodes.Count, "Child Node Count is wrong");
            Assert.AreEqual(x.Name, XmlExtensions.GetAttributeValue(elem, "NAME"), "Name");
            Assert.AreEqual(x.Age.ToString(), XmlExtensions.GetAttributeValue(elem, "AGE"), "Age");
        }
Exemple #4
0
        private void InitializePublicKeyTokens()
        {
            this._knownPublicKeyTokens = new Dictionary <int, byte[]>();
            var keysNode = this.XmlNode.DocumentElement.SelectSingleNode("./vre:PublicKeys", this.XmlNamespaceManager);

            if (keysNode != null)
            {
                var xnlKeys = keysNode.SelectNodes("./vre:PublicKey", this.XmlNamespaceManager);
                if (xnlKeys != null && xnlKeys.Count > 0)
                {
                    foreach (XmlElement element in xnlKeys)
                    {
                        int id = XmlExtensions.ParseAttribute(element, "Id");
                        if (id != -1)
                        {
                            byte[] token = XmlExtensions.ParseAttribute <byte[]>(element, "Token", (str, def) =>
                            {
                                try
                                {
                                    return(StringHandling.FromFormatHexadecimal(str));
                                }
                                catch (Exception e)
                                {
                                    return(def);
                                }
                            }, new byte[0]);
                            if (token != null && token.Length == 8)
                            {
                                this._knownPublicKeyTokens.Add(id, token);
                            }
                        }
                    }
                }
            }
        }
        public override IScope Render(IReportContext context, IScope scope, object item)
        {
            scope    = scope ?? context.Scope;
            Template = Template ?? XmlExtensions.Load(FileName, BxlParserOptions.ExtractSingle);
            Xi       = Xi ?? new XmlInterpolation {
                UseExtensions = true, XmlIncludeProvider = new XmlIncludeProvider {
                    Container = _container
                }
            };
            IScope ws = null;

            if (null == context)
            {
                ws = scope;
            }
            else
            {
                ws               = new Scope(context.Data);
                ws["data"]       = context.Data;
                ws["context"]    = context;
                ws["scope"]      = scope;
                ws["item"]       = item;
                ws["reportcode"] = context.Report.Id;
                ws["reportname"] = context.Report.Name;
            }
            var result = Xi.Interpolate(Template, ws);

            RemoveDebugInfo(scope, result);
            Finalize(context, scope, result);
            return(scope);
        }
Exemple #6
0
        public void MySerialize(CSerializer _framework, XmlNode _node)
        {
            XmlExtensions.AddAttribute(_node, "NAME", Name);
            XmlExtensions.AddAttribute(_node, "AGE", Age);

            STATUS = ETestStatus.IMPLICIT_SERIALIZER_VOID;
        }
Exemple #7
0
        public void TestNullableType()
        {
            int?x = null;
            var s = new CSerializer();

            CSerializationContext.Global.SetVerbose();

            var doc = s.Serialize(x);

            Print(doc);
            var elem = doc.DocumentElement;

            Assert.AreEqual(CSerializationContext.Global.NullAttributeValue,
                            XmlExtensions.GetAttributeValue(elem, CSerializationContext.Global.NullAttributeName),
                            "Should be null");
            Assert.AreEqual("", elem.InnerText, "Should be no innerText");

            PrintLine();

            x   = 69;
            doc = s.Serialize(x);
            Print(doc);
            elem = doc.DocumentElement;
            Assert.AreEqual(x.GetType().AssemblyQualifiedName,
                            XmlExtensions.GetAttributeValue(elem, CSerializationContext.Global.TypeAttributeName),
                            "The Type is wrong");
        }
Exemple #8
0
        public AllocateJobChunkResponse Parse(AllocateJobChunkRequest request, IWebResponse response)
        {
            using (response)
            {
                ResponseParseUtilities.HandleStatusCode(response, HttpStatusCode.OK, HttpStatusCode.ServiceUnavailable, HttpStatusCode.NotFound);
                using (var responseStream = response.GetResponseStream())
                {
                    switch (response.StatusCode)
                    {
                    case HttpStatusCode.OK:
                        return(AllocateJobChunkResponse.Success(
                                   JobResponseParser <AllocateJobChunkRequest> .ParseObjectList(
                                       XmlExtensions
                                       .ReadDocument(responseStream)
                                       .ElementOrThrow("Objects")
                                       )
                                   ));

                    case HttpStatusCode.ServiceUnavailable:
                        return(AllocateJobChunkResponse.RetryAfter(TimeSpan.FromSeconds(int.Parse(response.Headers["retry-after"]))));

                    case HttpStatusCode.NotFound:
                        return(AllocateJobChunkResponse.ChunkGone);

                    default:
                        throw new NotSupportedException(Resources.InvalidEnumValueException);
                    }
                }
            }
        }
        public override void OnApplyTemplate()
        {
            DebugHelper.AssertUIThread();

            base.OnApplyTemplate();

            if (this.ViewSettings != null)
            {
                XElement viewSettingsElement = this.ViewSettings.ViewSettingsElement;

                this.IsZoomToFit = XmlExtensions.GetAttribute(viewSettingsElement, "zoomToFit", true);

                if (!this.IsZoomToFit)
                {
                    this.Zoom = XmlExtensions.GetAttribute(viewSettingsElement, "zoomLevel", 100);
                }
            }

            this.scrollViewer = GetTemplateChild("PART_ScrollViewer") as ScrollViewer;
            if (this.scrollViewer != null)
            {
                this.scrollViewer.PreviewMouseWheel += (source, e) => this.OnMouseWheel(e);
            }

            this.scaleTransform = GetTemplateChild("PART_ScaleTransform") as ScaleTransform;
        }
Exemple #10
0
        public void TestArraySurrogate()
        {
            var x = new int[] { 1, 3, 5, 7, 9 };

            var c = new CSerializationContext();

            c.SetConcise();
            var helper = new CIntArraySurrogate();

            c.RegisterExternalSurrogate(typeof(int[]), helper);

            var s   = new CSerializer(c);
            var doc = s.Serialize(x);

            Console.WriteLine("Depth of resulting XML: " + XmlExtensions.Depth(doc));
            Console.WriteLine("Length of resulting XML String: " + doc.OuterXml.Length);
            Console.WriteLine("Number of resulting XmlElements: " + XmlExtensions.ElementCount(doc));
            Print(doc);

            var d = new CDeserializer(c);
            var y = (int[])d.Deserialize(doc);

            Assert.AreEqual(x.Length, y.Length - 1, "Length of resulting array is wrong");
            for (var i = 0; i < x.Length; i++)
            {
                Assert.AreEqual(x[i], y[i], "Invalid element at: " + i);
            }
        }
 public GetJobListResponse Parse(GetJobListRequest request, IWebResponse response)
 {
     using (response)
     {
         ResponseParseUtilities.HandleStatusCode(response, HttpStatusCode.OK);
         using (var stream = response.GetResponseStream())
         {
             return(new GetJobListResponse(
                        jobs: XmlExtensions
                        .ReadDocument(stream)
                        .ElementOrThrow("Jobs")
                        .Elements("Job")
                        .Select(jobElement => new JobInfo(
                                    jobElement.AttributeText("BucketName"),
                                    jobElement.AttributeText("StartDate"),
                                    Guid.Parse(jobElement.AttributeText("JobId")),
                                    jobElement.AttributeText("Priority"),
                                    jobElement.AttributeText("RequestType"),
                                    ResponseParseUtilities.ParseJobStatus(jobElement.AttributeText("Status"))
                                    ))
                        .ToList()
                        ));
         }
     }
 }
Exemple #12
0
        public void TestStringCounter()
        {
            var x = new CTypeCounter();

            var c = new CSerializationContext();

            c.SetConcise();
            c.RegisterExternalSurrogate(typeof(string), x);

            var s   = new CSerializer(c);
            var doc = s.Serialize(x);

            Assert.AreEqual(3, x.Count, "There should have been 3 strings counted.");

            Console.WriteLine("Depth of resulting XML: " + XmlExtensions.Depth(doc));
            Console.WriteLine("Length of resulting XML String: " + doc.OuterXml.Length);
            Console.WriteLine("Number of resulting XmlElements: " + XmlExtensions.ElementCount(doc));
            Print(doc);

            var d = new CDeserializer(c);
            var y = d.Deserialize <CTypeCounter>(doc);

            Assert.AreEqual(0, y.Count, "The new object should have no counted strings");
            Assert.AreEqual(6, x.Count, "The initial object should have strings counted for 2 actions");
        }
Exemple #13
0
            public bool Serialize(object _object, Type _useType, XmlElement _parentNode, CSerializer _serializer)
            {
                var array = (int[])_object;

                XmlExtensions.AddAttribute(_parentNode, "MYLEN", array.Length);
                return(false);
            }
Exemple #14
0
        public void TestExternalSurrogate()
        {
            CBigPerson.GenerateData(100);
            var c = new CSerializationContext();

            c.SetConcise();
            var helper = new CFriendSerializer();

            c.RegisterExternalSurrogate(typeof(CFriend), helper);

            var s   = new CSerializer(c);
            var doc = s.Serialize(CBigPerson.People);

            Console.WriteLine("Depth of resulting XML: " + XmlExtensions.Depth(doc));
            Console.WriteLine("Length of resulting XML String: " + doc.OuterXml.Length);
            Console.WriteLine("Number of resulting XmlElements: " + XmlExtensions.ElementCount(doc));
            Print(doc);

            var d  = new CDeserializer(c);
            var x2 = d.Deserialize <CBigPerson[]>(doc);

            helper.FinishDeserializing(x2);

            CDeserializeTest.AssertEqualBigPeopleArray(CBigPerson.People, x2);
        }
        public static void LoadRepositoryXml(string filePath, ContentManager content)
        {
            XmlDocument document = new XmlDocument();

            document.Load(filePath);

            foreach (XmlNode itemNode in document.SelectNodes("ItemRepository/Item"))
            {
                Item item = new Item();
                item.Name = XmlExtensions.GetAttributeValue(itemNode, "Name", null, true);

                item.FriendlyName = itemNode.SelectSingleNode("FriendlyName").InnerText;
                item.Description  = itemNode.SelectSingleNode("Description").InnerText;
                item.Weight       = XmlExtensions.GetAttributeValue <float>(itemNode, "Weight", 0);
                item.ItemType     = (ItemType)Enum.Parse(typeof(ItemType), XmlExtensions.GetAttributeValue(itemNode, "ItemType", null, true));

                foreach (XmlNode drawableSetNode in itemNode.SelectNodes("Drawables/Drawable"))
                {
                    string src = XmlExtensions.GetAttributeValue(drawableSetNode, "src");
                    DrawableSet.LoadDrawableSetXml(item.Drawables, src, content);
                }

                GameItems.Add(item.Name, item);
            }
        }
        /// <summary>
        /// 从请求流中反序列化构造参数值
        /// </summary>
        /// <param name="p"></param>
        /// <param name="requst"></param>
        /// <returns></returns>
        public virtual object FromBodyDeserializeObject(ParameterInfo p, HttpRequest requst)
        {
            // 从请求流中反序列化对象中,要注意三点:
            // 1、忽略参数的名称
            // 2、直接使用参数类型,不做可空类型处理
            // 3、仅支持 JSON, XML 的数据格式

            SerializeFormat format = RequestContentType.GetFormat(requst.ContentType);

            if (format == SerializeFormat.Json)
            {
                string text = requst.GetPostText();
                return(JsonExtensions.FromJson(text, p.ParameterType));
            }

            if (format == SerializeFormat.Xml)
            {
                string text = requst.GetPostText();
                return(XmlExtensions.FromXml(text, p.ParameterType));
            }

            // 仅仅是需要读取整个请求流字符串,
            // 而且目标类型已经是字符串,就没有必要反序列化了,所以就直接以字符串返回
            if (p.ParameterType == typeof(string))
            {
                return(requst.GetPostText());
            }

            throw new NotSupportedException("[FromBody]标记只能配合 JSON/XML 数据格式来使用。");
        }
Exemple #17
0
        public void TestSuperclassedArray()
        {
            var x = new CSuperArray
            {
                Arr = new int[] { 1, 3, 5 }
            };

            var s   = new CSerializer();
            var doc = s.Serialize(x);

            Print(doc);
            var elem = doc.DocumentElement;

            Assert.AreEqual(typeof(CSuperArray).AssemblyQualifiedName,
                            XmlExtensions.GetAttributeValue(elem, s.Context.TypeAttributeName),
                            "Type of the root node is wrong");

            var e = (XmlElement)elem.SelectSingleNode("Arr");

            Assert.IsNotNull(e, "Missing Arr element");
            Assert.AreEqual(x.Arr.GetType().AssemblyQualifiedName,
                            XmlExtensions.GetAttributeValue(e, s.Context.TypeAttributeName),
                            "Type Attribute Error");
            Assert.AreEqual(x.Arr.Length.ToString(),
                            XmlExtensions.GetAttributeValue(e, s.Context.ArrayAttributeName),
                            "Length of Array Attribute is wrong");
            Assert.AreEqual("1,3,5", elem.InnerText, "Inner Text for the array");
        }
 public DeleteObjectListResponse Parse(DeleteObjectListRequest request, IWebResponse response)
 {
     using (response)
     {
         ResponseParseUtilities.HandleStatusCode(response, HttpStatusCode.OK);
         using (var content = response.GetResponseStream())
         {
             var deleteResult = XmlExtensions
                                .ReadDocument(content)
                                .ElementOrThrow("DeleteResult");
             return(new DeleteObjectListResponse(
                        deletedObjects: deleteResult
                        .Elements("Deleted")
                        .Select(el => el.TextOf("Key"))
                        .ToList(),
                        deleteErrors: deleteResult
                        .Elements("Error")
                        .Select(el => new DeleteDs3ObjectError(
                                    el.TextOf("Key"),
                                    el.TextOf("Code"),
                                    el.TextOf("Message")
                                    ))
                        .ToList()
                        ));
         }
     }
 }
Exemple #19
0
        public bool MySerialize(CSerializer _framework, XmlNode _node)
        {
            XmlExtensions.AddAttribute(_node, "Incomplete", "Yes");

            STATUS = ETestStatus.IMPLICIT_SERIALIZER_INCOMPLETE;
            return(false);
        }
Exemple #20
0
        public void TestExternalBaseSurrogate()
        {
            var x = new CMySuperStd
            {
                Name = "Alyssa",
                Age  = 21,
                Sex  = "Yes"
            };

            var c = new CSerializationContext();

            var s   = new CSerializer(c);
            var doc = s.Serialize(x);

            Print(doc);
            var elem = doc.DocumentElement;

            Assert.AreEqual(3, elem.ChildNodes.Count, "Child Node Count is wrong");
            Assert.AreEqual(x.Name, XmlExtensions.GetElementValue(elem, "Name"), "Name");
            Assert.AreEqual(x.Age.ToString(), XmlExtensions.GetElementValue(elem, "Age"), "Age");
            Assert.AreEqual(x.Sex, XmlExtensions.GetElementValue(elem, "Sex"), "Sex");

            PrintLine();

            c.RegisterExternalSurrogate(typeof(CStdBaseObject), new CStdExternalSurrogate());

            doc = s.Serialize(x);
            Print(doc);
            elem = doc.DocumentElement;

            Assert.AreEqual(1, elem.ChildNodes.Count, "Child Node Count is wrong");
            Assert.AreEqual(x.Name, XmlExtensions.GetAttributeValue(elem, "NAME"), "Name");
            Assert.AreEqual(x.Age.ToString(), XmlExtensions.GetAttributeValue(elem, "AGE"), "Age");
            Assert.AreEqual(x.Sex, XmlExtensions.GetElementValue(elem, "Sex"), "Sex");
        }
        Hashtable Transform(RestResponse restResponse)
        {
            var result = XmlExtensions.ToHash(restResponse.Content);

            result[DefensioResult.HttpStatusCodeKey] = restResponse.HttpStatusCode;
            return(result);
        }
        public void SignXml()
        {
            var path     = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
            var dataPath = Path.Combine(path, "Data", "test.xml");

            try
            {
                SetupCertificate();

                new XElement(nameof(SignXml)).Save(dataPath);
                var xmlDoc = new XmlDocument();
                xmlDoc.PreserveWhitespace = true;
                xmlDoc.Load(dataPath);

                var cert = XmlExtensions.GetCertificate("CN=Gnu.Licensing", StoreName.My, StoreLocation.CurrentUser);
                XmlExtensions.SignXml(xmlDoc, cert);

                bool result = XmlExtensions.VerifyXmlFile(xmlDoc);

                Assert.True(result);
            }
            finally
            {
                File.Delete(dataPath);
            }
        }
    public static void Test()
    {
        var request = new Request
        {
            SName   = "Hi",
            Message = new Message
            {
                AddO = new AddO
                {
                    CaseD = new CaseD {
                        CaseA = new CaseA {
                            Value = "Test Value"
                        }
                    },
                }
            }
        };
        var xml = request.GetXml(XmlExtensions.NoStandardXmlNamespaces(), true);

        Debug.WriteLine(xml);
        var request2 = xml.LoadFromXML <Request>();

        Debug.WriteLine(request2.GetXml(XmlExtensions.NoStandardXmlNamespaces(), true));
        Debug.Assert(request.Message.AddO.CaseD.CaseA.Value == request2.Message.AddO.CaseD.CaseA.Value);     // No assert.
    }
Exemple #24
0
        public bool MySerialize(CSerializer _serializer, XmlNode _node)
        {
            XmlExtensions.AddAttribute(_node, "NAME", Name);
            XmlExtensions.AddAttribute(_node, "AGE", Age);

            STATUS = ETestStatus.IMPLICIT_SERIALIZER;
            return(true);
        }
Exemple #25
0
        public override void LoadViewState(XElement state)
        {
            DebugHelper.AssertUIThread();

            if (state != null)
            {
                this.sideBarExpanded = XmlExtensions.GetAttribute(state, "sidebarExpanded", this.sideBarExpanded);
            }
        }
Exemple #26
0
 public ConfigService(SystemResourcesService systemResources)
 {
     this.systemResources = systemResources;
     configPath           = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                         dir,
                                         "config.xml");
     xmlExtensions = new XmlExtensions(configPath);
     oldOptions_   = new OptionsModel();
 }
Exemple #27
0
 public void TestStripInvalid()
 {
     Assert.AreEqual(null, XmlExtensions.StripInvalidCharsFromXml(null));
     Assert.AreEqual("", "".StripInvalidCharsFromXml());
     Assert.AreEqual("<normal>XML!</normal>", "<normal>XML!</normal>".StripInvalidCharsFromXml());
     Assert.AreEqual("spaces\tabs\rand\n.~ all OK", "spaces\tabs\rand\n.~ all OK".StripInvalidCharsFromXml());
     Assert.AreEqual("now try  and  or  and how about ?", "now try \a and \0 or \v and how about \xFFFF?".StripInvalidCharsFromXml());
     Assert.AreEqual("and of course", "\0and\xc of course\0".StripInvalidCharsFromXml());
 }
        public void DepthTest()
        {
            var actual = XmlExtensions.Depth(m_xml);

            Assert.AreEqual <int>(4, actual, "Depth is not right");

            actual = XmlExtensions.Depth(null);
            Assert.AreEqual <int>(0, actual, "Null should have zero depth");
        }
Exemple #29
0
 private void CheckInitialization()
 {
     if (!this.initialized)
     {
         initialized = true;
         var libraries = XmlExtensions.ParseDictionary <Dictionary <string, IVreLibrary <TEnvironment, TVersion, TIdentityManager> >, string, IVreLibrary <TEnvironment, TVersion, TIdentityManager>, XmlElement>(this.Environment.XmlNode.DocumentElement, this.Environment.XmlNamespaceManager, "Libraries", "Library", GetLibraryFromDetail, keyDetail => keyDetail.Extra.Item2.Name);
         base._AddRange(libraries);
     }
 }
        public void GetElementValueTest()
        {
            var actual = XmlExtensions.GetElementValue(m_xml, "/a/b");

            Assert.AreEqual <string>("Bear", actual, "The value of /a/b is wrong");

            var shouldBeNull = XmlExtensions.GetElementValue(m_xml, "/a/ff");

            Assert.IsNull(shouldBeNull, "Should be null when the element can't be found");
        }
		/// <summary>
		/// 	Makeerrors the specified r.
		/// </summary>
		/// <param name="r"> The r. </param>
		/// <param name="t"> The t. </param>
		/// <param name="ic"> The ic. </param>
		/// <param name="desc"> The desc. </param>
		/// <param name="error"> The error. </param>
		/// <param name="code"> The code. </param>
		/// <returns> </returns>
		/// <remarks>
		/// </remarks>
		private bool Makeerror(XNode r, ThemaDescriptor t, string ic, XmlExtensions.XmlElementDescriptor desc, string error,
		                       int code) {
			r.Remove();
			var message = string.Format("error in uselib resolution in {0}/{1} {2}:{3} - {4}", t.Code, ic, desc.File,
			                            desc.Line,
			                            error);
			var ecprefix = "WRLIBR0";
			var level = ErrorLevel.Warning;
			if (Context.Project.NonResolvedLibraryIsError) {
				ecprefix = "ERLIBR0";
				level = ErrorLevel.Error;
			}
			var ecode = ecprefix + code;
			AddError(level, message, ecode, null, desc.File, desc.Line);
			if (ErrorLevel.Error == level) {
				UserLog.Error(message);
			}
			else {
				UserLog.Warn(message);
			}
			return ErrorLevel.Error == level;
		}