public void AddResourceLinkage(IServiceModel serviceModel, IToOneIncludedResource toOneIncludedResource)
        {
            Contract.Requires(serviceModel != null);

            if (toOneIncludedResource == null)
            {
                return;
            }

            this.AddResourceLinkage(serviceModel,
                                    toOneIncludedResource.FromResourceType,
                                    toOneIncludedResource.FromResource,
                                    toOneIncludedResource.FromRel,
                                    toOneIncludedResource.ToResourceType,
                                    toOneIncludedResource.ToResource);
        }
Esempio n. 2
0
        // PRIVATE METHODS //////////////////////////////////////////////////
        #region Methods
        private void AddResourceLinkage(IToOneIncludedResource <TFromResource, TToResource> toOneIncludedResource)
        {
            Contract.Requires(toOneIncludedResource != null);

            this.DocumentBuilderContext.AddResourceLinkage(this.ServiceModel, toOneIncludedResource);
        }
Esempio n. 3
0
        // INTERNAL CONSTRUCTORS ////////////////////////////////////////////
        #region Constructors
        internal ToOneIncludedResourceBuilder(DocumentBuilder parentBuilder, DomDocument domDocument, IToOneIncludedResource <TFromResource, TToResource> toOneIncludedResource)
            : base(parentBuilder, domDocument.GetOrAddIncluded(), toOneIncludedResource.ToResource)
        {
            Contract.Requires(toOneIncludedResource != null);

            this.Builder = this;

            this.AddResourceLinkage(toOneIncludedResource);
        }
        public void AddResourceLinkage <TFromResource, TToResource>(IServiceModel serviceModel, IToOneIncludedResource <TFromResource, TToResource> toOneIncludedResource)
            where TFromResource : class
            where TToResource : class
        {
            Contract.Requires(serviceModel != null);
            Contract.Requires(toOneIncludedResource != null);

            this.AddResourceLinkage(serviceModel,
                                    typeof(TFromResource),
                                    toOneIncludedResource.FromResource,
                                    toOneIncludedResource.FromRel,
                                    typeof(TToResource),
                                    toOneIncludedResource.ToResource);
        }
        // PUBLIC METHODS ///////////////////////////////////////////////////
        #region Extension Methods
        public static IResourcePathContextBuilder <TParentBuilder> AddPath <TParentBuilder, TFromResource, TToResource>(this IResourcePathContextBuilder <TParentBuilder> resourcePathContextBuilder, IToOneIncludedResource <TFromResource, TToResource> toOneIncludedResource)
            where TParentBuilder : class
            where TFromResource : class
            where TToResource : class
        {
            Contract.Requires(resourcePathContextBuilder != null);
            Contract.Requires(toOneIncludedResource != null);

            var fromResource = toOneIncludedResource.FromResource;
            var fromRel      = toOneIncludedResource.FromRel;

            return(resourcePathContextBuilder.AddPath(fromResource, fromRel));
        }
Esempio n. 6
0
        public void AddResourceLinkage <TFromResource, TToResource>(IServiceModel serviceModel, IToOneIncludedResource <TFromResource, TToResource> toOneIncludedResource)
            where TFromResource : class, IResource
            where TToResource : class, IResource
        {
            Contract.Requires(serviceModel != null);
            Contract.Requires(toOneIncludedResource != null);

            // Create ResourceLinkageKey from ToOneIncludedResource.
            var fromClrResourceType = typeof(TFromResource);
            var fromResourceType    = serviceModel.GetResourceType(fromClrResourceType);

            var fromClrResource           = toOneIncludedResource.FromResource;
            var fromApiResourceIdentifier = fromResourceType.GetApiResourceIdentifier(fromClrResource);

            var fromApiRel = toOneIncludedResource.FromRel;

            var apiResourceLinkageKey = new ApiResourceLinkageKey(fromApiResourceIdentifier, fromApiRel);

            // Create ResourceLinkage from ToOneIncludedResource
            var toApiResourceIdentifier = default(ResourceIdentifier);

            var toClrResource = toOneIncludedResource.ToResource;

            if (toClrResource != null)
            {
                var toClrResourceType = typeof(TToResource);
                var toResourceType    = serviceModel.GetResourceType(toClrResourceType);

                toApiResourceIdentifier = toResourceType.GetApiResourceIdentifier(toClrResource);
            }

            var apiResourceLinkage = new ApiResourceLinkage(toApiResourceIdentifier);

            // Add ResourceLinkage to this DocumentBuilderContext
            this.AddResourceLinkage(apiResourceLinkageKey, apiResourceLinkage);
        }
Esempio n. 7
0
        // INTERNAL CONSTRUCTORS ////////////////////////////////////////////
        #region Constructors
        internal ToOneIncludedResourceBuilder(DocumentBuilder parentBuilder, DomDocument domDocument, IToOneIncludedResource toOneIncludedResource)
            : base(parentBuilder, domDocument.GetOrAddIncluded(), toOneIncludedResource?.ToResourceType, toOneIncludedResource?.ToResource)
        {
            Contract.Requires(toOneIncludedResource != null);

            this.Builder = this;

            this.DocumentBuilderContext.AddResourceLinkage(this.ServiceModel, toOneIncludedResource);
        }