public void AddResourceLinkage(IServiceModel serviceModel, IToManyIncludedResources toManyIncludedResources) { Contract.Requires(serviceModel != null); if (toManyIncludedResources == null) { return; } this.AddResourceLinkage(serviceModel, toManyIncludedResources.FromResourceType, toManyIncludedResources.FromResource, toManyIncludedResources.FromRel, toManyIncludedResources.ToResourceType, toManyIncludedResources.ToResourceCollection); }
// PRIVATE METHODS ////////////////////////////////////////////////// #region Methods private void AddResourceLinkage(IToManyIncludedResources <TFromResource, TToResource> toManyIncludedResources) { Contract.Requires(toManyIncludedResources != null); this.DocumentBuilderContext.AddResourceLinkage(this.ServiceModel, toManyIncludedResources); }
public void AddResourceLinkage <TFromResource, TToResource>(IServiceModel serviceModel, IToManyIncludedResources <TFromResource, TToResource> toManyIncludedResources) where TFromResource : class where TToResource : class { Contract.Requires(serviceModel != null); Contract.Requires(toManyIncludedResources != null); this.AddResourceLinkage(serviceModel, typeof(TFromResource), toManyIncludedResources.FromResource, toManyIncludedResources.FromRel, typeof(TToResource), toManyIncludedResources.ToResourceCollection); }
public static IResourcePathContextBuilder <TParentBuilder> AddPath <TParentBuilder, TFromResource, TToResource>(this IResourcePathContextBuilder <TParentBuilder> resourcePathContextBuilder, IToManyIncludedResources <TFromResource, TToResource> toManyIncludedResources) where TParentBuilder : class where TFromResource : class where TToResource : class { Contract.Requires(resourcePathContextBuilder != null); Contract.Requires(toManyIncludedResources != null); var fromResource = toManyIncludedResources.FromResource; var fromRel = toManyIncludedResources.FromRel; return(resourcePathContextBuilder.AddPath(fromResource, fromRel)); }
// INTERNAL CONSTRUCTORS //////////////////////////////////////////// #region Constructors internal ToManyIncludedResourcesBuilder(DocumentBuilder parentBuilder, DomDocument domDocument, IToManyIncludedResources toManyIncludedResources) : base(parentBuilder, domDocument.GetOrAddIncluded(), toManyIncludedResources?.ToResourceType, toManyIncludedResources?.ToResourceCollection) { this.Builder = this; this.DocumentBuilderContext.AddResourceLinkage(this.ServiceModel, toManyIncludedResources); }
public void AddResourceLinkage <TFromResource, TToResource>(IServiceModel serviceModel, IToManyIncludedResources <TFromResource, TToResource> toManyIncludedResources) where TFromResource : class, IResource where TToResource : class, IResource { Contract.Requires(serviceModel != null); Contract.Requires(toManyIncludedResources != null); // Create ResourceLinkageKey from ToManyIncludedResources. var fromClrResourceType = typeof(TFromResource); var fromResourceType = serviceModel.GetResourceType(fromClrResourceType); var fromClrResource = toManyIncludedResources.FromResource; var fromApiResourceIdentifier = fromResourceType.GetApiResourceIdentifier(fromClrResource); var fromApiRel = toManyIncludedResources.FromRel; var apiResourceLinkageKey = new ApiResourceLinkageKey(fromApiResourceIdentifier, fromApiRel); // Create ResourceLinkage from ToManyIncludedResources. var toApiResourceIdentifierCollection = Enumerable.Empty <ResourceIdentifier>() .ToList(); var toClrResourceCollection = toManyIncludedResources.ToResourceCollection; if (toClrResourceCollection != null) { var toClrResourceType = typeof(TToResource); var toResourceType = serviceModel.GetResourceType(toClrResourceType); toApiResourceIdentifierCollection = toClrResourceCollection.Select(toResourceType.GetApiResourceIdentifier) .ToList(); } var apiResourceLinkage = new ApiResourceLinkage(toApiResourceIdentifierCollection); // Add ResourceLinkage to this DocumentBuilderContext this.AddResourceLinkage(apiResourceLinkageKey, apiResourceLinkage); }
// INTERNAL CONSTRUCTORS //////////////////////////////////////////// #region Constructors internal ToManyIncludedResourcesBuilder(DocumentBuilder parentBuilder, DomDocument domDocument, IToManyIncludedResources <TFromResource, TToResource> toManyIncludedResources) : base(parentBuilder, domDocument.GetOrAddIncluded(), toManyIncludedResources.ToResourceCollection) { Contract.Requires(toManyIncludedResources != null); this.Builder = this; this.AddResourceLinkage(toManyIncludedResources); }