internal XmlaException(XmlaResultCollection results)
 {
     if (results == null)
     {
         throw new ArgumentNullException("results");
     }
     this.m_results = results;
 }
예제 #2
0
        internal static Exception ExceptionOnError(XmlaResultCollection col)
        {
            XmlaException ex = new XmlaException(col);

            if (col.ContainsInvalidSessionError)
            {
                return(new XmlaStreamException(ex));
            }
            return(ex);
        }
예제 #3
0
        public static object ReadRowsetProperty(XmlReader reader, string elementName, string elementNamespace, Type type, bool throwOnInlineError, bool isArray, bool convertToLocalTime)
        {
            object result = null;

            if (isArray)
            {
                ArrayList arrayList   = new ArrayList();
                Type      elementType = type.GetElementType();
                while (reader.IsStartElement(elementName, elementNamespace))
                {
                    object obj = FormattersHelpers.ReadRowsetProperty(reader, elementName, elementNamespace, elementType, throwOnInlineError, false, convertToLocalTime);
                    if (obj is XmlaError)
                    {
                        if (throwOnInlineError)
                        {
                            throw XmlaResultCollection.ExceptionOnError(new XmlaResult
                            {
                                Messages =
                                {
                                    (XmlaError)obj
                                }
                            });
                        }
                        while (reader.IsStartElement(elementName, elementNamespace))
                        {
                            reader.Skip();
                        }
                        result = obj;
                        break;
                    }
                    else
                    {
                        arrayList.Add(obj);
                    }
                }
                Array array = Array.CreateInstance(elementType, arrayList.Count);
                arrayList.CopyTo(array);
                result = array;
            }
            else
            {
                if (!reader.IsEmptyElement)
                {
                    using (FormattersHelpers.GetWhitespaceHandlingRestorer(reader, WhitespaceHandling.All))
                    {
                        reader.ReadStartElement(elementName, elementNamespace);
                        if (reader.NodeType == XmlNodeType.Text)
                        {
                            result = FormattersHelpers.ConvertFromXml(reader.ReadString(), type, convertToLocalTime);
                        }
                        else
                        {
                            string text = FormattersHelpers.ReadWhiteSpace(reader);
                            if (reader.NodeType == XmlNodeType.EndElement)
                            {
                                result = text;
                            }
                            else
                            {
                                bool flag         = false;
                                bool skipElements = false;
                                if (type == typeof(object) || type == typeof(string))
                                {
                                    flag         = true;
                                    skipElements = ((XmlaReader)reader).SkipElements;
                                    ((XmlaReader)reader).SkipElements = false;
                                }
                                try
                                {
                                    if ((result = XmlaClient.CheckAndGetRowsetError(reader, throwOnInlineError)) == null)
                                    {
                                        FormattersHelpers.CheckException(reader);
                                        if (flag)
                                        {
                                            result = FormattersHelpers.ReadPropertyXml(reader);
                                        }
                                    }
                                }
                                finally
                                {
                                    if (flag)
                                    {
                                        ((XmlaReader)reader).SkipElements = skipElements;
                                    }
                                }
                            }
                        }
                        reader.ReadEndElement();
                        return(result);
                    }
                }
                reader.Skip();
                result = FormattersHelpers.ConvertFromXml(string.Empty, type, convertToLocalTime);
            }
            return(result);
        }
 internal XmlaException(XmlaResult result)
 {
     this.m_results = new XmlaResultCollection();
     this.m_results.Add(result);
 }