Ejemplo n.º 1
0
        /// <summary>
        /// Visits a payload element whose root is a WorkspaceInstance.
        /// </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(WorkspaceInstance payloadElement)
        {
            ExceptionUtilities.CheckArgumentNotNull(payloadElement, "payloadElement");

            IList <ResourceCollectionInstance> replacedCollections = null;

            if (payloadElement.ResourceCollections != null)
            {
                replacedCollections = new List <ResourceCollectionInstance>();

                foreach (ResourceCollectionInstance collection in payloadElement.ResourceCollections)
                {
                    ExceptionUtilities.CheckObjectNotNull(collection, "Resource collection is null");
                    ResourceCollectionInstance replacedCollection = this.Visit(collection) as ResourceCollectionInstance;
                    ExceptionUtilities.CheckObjectNotNull(replacedCollection, "Replaced resource collection  was null or wrong type");
                    replacedCollections.Add(replacedCollection);
                }
            }

            if (!this.ShouldReplace(payloadElement.ResourceCollections, replacedCollections))
            {
                return(payloadElement);
            }

            WorkspaceInstance replacedWorkspace = new WorkspaceInstance(replacedCollections.ToArray());

            replacedWorkspace.Title = payloadElement.Title;

            return(payloadElement.ReplaceWith(replacedWorkspace));
        }
Ejemplo n.º 2
0
        /// <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())));
        }
        /// <summary>
        /// Normalizes workspace specific atom metadata.
        /// </summary>
        /// <param name="payloadElement">The payload element to normalize.</param>
        public override void Visit(WorkspaceInstance payloadElement)
        {
            NormalizeTitleValue(
                payloadElement,
                payloadElement.Title,
                (value) => payloadElement.Title = value);

            base.Visit(payloadElement);
        }
 /// <summary>
 /// Visits a payload element whose root is a WorkspaceInstance.
 /// </summary>
 /// <param name="payloadElement">The root node of the payload element being visited.</param>
 public override void Visit(WorkspaceInstance payloadElement)
 {
     base.Visit(payloadElement);
     foreach (var resourceCollection in payloadElement.ResourceCollections)
     {
         if (string.IsNullOrEmpty(resourceCollection.Name))
         {
             // Resource collection names are mandatory in JSON Light.
             resourceCollection.Name = "ResourceCollection_" + Guid.NewGuid().ToString();
         }
     }
 }
            /// <summary>
            /// Visits a payload element whose root is a WorkspaceInstance.
            /// </summary>
            /// <param name="expected">The root node of payload element being visited.</param>
            public void Visit(WorkspaceInstance expected)
            {
                ExceptionUtilities.CheckArgumentNotNull(expected, "expected");
                var observed = this.GetNextObservedElement <WorkspaceInstance>();

                using (this.Assert.WithMessage("Workspace instance did not match expectation"))
                {
                    this.CompareAnnotations(expected.Annotations, observed.Annotations);
                    this.Assert.AreEqual(expected.Title, observed.Title, "Title did not match expectation");
                    this.CompareList <ResourceCollectionInstance>(expected.ResourceCollections, observed.ResourceCollections);
                }
            }
        /// <summary>
        /// Visits the payload element
        /// </summary>
        /// <param name="payloadElement">The payload element to visit</param>
        public override void Visit(WorkspaceInstance payloadElement)
        {
            ExceptionUtilities.CheckArgumentNotNull(payloadElement, "payloadElement");
            ExceptionUtilities.CheckObjectNotNull(this.currentXElement, "Current XElement is not defined");

            XElement workspaceElement = CreateAtomPubElement(this.currentXElement, "workspace");

            if (payloadElement.Title != null)
            {
                XElement title = CreateAtomElement(workspaceElement, "title");
                title.Value = payloadElement.Title;
            }

            foreach (ResourceCollectionInstance collection in payloadElement.ResourceCollections)
            {
                this.VisitPayloadElement(collection, workspaceElement);
            }

            PostProcessXElement(payloadElement, workspaceElement);
        }
            /// <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);
            }
Ejemplo n.º 8
0
        private void Dispose(bool disposing)
        {
            if (disposing)
            {
                WorkspaceInstance.Dispose();
            }

            if (File.Exists(OutputAssembly))
            {
                try
                {
                    System.IO.File.Delete(OutputAssembly);
                }
                catch (UnauthorizedAccessException)
                {
                }
            }

            ClearDecisions();
        }
Ejemplo n.º 9
0
            /// <summary>
            /// Visits a serviceDocument.
            /// </summary>
            /// <param name="serviceDocument">The serviceDocument to visit.</param>
            protected override ODataPayloadElement VisitWorkspace(ODataServiceDocument serviceDocument)
            {
                ExceptionUtilities.CheckArgumentNotNull(serviceDocument, "serviceDocument");

                WorkspaceInstance workspaceInstance = new WorkspaceInstance();

                IEnumerable <ODataEntitySetInfo> collections = serviceDocument.EntitySets;

                if (collections != null)
                {
                    foreach (ODataEntitySetInfo collection in collections)
                    {
                        ResourceCollectionInstance collectionInstance = (ResourceCollectionInstance)this.Visit(collection);
                        workspaceInstance.ResourceCollections.Add(collectionInstance);
                    }
                }

                // Since ODataLib only supports a single serviceDocument and does not have an OM representation of the service
                // document, wrap the single serviceDocument in a service document instance here.
                return(new ServiceDocumentInstance(workspaceInstance));
            }
Ejemplo n.º 10
0
            /// <summary>
            /// Visits a payload element whose root is a WorkspaceInstance.
            /// </summary>
            /// <param name="payloadElement">The root node of payload element being visited.</param>
            public void Visit(WorkspaceInstance payloadElement)
            {
                ExceptionUtilities.Assert(!this.isRootElement, "Json serialization does not allow a root element of type: {0}", payloadElement.ElementType.ToString());

                this.writer.StartObjectScope();

                this.writer.WriteName("EntitySets");

                this.writer.StartArrayScope();

                if (payloadElement.ResourceCollections != null)
                {
                    foreach (ResourceCollectionInstance collection in payloadElement.ResourceCollections)
                    {
                        this.Recurse(collection);
                    }
                }

                this.writer.EndScope();

                this.writer.EndScope();
            }
 /// <summary>
 /// Removes the title property and ATOM metadata annotations from a <see cref="WorkspaceInstance"/>.
 /// </summary>
 /// <param name="payloadElement">The workspace instance to visit.</param>
 public override void Visit(WorkspaceInstance payloadElement)
 {
     payloadElement.Title = null;
     base.Visit(payloadElement);
 }
            /// <summary>
            /// Visits a payload element whose root is a WorkspaceInstance.
            /// </summary>
            /// <param name="payloadElement">The root node of payload element being visited.</param>
            public void Visit(WorkspaceInstance payloadElement)
            {
                ExceptionUtilities.Assert(!this.isRootElement, "Json serialization does not allow a root element of type: {0}", payloadElement.ElementType.ToString());

                this.writer.StartObjectScope();

                this.writer.WriteName("EntitySets");

                this.writer.StartArrayScope();

                if (payloadElement.ResourceCollections != null)
                {
                    foreach (ResourceCollectionInstance collection in payloadElement.ResourceCollections)
                    {
                        this.Recurse(collection);
                    }
                }

                this.writer.EndScope();

                this.writer.EndScope();
            }
Ejemplo n.º 13
0
 /// <summary>
 /// Visits the payload element
 /// </summary>
 /// <param name="payloadElement">The payload element to visit</param>
 public virtual void Visit(WorkspaceInstance payloadElement)
 {
     ExceptionUtilities.CheckArgumentNotNull(payloadElement, "payloadElement");
     this.VisitEnumerable <ResourceCollectionInstance>(payloadElement.ResourceCollections);
 }
 /// <summary>
 /// Removes the title property and ATOM metadata annotations from a <see cref="WorkspaceInstance"/>.
 /// </summary>
 /// <param name="payloadElement">The workspace instance to visit.</param>
 public override void Visit(WorkspaceInstance payloadElement)
 {
     payloadElement.Title = null;
     base.Visit(payloadElement);
 }
 /// <summary>
 /// Visits a payload element whose root is a WorkspaceInstance.
 /// </summary>
 /// <param name="payloadElement">The root node of payload element being visited.</param>
 public void Visit(WorkspaceInstance payloadElement)
 {
     throw new TaupoNotSupportedException("Not implemented.");
 }
 /// <summary>
 /// Visits a payload element whose root is a WorkspaceInstance.
 /// </summary>
 /// <param name="payloadElement">The root node of the payload element being visited.</param>
 public override void Visit(WorkspaceInstance payloadElement)
 {
     base.Visit(payloadElement);
     foreach (var resourceCollection in payloadElement.ResourceCollections)
     {
         if (string.IsNullOrEmpty(resourceCollection.Name))
         {
             // Resource collection names are mandatory in JSON Light.
             resourceCollection.Name = "ResourceCollection_" + Guid.NewGuid().ToString();
         }
     }
 }