コード例 #1
0
        // PUBLIC METHODS ///////////////////////////////////////////////////
        #region Extensions Methods
        public static void MapClrTypeToDomResource(this IResourceType resourceType, DomReadWriteResource domResource)
        {
            Contract.Requires(resourceType != null);
            Contract.Requires(domResource != null);

            domResource.CreateAndAddNode(() => DomType.CreateFromResourceType(resourceType));
        }
コード例 #2
0
        private static void MapDomResourceToApiLinks(ISetLinks apiSetLinks, DomReadWriteResource domResource)
        {
            Contract.Requires(apiSetLinks != null);
            Contract.Requires(domResource != null);

            var apiLinks = GetApiResourceLinks(domResource);

            apiSetLinks.Links = apiLinks;
        }
コード例 #3
0
        public static void MapClrIdToDomResource(this IResourceType resourceType, DomReadWriteResource domResource, object clrResource)
        {
            Contract.Requires(resourceType != null);
            Contract.Requires(domResource != null);

            if (clrResource == null)
            {
                return;
            }

            domResource.CreateAndAddNode(() => DomId.CreateFromClrResource(resourceType, clrResource));
        }
コード例 #4
0
        private static Links GetApiResourceLinks(DomReadWriteResource domResource)
        {
            Contract.Requires(domResource != null);

            var domLinksNode = domResource.GetNode(DomNodeType.Links);

            if (domLinksNode == null)
            {
                return(null);
            }

            var domLinks = (IDomLinks)domLinksNode;
            var apiLinks = domLinks.Links;

            return(apiLinks);
        }
コード例 #5
0
        private static Relationships GetApiResourceRelationships(DomReadWriteResource domResource)
        {
            Contract.Requires(domResource != null);

            var domRelationshipsNode = domResource.GetNode(DomNodeType.Relationships);

            if (domRelationshipsNode == null)
            {
                return(null);
            }

            var domRelationships = (IDomRelationships)domRelationshipsNode;
            var apiRelationships = domRelationships.Relationships;

            return(apiRelationships);
        }
コード例 #6
0
        private static void MapDomResourceToApiMeta(ISetMeta apiSetMeta, DomReadWriteResource domResource)
        {
            Contract.Requires(apiSetMeta != null);
            Contract.Requires(domResource != null);

            var domMetaNode = domResource.GetNode(DomNodeType.Meta);

            if (domMetaNode == null)
            {
                return;
            }

            var domMeta = (IDomMeta)domMetaNode;
            var apiMeta = domMeta.Meta;

            apiSetMeta.Meta = apiMeta;
        }
コード例 #7
0
        public static void MapClrAttributesToDomResource(this IResourceType resourceType, DomReadWriteResource domResource, object clrResource, Func <string, string, bool> attributePredicate)
        {
            Contract.Requires(resourceType != null);
            Contract.Requires(domResource != null);

            if (clrResource == null)
            {
                return;
            }

            var serviceModel  = domResource.GetServiceModel();
            var domAttributes = domResource.CreateAndAddNode(() => DomAttributes.Create());

            var apiType = resourceType.ResourceIdentityInfo.ApiType;
            var attributeInfoCollection = resourceType.AttributesInfo.Collection;

            foreach (var attributeInfo in attributeInfoCollection)
            {
                var apiField = attributeInfo.ApiPropertyName;
                if (attributePredicate != null && attributePredicate(apiType, apiField) == false)
                {
                    // Skip adding this attribute.
                    continue;
                }

                var localAttributeInfo = attributeInfo;
                domAttributes.CreateAndAddNode(() => DomAttribute.CreateFromClrResource(serviceModel, localAttributeInfo, clrResource));
            }
        }
コード例 #8
0
 public static void MapClrAttributesToDomResource(this IResourceType resourceType, DomReadWriteResource domResource, object clrResource)
 {
     resourceType.MapClrAttributesToDomResource(domResource, clrResource, null);
 }
コード例 #9
0
        public static void MapDomResourceToClrLinks(this IResourceType resourceType, object clrResource, DomReadWriteResource domResource)
        {
            Contract.Requires(resourceType != null);
            Contract.Requires(clrResource != null);
            Contract.Requires(domResource != null);

            var domLinksNode = domResource.GetNode(DomNodeType.Links);

            if (domLinksNode == null)
            {
                return;
            }

            var domLinks = (IDomLinks)domLinksNode;
            var clrLinks = domLinks.Links;

            resourceType.SetClrLinks(clrResource, clrLinks);
        }
コード例 #10
0
        public static DomData CreateFromResource(DomReadWriteResource domReadWriteResource)
        {
            var domData = new DomData(domReadWriteResource);

            return(domData);
        }
コード例 #11
0
        public static void MapDomResourceToClrAttributes(this IResourceType resourceType, object clrResource, DomReadWriteResource domResource)
        {
            Contract.Requires(resourceType != null);
            Contract.Requires(clrResource != null);
            Contract.Requires(domResource != null);

            var domAttributesNode = domResource.GetNode <DomNodeType, DomAttributes>(DomNodeType.Attributes);

            if (domAttributesNode == null)
            {
                return;
            }

            var domAttributeNodes = domAttributesNode.Nodes()
                                    .Cast <DomAttribute>()
                                    .ToList();

            foreach (var domAttributeNode in domAttributeNodes)
            {
                var clrPropertyName  = domAttributeNode.ClrPropertyName;
                var clrPropertyValue = domAttributeNode.ClrAttribute;

                var clrAttribute = resourceType.GetClrAttributeInfo(clrPropertyName);
                clrAttribute.SetClrProperty(clrResource, clrPropertyValue);
            }
        }
コード例 #12
0
        public static void MapDomResourceToClrId(this IResourceType resourceType, object clrResource, DomReadWriteResource domResource)
        {
            Contract.Requires(resourceType != null);
            Contract.Requires(clrResource != null);
            Contract.Requires(domResource != null);

            var domIdNode = domResource.GetNode <DomNodeType, DomId>(DomNodeType.Id);

            if (domIdNode == null)
            {
                return;
            }

            var clrId = domIdNode.ClrId;

            resourceType.SetClrId(clrResource, clrId);
        }
コード例 #13
0
        public static void MapDomResourceToClrMeta(this IResourceType resourceType, object clrResource, DomReadWriteResource domResource)
        {
            Contract.Requires(resourceType != null);
            Contract.Requires(clrResource != null);
            Contract.Requires(domResource != null);

            var domMetaNode = domResource.GetNode(DomNodeType.Meta);

            if (domMetaNode == null)
            {
                return;
            }

            var domMeta = (IDomMeta)domMetaNode;
            var clrMeta = domMeta.Meta;

            resourceType.SetClrMeta(clrResource, clrMeta);
        }
コード例 #14
0
        // PUBLIC METHODS ///////////////////////////////////////////////////
        #region Factory Methods
        public static DomReadWriteResource Create(params Node <DomNodeType>[] domNodes)
        {
            var domReadWriteResource = new DomReadWriteResource(domNodes);

            return(domReadWriteResource);
        }
コード例 #15
0
        public static void MapClrAttributesToDomResource(this IResourceType resourceType, DomReadWriteResource domResource, object clrResource)
        {
            Contract.Requires(resourceType != null);
            Contract.Requires(domResource != null);

            if (clrResource == null)
            {
                return;
            }

            var serviceModel  = domResource.GetServiceModel();
            var domAttributes = domResource.CreateAndAddNode(() => DomAttributes.Create());

            var attributeInfoCollection = resourceType.AttributesInfo.Collection;

            foreach (var attributeInfo in attributeInfoCollection)
            {
                var localAttributeInfo = attributeInfo;
                domAttributes.CreateAndAddNode(() => DomAttribute.CreateFromClrResource(serviceModel, localAttributeInfo, clrResource));
            }
        }
コード例 #16
0
        private static void MapDomResourceToApiRelationships(ISetRelationships apiSetRelationships, DomReadWriteResource domResource)
        {
            Contract.Requires(apiSetRelationships != null);
            Contract.Requires(domResource != null);

            var apiRelationships = GetApiResourceRelationships(domResource);

            apiSetRelationships.Relationships = apiRelationships;
        }
コード例 #17
0
        private static void MapDomResourceToApiAttributes(ISetAttributes apiSetAttributes, DomReadWriteResource domResource)
        {
            Contract.Requires(apiSetAttributes != null);
            Contract.Requires(domResource != null);

            var domAttributesNode = domResource.GetNode <DomNodeType, DomAttributes>(DomNodeType.Attributes);

            if (domAttributesNode == null)
            {
                return;
            }

            var domAttributeCollection = domAttributesNode.Nodes()
                                         .Cast <DomAttribute>()
                                         .ToList();

            if (!domAttributeCollection.Any())
            {
                return;
            }

            var apiObject = CreateApiObjectFromDomAttributeCollection(domAttributeCollection);

            apiSetAttributes.Attributes = apiObject;
        }
コード例 #18
0
        private static void MapDomResourceToApiId(ISetResourceIdentity apiSetResourceIdentity, DomReadWriteResource domResource)
        {
            Contract.Requires(apiSetResourceIdentity != null);
            Contract.Requires(domResource != null);

            var domIdNode = domResource.GetNode <DomNodeType, DomId>(DomNodeType.Id);

            if (domIdNode == null)
            {
                return;
            }

            var apiId = domIdNode.ApiId;

            apiSetResourceIdentity.Id = apiId;
        }
コード例 #19
0
        private static void MapDomResourceToApiType(ISetResourceIdentity apiSetResourceIdentity, DomReadWriteResource domResource)
        {
            Contract.Requires(apiSetResourceIdentity != null);
            Contract.Requires(domResource != null);

            var domTypeNode = domResource.GetNode <DomNodeType, DomType>(DomNodeType.Type);

            if (domTypeNode == null)
            {
                return;
            }

            var apiResourceType = domTypeNode.ApiType;

            apiSetResourceIdentity.Type = apiResourceType;
        }