public ILink GetRelatedResourceLink <TResource>(TResource relationshipOwner, IResourceTypeRegistry resourceTypeRegistry, ResourceTypeRelationship property, string baseUrl)
        {
            var url      = BuildRelatedResourceUrl(relationshipOwner, resourceTypeRegistry, property, baseUrl);
            var metadata = GetMetadataForRelatedResourceLink(relationshipOwner, property);

            return(new Link(url, metadata));
        }
 /// <summary>
 /// Creates a new EntityFrameworkEntityFrameworkResourceObjectMaterializer
 /// </summary>
 /// <param name="dbContext"></param>
 /// <param name="registry"></param>
 public EntityFrameworkResourceObjectMaterializer(DbContext dbContext, IResourceTypeRegistry registry)
 {
     _dbContext = dbContext;
     _registry  = registry;
     _openSetToManyRelationshipValueMethod = GetType()
                                             .GetMethod("SetToManyRelationshipValue", BindingFlags.NonPublic | BindingFlags.Instance);
     _openGetExistingRecordGenericMethod = GetType()
                                           .GetMethod("GetExistingRecordGeneric", BindingFlags.NonPublic | BindingFlags.Instance);
 }
 public StarshipDocumentMaterializer(
     TestDbContext dbContext,
     IQueryableResourceCollectionDocumentBuilder queryableResourceCollectionDocumentBuilder,
     IBaseUrlService baseUrlService, ISingleResourceDocumentBuilder singleResourceDocumentBuilder,
     ISortExpressionExtractor sortExpressionExtractor,
     IQueryableEnumerationTransformer queryableEnumerationTransformer, IResourceTypeRegistry resourceTypeRegistry)
     : base(
         queryableResourceCollectionDocumentBuilder, baseUrlService, singleResourceDocumentBuilder,
         queryableEnumerationTransformer, sortExpressionExtractor, resourceTypeRegistry)
 {
     _dbContext = dbContext;
 }
 /// <summary>
 /// Creates a new MappedDocumentMaterializer
 /// </summary>
 protected MappedDocumentMaterializer(
     IQueryableResourceCollectionDocumentBuilder queryableResourceCollectionDocumentBuilder,
     IBaseUrlService baseUrlService,
     ISingleResourceDocumentBuilder singleResourceDocumentBuilder,
     IQueryableEnumerationTransformer queryableEnumerationTransformer,
     ISortExpressionExtractor sortExpressionExtractor,
     IResourceTypeRegistry resourceTypeRegistry)
 {
     _queryableResourceCollectionDocumentBuilder = queryableResourceCollectionDocumentBuilder;
     _baseUrlService = baseUrlService;
     _singleResourceDocumentBuilder   = singleResourceDocumentBuilder;
     _queryableEnumerationTransformer = queryableEnumerationTransformer;
     _sortExpressionExtractor         = sortExpressionExtractor;
     _resourceTypeRegistry            = resourceTypeRegistry;
 }
        /// <summary>
        /// Constructs a URL for the resource(s) on the other side of the given relationship, belonging to the given resource
        /// </summary>
        /// <param name="relationshipOwner"></param>
        /// <param name="resourceTypeRegistry"></param>
        /// <param name="property"></param>
        /// <param name="baseUrl"></param>
        /// <returns></returns>
        protected virtual string BuildRelatedResourceUrl(object relationshipOwner, IResourceTypeRegistry resourceTypeRegistry,
                                                         ResourceTypeRelationship property, string baseUrl)
        {
            var relationshipOwnerType = relationshipOwner.GetType();
            var sanitizedBaseUrl      = GetSanitizedBaseUrl(baseUrl);
            var registration          = resourceTypeRegistry.GetRegistrationForType(relationshipOwnerType);
            var id = registration.GetIdForResource(relationshipOwner);

            if (property.RelatedResourceLinkTemplate != null)
            {
                var replacedString = property.RelatedResourceLinkTemplate.Replace("{1}", id);
                return(String.Format("{0}/{1}", sanitizedBaseUrl, replacedString));
            }

            return(String.Format("{0}/{1}/{2}/{3}", sanitizedBaseUrl, registration.ResourceTypeName, id, property.JsonKey));
        }
 /// <summary>
 /// Creates a new RegistryDrivenSingleResourceDocumentBuilder
 /// </summary>
 /// <param name="resourceTypeRegistry">The resource type registry to use to locate the registered type</param>
 /// <param name="linkConventions">Conventions to follow when building links</param>
 public RegistryDrivenSingleResourceDocumentBuilder(IResourceTypeRegistry resourceTypeRegistry, ILinkConventions linkConventions)
     : base(resourceTypeRegistry, linkConventions)
 {
 }
 /// <summary>
 /// Creates a new FilteringQueryableTransformer
 /// </summary>
 /// <param name="resourceTypeRegistry">The registry used to look up registered type information.</param>
 public DefaultFilteringTransformer(IResourceTypeRegistry resourceTypeRegistry)
 {
     _resourceTypeRegistry = resourceTypeRegistry;
 }
Beispiel #8
0
 /// <summary>
 /// Creates a new PathVisitor
 /// </summary>
 /// <param name="resourceTypeRegistry"></param>
 public PathVisitor(IResourceTypeRegistry resourceTypeRegistry)
 {
     _resourceTypeRegistry = resourceTypeRegistry;
 }
 /// <summary>
 /// Creates a new RegistryDrivenSingleResourceDocumentBuilder
 /// </summary>
 /// <param name="resourceTypeRegistry">The resource type registry to use to locate the registered type</param>
 /// <param name="linkConventions">Conventions to follow when building links</param>
 public RegistryDrivenSingleResourceDocumentBuilder(IResourceTypeRegistry resourceTypeRegistry, ILinkConventions linkConventions)
     : base(resourceTypeRegistry, linkConventions)
 {
 }
 /// <summary>
 /// Creates a new RegistryDrivenDocumentBuilder
 /// </summary>
 /// <param name="resourceTypeRegistry"></param>
 /// <param name="linkConventions"></param>
 protected RegistryDrivenDocumentBuilder(IResourceTypeRegistry resourceTypeRegistry, ILinkConventions linkConventions)
 {
     _resourceTypeRegistry = resourceTypeRegistry;
     _linkConventions = linkConventions;
 }
 public CustomEntityFrameworkResourceObjectMaterializer(DbContext dbContext, IResourceTypeRegistry registry) : base(dbContext, registry)
 {
 }
 /// <summary>
 /// Creates a new RegistryDrivenSingleResourceDocumentBuilder
 /// </summary>
 /// <param name="resourceTypeRegistry">The resource type registry to use to locate the registered type</param>
 /// <param name="linkConventions">Conventions to follow when building links</param>
 public RegistryDrivenResourceCollectionDocumentBuilder(IResourceTypeRegistry resourceTypeRegistry, ILinkConventions linkConventions)
     : base(resourceTypeRegistry, linkConventions)
 {
 }
Beispiel #13
0
 /// <summary>
 /// Creates a new PathVisitor
 /// </summary>
 /// <param name="resourceTypeRegistry"></param>
 public PathVisitor(IResourceTypeRegistry resourceTypeRegistry)
 {
     _resourceTypeRegistry = resourceTypeRegistry;
 }
 /// <summary>
 /// Creates a new RegistryDrivenDocumentBuilder
 /// </summary>
 /// <param name="resourceTypeRegistry"></param>
 /// <param name="linkConventions"></param>
 protected RegistryDrivenDocumentBuilder(IResourceTypeRegistry resourceTypeRegistry, ILinkConventions linkConventions)
 {
     _resourceTypeRegistry = resourceTypeRegistry;
     _linkConventions      = linkConventions;
 }
 public CustomEntityFrameworkResourceObjectMaterializer(DbContext dbContext, IResourceTypeRegistry registry) : base(dbContext, registry)
 {
 }