public void TestRdfXmlCollectionSerialization() { List <ChangeRequest> crListOut = new List <ChangeRequest>(); ChangeRequest changeRequest1 = new ChangeRequest(new Uri("http://com/somewhere/changeRequest1")); changeRequest1.SetFixed(true); changeRequest1.AddAffectedByDefect(new Link(new Uri("http://com/somewhere/changeRequest2"), "Test of links")); crListOut.Add(changeRequest1); ChangeRequest changeRequest2 = new ChangeRequest(new Uri("http://com/somewhere/changeRequest2")); changeRequest2.SetFixed(false); changeRequest2.AddAffectedByDefect(new Link(new Uri("http://com/somewhere/changeRequest1"), "Test of links")); crListOut.Add(changeRequest2); IGraph rdfGraph = DotNetRdfHelper.CreateDotNetRdfGraph("http://com/somewhere/changerequests", "http://com/somewhere/changerequests?page=20", "http://com/somewhere/changerequests?page=21", null, crListOut, null); RdfXmlMediaTypeFormatter formatter = new RdfXmlMediaTypeFormatter(rdfGraph); string rdfXml = SerializeCollection <ChangeRequest>(formatter, crListOut, OslcMediaType.APPLICATION_RDF_XML_TYPE); Debug.WriteLine(rdfXml); List <ChangeRequest> crListIn = DeserializeCollection <ChangeRequest>(formatter, rdfXml, OslcMediaType.APPLICATION_RDF_XML_TYPE).ToList(); Assert.AreEqual(crListOut.Count, crListIn.Count); //No guarantees of order in a collection, use the "about" attribute to identify individual ChangeRequests foreach (ChangeRequest cr in crListIn) { string crAboutUri = cr.GetAbout().AbsoluteUri; if (crAboutUri.Equals("http://com/somewhere/changeRequest1")) { Assert.AreEqual(cr.IsFixed(), changeRequest1.IsFixed()); Assert.AreEqual(cr.GetAffectedByDefects()[0].GetValue(), changeRequest1.GetAffectedByDefects()[0].GetValue()); Assert.AreEqual(cr.GetAffectedByDefects()[0].GetLabel(), changeRequest1.GetAffectedByDefects()[0].GetLabel()); } else if (crAboutUri.Equals("http://com/somewhere/changeRequest2")) { Assert.AreEqual(cr.IsFixed(), changeRequest2.IsFixed()); Assert.AreEqual(cr.GetAffectedByDefects()[0].GetValue(), changeRequest2.GetAffectedByDefects()[0].GetValue()); Assert.AreEqual(cr.GetAffectedByDefects()[0].GetLabel(), changeRequest2.GetAffectedByDefects()[0].GetLabel()); } else { Assert.Fail("Deserialized ChangeRequest about attribute not recognized: " + crAboutUri); } } }
public void TestRdfXmlSerialization() { ChangeRequest changeRequest1 = new ChangeRequest(new Uri("http://com/somewhere/changeReuest")); changeRequest1.SetFixed(true); changeRequest1.AddAffectedByDefect(new Link(new Uri("http://com/somewhere/changeRequest2"), "Test of links")); RdfXmlMediaTypeFormatter formatter = new RdfXmlMediaTypeFormatter(); string rdfXml = Serialize <ChangeRequest>(formatter, changeRequest1, OslcMediaType.APPLICATION_RDF_XML_TYPE); Debug.WriteLine(rdfXml); ChangeRequest changeRequest2 = Deserialize <ChangeRequest>(formatter, rdfXml, OslcMediaType.APPLICATION_RDF_XML_TYPE); Assert.AreEqual(changeRequest1.GetAbout(), changeRequest2.GetAbout()); Assert.AreEqual(changeRequest1.IsFixed(), changeRequest2.IsFixed()); Assert.AreEqual(changeRequest1.GetAffectedByDefects()[0].GetValue(), changeRequest2.GetAffectedByDefects()[0].GetValue()); Assert.AreEqual(changeRequest1.GetAffectedByDefects()[0].GetLabel(), changeRequest2.GetAffectedByDefects()[0].GetLabel()); }
public IEnumerable <T> DeserializeCollection <T>( string strRDF, IEnumerable <T> value, string contentType, string descriptionAbout = null, string responseInfoAbout = null, string nextPageAbout = null) where T : class { if (String.IsNullOrEmpty(descriptionAbout)) { descriptionAbout = "http://com/undefined/descriptionAbout"; } if (String.IsNullOrEmpty(responseInfoAbout)) { responseInfoAbout = "http://com/undefined/responseInfoAbout"; } if (String.IsNullOrEmpty(responseInfoAbout)) { responseInfoAbout = "http://com/undefined/nextPageAbout"; } Stream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); HttpContent content = new StreamContent(stream); System.Net.Http.Formatting.MediaTypeFormatter formatter = null; if (contentType == OslcMediaType.APPLICATION_JSON) { JsonValue json = OSLC4Net.Core.JsonProvider.JsonHelper.CreateJson( descriptionAbout, responseInfoAbout, nextPageAbout, null, value, null); formatter = new OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter(json, false); content.Headers.ContentType = OslcMediaType.APPLICATION_JSON_TYPE; } else if (contentType == OslcMediaType.APPLICATION_RDF_XML) { IGraph rdfGraph = DotNetRdfHelper.CreateDotNetRdfGraph( descriptionAbout, responseInfoAbout, nextPageAbout, null, value, null); formatter = new RdfXmlMediaTypeFormatter(rdfGraph); content.Headers.ContentType = OslcMediaType.APPLICATION_RDF_XML_TYPE; } if (formatter == null) { return(null); } writer.Write(strRDF); writer.Flush(); stream.Position = 0; return(formatter.ReadFromStreamAsync(typeof(List <T>), stream, content, null).Result as IEnumerable <T>); }