/// <summary> /// Visits a payload element whose root is a ServiceDocumentInstance. /// </summary> /// <param name="payloadElement">The root node of payload element being visited.</param> /// <returns>The original element or a copy to replace it with</returns> public virtual ODataPayloadElement Visit(ServiceDocumentInstance payloadElement) { ExceptionUtilities.CheckArgumentNotNull(payloadElement, "payloadElement"); IList <WorkspaceInstance> replacedWorkspaces = null; if (payloadElement.Workspaces != null) { replacedWorkspaces = new List <WorkspaceInstance>(); foreach (WorkspaceInstance workspace in payloadElement.Workspaces) { ExceptionUtilities.CheckObjectNotNull(workspace, "Workspace is null"); WorkspaceInstance replacedWorkspace = this.Visit(workspace) as WorkspaceInstance; ExceptionUtilities.CheckObjectNotNull(replacedWorkspace, "Replaced workspace was null or wrong type"); replacedWorkspaces.Add(replacedWorkspace); } } if (!this.ShouldReplace(payloadElement.Workspaces, replacedWorkspaces)) { return(payloadElement); } return(payloadElement.ReplaceWith(new ServiceDocumentInstance(replacedWorkspaces.ToArray()))); }
public void ServiceDocumentReadingNullUriTest() { EdmModel model = (EdmModel)Microsoft.Test.OData.Utils.Metadata.TestModels.BuildTestModel(); model.Fixup(); ServiceDocumentInstance serviceDocument = PayloadBuilder.ServiceDocument() .Workspace(PayloadBuilder.Workspace() .ResourceCollection(/*title*/ null, /*href*/ null)); // Run only on responses this.CombinatorialEngineProvider.RunCombinations( baseUriValues, this.ReaderTestConfigurationProvider.AtomFormatConfigurations.Where(tc => !tc.IsRequest), (baseUriValue, testConfiguration) => { // NOTE: In JSON, collection names must not be null (and we expect an error) // In ATOM, the HREF of a resource collection is an attribute and will be missing if null; // this is not allowed (and we expect an error) NullUriValueTestCase <ServiceDocumentInstance> testCase = new NullUriValueTestCase <ServiceDocumentInstance> { SetNullUriAction = (instance, uri, testConfig) => instance.Workspaces[0].ResourceCollections[0].Href = null, SetExpectedUriAction = (instance, uri, testConfig) => instance.Workspaces[0].ResourceCollections[0].Href = UriToString(uri), }; this.RunNullUriReadingTest(serviceDocument, testCase, model, baseUriValue, testConfiguration); }); }
/// <summary> /// Visits a payload element whose root is a ServiceDocumentInstance. /// </summary> /// <param name="expected">The root node of payload element being visited.</param> public void Visit(ServiceDocumentInstance expected) { ExceptionUtilities.CheckArgumentNotNull(expected, "expected"); var observed = this.GetNextObservedElement <ServiceDocumentInstance>(); using (this.Assert.WithMessage("Service document did not match expectation")) { this.CompareAnnotations(expected.Annotations, observed.Annotations); this.CompareList <WorkspaceInstance>(expected.Workspaces, observed.Workspaces); } }
/// <summary> /// Visits a payload element whose root is a ServiceDocumentInstance. /// </summary> /// <param name="payloadElement">The root node of the payload element being visited.</param> public override void Visit(ServiceDocumentInstance payloadElement) { base.Visit(payloadElement); var contextUriAnnotation = payloadElement.GetAnnotation <JsonLightContextUriAnnotation>(); if (contextUriAnnotation == null) { payloadElement.AddAnnotation(new JsonLightContextUriAnnotation { ContextUri = JsonLightConstants.DefaultMetadataDocumentUri.OriginalString }); } }
/// <summary> /// Visits a payload element whose root is a ServiceDocumentInstance. /// </summary> /// <param name="payloadElement">The root node of payload element being visited.</param> public void Visit(ServiceDocumentInstance payloadElement) { ExceptionUtilities.Assert(this.isRootElement, "Json serialization allows service document elements only at the root level"); this.isRootElement = false; // NOTE nothing to do here for now since both Astoria and ODataLib only support a single workspace per service document ExceptionUtilities.Assert(payloadElement.Workspaces.Count == 1, "Exactly one workspace expected for the service document."); foreach (WorkspaceInstance workspace in payloadElement.Workspaces) { this.Recurse(workspace); } }
/// <summary> /// Visits a serviceDocument item. /// </summary> /// <param name="serviceDocument">The serviceDocument item to visit.</param> /// <returns>An ODataPayloadElement representing a service document enclosing the serviceDocument.</returns> protected override ODataPayloadElement VisitWorkspace(ODataServiceDocument serviceDocument) { ExceptionUtilities.CheckArgumentNotNull(serviceDocument, "serviceDocument"); ServiceDocumentInstance wrappingServiceDocumentInstance = (ServiceDocumentInstance)base.VisitWorkspace(serviceDocument); WorkspaceInstance workspaceInstance = wrappingServiceDocumentInstance.Workspaces.Single(); AtomWorkspaceMetadata atomMetadata = serviceDocument.GetAnnotation <AtomWorkspaceMetadata>(); if (atomMetadata != null) { if (atomMetadata.Title != null) { workspaceInstance.Title = atomMetadata.Title.Text; workspaceInstance.AtomTitle(atomMetadata.Title.Text, ToString(atomMetadata.Title.Kind)); } } return(wrappingServiceDocumentInstance); }
public void ServiceDocumentReadingBaseUriTest() { EdmModel model = (EdmModel)Microsoft.Test.OData.Utils.Metadata.TestModels.BuildTestModel(); model.Fixup(); ServiceDocumentInstance serviceDocument = PayloadBuilder.ServiceDocument() .Workspace(PayloadBuilder.Workspace() .ResourceCollection(/*title*/ null, /*href*/ null)); // Run only on responses this.CombinatorialEngineProvider.RunCombinations( payloadUris.Where(uri => uri.OriginalString.Length != 0), baseUriValues, resolvers, this.ReaderTestConfigurationProvider.AtomFormatConfigurations.Where(tc => !tc.IsRequest), (payloadUri, baseUriValue, resolver, testConfiguration) => { Action <ServiceDocumentInstance, Uri, ReaderTestConfiguration> setCollectionHrefAction = (instance, uri, testConfig) => instance.Workspaces[0].ResourceCollections[0].Href = UriToString(uri); this.RunBaseUriReadingTest(serviceDocument, setCollectionHrefAction, model, payloadUri, baseUriValue, resolver, testConfiguration); }); }
/// <summary> /// Visits the payload element /// </summary> /// <param name="payloadElement">The payload element to visit</param> public override void Visit(ServiceDocumentInstance payloadElement) { ExceptionUtilities.CheckArgumentNotNull(payloadElement, "payloadElement"); ExceptionUtilities.CheckObjectNotNull(this.currentXElement, "Current XElement is not defined"); // Override the namespace attributes for this element this.namespaceAttributes = new XAttribute[] { // xmlns="http://www.w3.org/2007/app" new XAttribute("xmlns", AtomPubNamespace), // ATOM namespace new XAttribute(XNamespace.Xmlns.GetName("atom"), AtomNamespace), }; XElement serviceDocument = CreateAtomPubElement(this.currentXElement, "service"); foreach (WorkspaceInstance workspaceInstance in payloadElement.Workspaces) { this.VisitPayloadElement(workspaceInstance, serviceDocument); } PostProcessXElement(payloadElement, serviceDocument); }
/// <summary> /// Visits the payload element /// </summary> /// <param name="payloadElement">The payload element to visit</param> public virtual void Visit(ServiceDocumentInstance payloadElement) { ExceptionUtilities.CheckArgumentNotNull(payloadElement, "payloadElement"); this.VisitEnumerable <WorkspaceInstance>(payloadElement.Workspaces); }
/// <summary> /// Visits a payload element whose root is a ServiceDocumentInstance. /// </summary> /// <param name="payloadElement">The root node of payload element being visited.</param> public void Visit(ServiceDocumentInstance payloadElement) { throw new TaupoNotSupportedException("Not supported."); }
/// <summary> /// Visits a payload element whose root is a ServiceDocumentInstance. /// </summary> /// <param name="payloadElement">The root node of the payload element being visited.</param> public override void Visit(ServiceDocumentInstance payloadElement) { base.Visit(payloadElement); var contextUriAnnotation = payloadElement.GetAnnotation<JsonLightContextUriAnnotation>(); if (contextUriAnnotation == null) { payloadElement.AddAnnotation(new JsonLightContextUriAnnotation { ContextUri = JsonLightConstants.DefaultMetadataDocumentUri.OriginalString }); } }