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); }
// PRIVATE METHODS ////////////////////////////////////////////////// #region Methods private void AddResourceLinkage(IToOneIncludedResource <TFromResource, TToResource> toOneIncludedResource) { Contract.Requires(toOneIncludedResource != null); this.DocumentBuilderContext.AddResourceLinkage(this.ServiceModel, toOneIncludedResource); }
// 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)); }
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); }
// 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); }