private static void ResolveResourceLink(IDomLink domLink, IHypermediaContext hypermediaContext, IHypermediaAssembler hypermediaAssembler, IResourcePathContext resourcePathContext, Type clrResourceType, object clrResource, DomReadWriteLinks domReadWriteLinks) { if (domLink.IsReadOnly) { return; } // Resolve read-write resource link var domReadWriteLink = (DomReadWriteLink)domLink; var apiLinkRel = domReadWriteLink.Rel; var apiLinkMeta = default(Meta); var domLinkMeta = (IDomMeta)domReadWriteLink.GetNode(DomNodeType.Meta); if (domLinkMeta != null) { apiLinkMeta = domLinkMeta.Meta; } // Create link. var linkContext = new LinkContext(apiLinkRel, apiLinkMeta); var apiResourceLink = hypermediaAssembler.CreateResourceLink(hypermediaContext, resourcePathContext, clrResourceType, clrResource, linkContext); // Replace the old DOM read-write link node with a new DOM read-only link created by the framework. var domReadOnlyLink = DomReadOnlyLink.Create(apiLinkRel, apiResourceLink); domReadWriteLinks.ReplaceNode(domReadWriteLink, domReadOnlyLink); }
internal void TestIDomLinkAbstraction(string name, string expectedRel, Link expectedLink, IDomLink domLink) { // Arrange // Act this.Output.WriteLine("Test Name: {0}", name); this.Output.WriteLine(String.Empty); this.Output.WriteLine("Expected Rel: {0}", expectedRel); this.Output.WriteLine("Expected Link: {0}", expectedLink); this.Output.WriteLine(String.Empty); var actualRel = domLink.Rel; var actualLink = domLink.Link; this.Output.WriteLine("Actual Rel: {0}", actualRel); this.Output.WriteLine("Actual Link: {0}", actualLink); // Assert Assert.Equal(expectedRel, actualRel); LinkAssert.Equal(expectedLink, actualLink); }