예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="serviceProvider"></param>
        /// <param name="reader"></param>
        /// <returns></returns>
        internal static LocationServiceData FromXml(IServiceProvider serviceProvider, XmlReader reader)
        {
            LocationServiceData obj = new LocationServiceData();

            Debug.Assert(reader.NodeType == XmlNodeType.Element, "Expected a node.");

            Boolean empty = reader.IsEmptyElement;

            // Process the xml attributes
            if (reader.HasAttributes)
            {
                while (reader.MoveToNextAttribute())
                {
                    switch (reader.Name)
                    {
                    case "AccessPointsDoNotIncludeWebAppRelativeDirectory":
                        obj.m_accessPointsDoNotIncludeWebAppRelativeDirectory = XmlConvert.ToBoolean(reader.Value);
                        break;

                    case "ClientCacheFresh":
                        obj.ClientCacheFresh = XmlConvert.ToBoolean(reader.Value);
                        break;

                    case "DefaultAccessMappingMoniker":
                        obj.DefaultAccessMappingMoniker = reader.Value;
                        break;

                    case "LastChangeId":
                        obj.LastChangeId = XmlConvert.ToInt32(reader.Value);
                        break;

                    case "ClientCacheTimeToLive":
                        obj.ClientCacheTimeToLive = XmlConvert.ToInt32(reader.Value);
                        break;

                    default:
                        // Allow attributes such as xsi:type to fall through
                        break;
                    }
                }
            }

            // Process the fields in Xml elements
            reader.Read();
            if (!empty)
            {
                while (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case "AccessMappings":
                        obj.AccessMappings = XmlUtility.ArrayOfObjectFromXml <AccessMapping>(serviceProvider, reader, "AccessMapping", false, AccessMapping.FromXml);
                        break;

                    case "ServiceDefinitions":
                        obj.ServiceDefinitions = XmlUtility.ArrayOfObjectFromXml <ServiceDefinition>(serviceProvider, reader, "ServiceDefinition", false, ServiceDefinition.FromXml);
                        break;

                    default:
                        // Make sure that we ignore XML node trees we do not understand
                        reader.ReadOuterXml();
                        break;
                    }
                }
                reader.ReadEndElement();
            }
            return(obj);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="serviceProvider"></param>
        /// <param name="reader"></param>
        /// <returns></returns>
        internal static ServiceDefinition FromXml(IServiceProvider serviceProvider, XmlReader reader)
        {
            ServiceDefinition obj = new ServiceDefinition();

            Debug.Assert(reader.NodeType == XmlNodeType.Element, "Expected a node.");

            Boolean empty = reader.IsEmptyElement;

            // Process the xml attributes
            if (reader.HasAttributes)
            {
                while (reader.MoveToNextAttribute())
                {
                    switch (reader.Name)
                    {
                    case "description":
                        obj.Description = reader.Value;
                        break;

                    case "displayName":
                        obj.DisplayName = reader.Value;
                        break;

                    case "identifier":
                        obj.Identifier = XmlConvert.ToGuid(reader.Value);
                        break;

                    case "isSingleton":
                        obj.m_isSingleton = XmlConvert.ToBoolean(reader.Value);
                        break;

                    case "relativePath":
                        obj.RelativePath = reader.Value;
                        break;

                    case "relativeToSetting":
                        obj.RelativeToSetting = (RelativeToSetting)XmlConvert.ToInt32(reader.Value);
                        break;

                    case "serviceType":
                        obj.ServiceType = reader.Value;
                        break;

                    case "toolId":
                        obj.ToolId = reader.Value;
                        break;

                    case "resourceVersion":
                        obj.ResourceVersion = XmlConvert.ToInt32(reader.Value);
                        break;

                    case "minVersion":
                        obj.MinVersionString = reader.Value;
                        break;

                    case "maxVersion":
                        obj.MaxVersionString = reader.Value;
                        break;

                    case "releasedVersion":
                        obj.ReleasedVersionString = reader.Value;
                        break;

                    default:
                        // Allow attributes such as xsi:type to fall through
                        break;
                    }
                }
            }

            // Process the fields in Xml elements
            reader.Read();
            if (!empty)
            {
                while (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case "LocationMappings":
                        obj.LocationMappings = new List <LocationMapping>(XmlUtility.ArrayOfObjectFromXml <LocationMapping>(serviceProvider, reader, "LocationMapping", false, LocationMapping.FromXml));
                        break;

                    case "Properties":
                        // Ignore properties
                        reader.ReadOuterXml();
                        break;

                    default:
                        // Make sure that we ignore XML node trees we do not understand
                        reader.ReadOuterXml();
                        break;
                    }
                }
                reader.ReadEndElement();
            }
            return(obj);
        }
        internal static Identity FromXml(IServiceProvider serviceProvider, XmlReader reader)
        {
            Identity obj = new Identity();

            Debug.Assert(reader.NodeType == XmlNodeType.Element, "Expected a node.");

            bool empty = reader.IsEmptyElement;

            // Process the xml attributes
            if (reader.HasAttributes)
            {
                while (reader.MoveToNextAttribute())
                {
                    switch (reader.Name)
                    {
                    case "DisplayName":
                        obj.ProviderDisplayName = reader.Value;
                        break;

                    case "IsActive":
                        obj.IsActive = XmlConvert.ToBoolean(reader.Value);
                        break;

                    case "IsContainer":
                        obj.IsContainer = XmlConvert.ToBoolean(reader.Value);
                        break;

                    case "TeamFoundationId":
                        obj.Id = XmlConvert.ToGuid(reader.Value);
                        break;

                    case "UniqueName":
                        // We don't have this property on VSIdentity
                        //obj.UniqueName = reader.Value;
                        break;

                    case "UniqueUserId":
                        obj.UniqueUserId = XmlConvert.ToInt32(reader.Value);
                        break;

                    default:
                        // Allow attributes such as xsi:type to fall through
                        break;
                    }
                }
            }

            // Process the fields in Xml elements
            reader.Read();
            if (!empty)
            {
                while (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case "Attributes":
                        KeyValueOfStringString[] attributes = XmlUtility.ArrayOfObjectFromXml <KeyValueOfStringString>(serviceProvider, reader, "KeyValueOfStringString", false, KeyValueOfStringString.FromXml);
                        if (attributes != null && obj.Properties != null)
                        {
                            foreach (KeyValueOfStringString attribute in attributes)
                            {
                                obj.Properties[attribute.Key] = attribute.Value;
                            }
                        }
                        break;

                    case "Descriptor":
                        obj.Descriptor = IdentityDescriptor.FromXml(serviceProvider, reader);
                        break;

                    case "LocalProperties":
                        // Since we're only using the SOAP serializer for bootstrap, we won't support properties
                        //obj.m_localPropertiesSet = Helper.ArrayOfPropertyValueFromXml(serviceProvider, reader, false);
                        reader.ReadOuterXml();
                        break;

                    case "MemberOf":
                        obj.MemberOf = XmlUtility.ArrayOfObjectFromXml <IdentityDescriptor>(serviceProvider, reader, "IdentityDescriptor", false, IdentityDescriptor.FromXml);
                        break;

                    case "Members":
                        obj.Members = XmlUtility.ArrayOfObjectFromXml <IdentityDescriptor>(serviceProvider, reader, "IdentityDescriptor", false, IdentityDescriptor.FromXml);
                        break;

                    case "Properties":
                        // Since we're only using the SOAP serializer for bootstrap, we won't support properties
                        //obj.m_propertiesSet = Helper.ArrayOfPropertyValueFromXml(serviceProvider, reader, false);
                        reader.ReadOuterXml();
                        break;

                    default:
                        // Make sure that we ignore XML node trees we do not understand
                        reader.ReadOuterXml();
                        break;
                    }
                }
                reader.ReadEndElement();
            }
            return(obj);
        }