public void Read_Properties_Without_Types_Specified_Test() { const string xsd = @" <xs:schema targetNamespace=""http://schemas.sage.com/crmErp/2008"" xmlns=""http://schemas.sage.com/crmErp/2008"" xmlns:xs=""http://www.w3.org/2001/XMLSchema""> <xs:complexType name=""tradingAccount--type""> <xs:all> <xs:element name=""active"" /> </xs:all> </xs:complexType> </xs:schema>"; SDataSchema schema; using (var reader = new StringReader(xsd)) { schema = SDataSchema.Read(reader); } Assert.That(schema, Is.Not.Null); var resource = schema.ComplexTypes["tradingAccount--type"]; Assert.That(resource, Is.Not.Null); Assert.That(resource.Properties.Count, Is.EqualTo(1)); var property = resource.Properties[0]; Assert.That(property, Is.Not.Null); Assert.That(property.Name, Is.EqualTo("active")); Assert.That(property.Type.QualifiedName.IsEmpty, Is.True); }
public void Read_Element_Then_List_Type_Then_Complex_Type_Test() { const string xsd = @" <xs:schema targetNamespace=""http://schemas.sage.com/crmErp/2008"" xmlns=""http://schemas.sage.com/crmErp/2008"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:sme=""http://schemas.sage.com/sdata/sme/2007""> <xs:element name=""tradingAccount"" type=""tradingAccount--type"" sme:role=""resourceKind"" /> <xs:complexType name=""tradingAccount--list""> <xs:sequence> <xs:element type=""tradingAccount--type"" /> </xs:sequence> </xs:complexType> <xs:complexType name=""tradingAccount--type""> <xs:all /> </xs:complexType> </xs:schema>"; SDataSchema schema; using (var reader = new StringReader(xsd)) { schema = SDataSchema.Read(reader); } var resource = schema.ResourceTypes["tradingAccount"]; Assert.That(resource, Is.Not.Null); Assert.That(resource.Name, Is.EqualTo("tradingAccount--type")); Assert.That(resource.ListName, Is.EqualTo("tradingAccount--list")); }
public void Write_Element_Then_Complex_Type_Then_List_Type_Test() { var schema = new SDataSchema("http://schemas.sage.com/crmErp/2008") { Types = { new SDataSchemaResourceType("tradingAccount") } }; XPathNavigator nav; using (var stream = new MemoryStream()) { schema.Write(stream); stream.Seek(0, SeekOrigin.Begin); #if NET_2_0 || NET_3_5 nav = new XPathDocument(stream).CreateNavigator(); #else nav = XDocument.Load(stream).CreateNavigator(); #endif } var mgr = new XmlNamespaceManager(nav.NameTable); mgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema"); var resource = nav.SelectSingleNode("xs:schema/xs:element[@name='tradingAccount']", mgr); Assert.That(resource, Is.Not.Null); Assert.That(nav.SelectSingleNode("xs:schema/xs:complexType[@name='tradingAccount--type']", mgr), Is.Not.Null); Assert.That(nav.SelectSingleNode("xs:schema/xs:complexType[@name='tradingAccount--list']", mgr), Is.Not.Null); }
public void Read_Enum_Schema_Types_Support_List_Types_Test() { const string xsd = @" <xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema""> <xs:simpleType name=""test--enum""> <xs:restriction base=""xs:string"" /> </xs:simpleType> <xs:complexType name=""test--list""> <xs:sequence> <xs:element name=""test"" type=""test--enum"" /> </xs:sequence> </xs:complexType> </xs:schema>"; SDataSchema schema; using (var reader = new StringReader(xsd)) { schema = SDataSchema.Read(reader); } var type = schema.Types["test--enum"]; Assume.That(type, Is.InstanceOf <SDataSchemaEnumType>()); Assert.That(type.ListName, Is.EqualTo("test--list")); Assert.That(type.ListItemName, Is.EqualTo("test")); }
private static SDataSchemaObject ReadSchema(ISDataResponse response) { var text = response.Content as string; if (text == null) { throw new SDataClientException("Unexpected content: " + response.Content); } using (var reader = new StringReader(text)) { var schema = SDataSchema.Read(reader); if (!string.IsNullOrEmpty(response.Location)) { var targetElementName = new Uri(response.Location).Fragment.TrimStart('#'); if (!string.IsNullOrEmpty(targetElementName)) { var resource = schema.ResourceTypes[targetElementName]; if (resource != null) { return(resource); } } } return(schema); } }
private ISDataResults <T> CreateResults <T>(SDataResponse response) { TraceResponse(response); object obj = null; if (typeof(T) == typeof(byte[])) { var str = response.Content as string; if (str != null) { obj = Encoding.UTF8.GetBytes(str); } } else if (typeof(T) == typeof(string)) { var data = response.Content as byte[]; if (data != null) { obj = Encoding.UTF8.GetString(data); } } #if !PCL && !NETFX_CORE && !SILVERLIGHT else if (typeof(T) == typeof(SDataSchema)) { var str = response.Content as string; if (str != null) { using (var memory = new MemoryStream(Encoding.UTF8.GetBytes(str))) { obj = SDataSchema.Read(memory); } } } #endif T content; if (obj != null) { content = (T)obj; } else { content = ContentHelper.Deserialize <T>(response.Content, NamingScheme); var tracking = content as IChangeTracking; if (tracking != null) { tracking.AcceptChanges(); } } return(SDataResults.FromResponse(response, content)); }
private void btnSchemaRead_Click(object sender, EventArgs e) { try { _schema = (SDataSchema)_sdataResourceSchemaRequest.Read(); if (_schema != null) { MessageBox.Show(Resources.statusSchemaReadComplete); btnSchemaSave.Enabled = true; btnSchemaSave.Visible = true; lbSchemaFileName.Visible = true; tbSchemaFileName.Visible = true; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void Write_Properties_Without_Types_Specified_Test() { var schema = new SDataSchema("http://schemas.sage.com/crmErp/2008") { Types = { new SDataSchemaComplexType("tradingAccount") { Properties = { new SDataSchemaValueProperty("active") } } } }; XPathNavigator nav; using (var stream = new MemoryStream()) { schema.Write(stream); stream.Seek(0, SeekOrigin.Begin); #if NET_2_0 || NET_3_5 nav = new XPathDocument(stream).CreateNavigator(); #else nav = XDocument.Load(stream).CreateNavigator(); #endif } var mgr = new XmlNamespaceManager(nav.NameTable); mgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema"); var resource = nav.SelectSingleNode("xs:schema/xs:complexType[@name='tradingAccount--type']", mgr); Assert.That(resource, Is.Not.Null); Assert.That(resource.Select("xs:all/xs:element", mgr).Count, Is.EqualTo(1)); var property = resource.SelectSingleNode("xs:all/xs:element", mgr); Assert.That(property, Is.Not.Null); Assert.That(property.SelectSingleNode("@name").Value, Is.EqualTo("active")); Assert.That(property.SelectSingleNode("@type"), Is.Null); }
private void btnSchemaRead_Click(object sender, EventArgs e) { var path = tbSchemaResourceKind.Text; if (!string.IsNullOrEmpty(path)) { path += "/"; } _schema = Client.Execute <SDataSchema>( new SDataParameters { Path = path + "$schema" }).Content; if (_schema != null) { MessageBox.Show("Read schema completed successfully."); btnSchemaSave.Enabled = true; btnSchemaSave.Visible = true; lbSchemaFileName.Visible = true; tbSchemaFileName.Visible = true; } }
public void Write_Enum_Schema_Types_Support_List_Types_Test() { var schema = new SDataSchema { Types = { new SDataSchemaEnumType("test") { BaseType = XmlTypeCode.String, ListName = "test--list", ListItemName = "test" } } }; XPathNavigator nav; using (var stream = new MemoryStream()) { schema.Write(stream); stream.Seek(0, SeekOrigin.Begin); #if NET_2_0 || NET_3_5 nav = new XPathDocument(stream).CreateNavigator(); #else nav = XDocument.Load(stream).CreateNavigator(); #endif } var mgr = new XmlNamespaceManager(nav.NameTable); mgr.AddNamespace("xs", "http://www.w3.org/2001/XMLSchema"); var type = nav.SelectSingleNode("xs:schema/xs:simpleType[@name='test--enum']", mgr); Assume.That(type, Is.Not.Null); var list = nav.SelectSingleNode("xs:schema/xs:complexType[@name='test--list']", mgr); Assert.That(list, Is.Not.Null); Assert.That(list.SelectSingleNode("xs:sequence/xs:element[@name='test']", mgr), Is.Not.Null); }
private static SDataSchemaObject ReadSchema(ISDataResponse response) { using (var reader = new StringReader((string)response.Content)) { var schema = SDataSchema.Read(reader); if (!string.IsNullOrEmpty(response.Location)) { var targetElementName = new Uri(response.Location).Fragment.TrimStart('#'); if (!string.IsNullOrEmpty(targetElementName)) { var resource = schema.ResourceTypes[targetElementName]; if (resource != null) { return(resource); } } } return(schema); } }
//============================================================ // PUBLIC METHODS //============================================================ #region Load(XPathNavigator source, XmlNamespaceManager manager) /// <summary> /// Initializes the syndication extension context using the supplied <see cref="XPathNavigator"/>. /// </summary> /// <param name="source">The <b>XPathNavigator</b> used to load this <see cref="SDataExtensionContext"/>.</param> /// <param name="manager">The <see cref="XmlNamespaceManager"/> object used to resolve prefixed syndication extension elements and attributes.</param> /// <returns><b>true</b> if the <see cref="SDataExtensionContext"/> was able to be initialized using the supplied <paramref name="source"/>; otherwise <b>false</b>.</returns> /// <exception cref="ArgumentNullException">The <paramref name="source"/> is a null reference (Nothing in Visual Basic).</exception> /// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception> public bool Load(XPathNavigator source, XmlNamespaceManager manager) { //------------------------------------------------------------ // Local members //------------------------------------------------------------ var wasLoaded = false; //------------------------------------------------------------ // Validate parameter //------------------------------------------------------------ Guard.ArgumentNotNull(source, "source"); Guard.ArgumentNotNull(manager, "manager"); //------------------------------------------------------------ // Attempt to extract syndication extension information //------------------------------------------------------------ if (source.HasChildren) { var payloadNavigator = source.SelectSingleNode("sdata:payload/*", manager); if (payloadNavigator != null) { var payload = new SDataPayload(); if (payload.Load(payloadNavigator, manager)) { Payload = payload; wasLoaded = true; } } var diagnosesNavigator = source.Select("sdata:diagnoses/sdata:diagnosis", manager); foreach (XPathNavigator item in diagnosesNavigator) { var diagnosis = new Diagnosis(); if (diagnosis.Load(item, manager)) { Diagnoses.Add(diagnosis); wasLoaded = true; } } var diagnosisNavigator = source.Select("sdata:diagnosis", manager); foreach (XPathNavigator item in diagnosisNavigator) { var diagnosis = new Diagnosis(); if (diagnosis.Load(item, manager)) { Diagnoses.Add(diagnosis); wasLoaded = true; } } var schemaNavigator = source.SelectSingleNode("sdata:schema", manager); if (schemaNavigator != null && !string.IsNullOrEmpty(schemaNavigator.InnerXml)) { schemaNavigator.MoveToFirstChild(); using (var reader = schemaNavigator.ReadSubtree()) { reader.Read(); Schema = SDataSchema.Read(reader); } wasLoaded = true; } } return(wasLoaded); }