コード例 #1
0
        public static Result Parse(string resultXml)
        {
            var document        = XDocument.Parse(resultXml);
            var status          = document.SafeGet <Status>("/result/status");
            var result          = new Result(status);
            var exceptionResult = document.XPathSelectElement("/result/exception/exceptionresult");

            if (exceptionResult != null)
            {
                result.Exception = ExceptionResult.Parse(exceptionResult.ToString());
            }

            foreach (var supplement in document.XPathSelectElements("/result/supplements/supplement"))
            {
                var key         = supplement.Attribute("key")?.Value;
                var supplements = supplement.Elements("entry").ToDictionary(x => x.Attribute("key")?.Value, x => x.Value);

                if (key != null)
                {
                    result.Supplements.Add(key, supplements);
                }
            }

            return(result);
        }
コード例 #2
0
        public IMessage SyncProcessMessage(IMessage msg)
        {
            var methodCall = msg as IMethodCallMessage;

            if (methodCall != null)
            {
                return(RemotingServices.ExecuteMessage(this, methodCall));
            }

            // This is all a bit ugly but gives us version independance for the moment
            string value    = msg.Properties["data"] as string;
            var    doc      = XDocument.Load(new StringReader(value));
            var    element  = doc.XPathSelectElement("/listener/*");
            var    listener = (ISpecificationRunListener)this;

            switch (element.Name.ToString())
            {
            case "onassemblystart":
                listener.OnAssemblyStart(AssemblyInfo.Parse(element.XPathSelectElement("//onassemblystart/*").ToString()));
                break;

            case "onassemblyend":
                listener.OnAssemblyEnd(AssemblyInfo.Parse(element.XPathSelectElement("//onassemblyend/*").ToString()));
                break;

            case "onrunstart":
                listener.OnRunStart();
                break;

            case "onrunend":
                listener.OnRunEnd();
                break;

            case "oncontextstart":
                listener.OnContextStart(ContextInfo.Parse(element.XPathSelectElement("//oncontextstart/*").ToString()));
                break;

            case "oncontextend":
                listener.OnContextEnd(ContextInfo.Parse(element.XPathSelectElement("//oncontextend/*").ToString()));
                break;

            case "onspecificationstart":
                listener.OnSpecificationStart(SpecificationInfo.Parse(element.XPathSelectElement("//onspecificationstart/*").ToString()));
                break;

            case "onspecificationend":
                listener.OnSpecificationEnd(
                    SpecificationInfo.Parse(element.XPathSelectElement("//onspecificationend/specificationinfo").ToString()),
                    Result.Parse(element.XPathSelectElement("//onspecificationend/result").ToString()));
                break;

            case "onfatalerror":
                listener.OnFatalError(ExceptionResult.Parse(element.XPathSelectElement("//onfatalerror/*").ToString()));
                break;
            }

            return(null);
        }