예제 #1
0
        /// <summary>
        /// Gets the resource URIs for the specified resource Type using Ed-Fi schema-based and legacy URI conventions.
        /// </summary>
        /// <param name="resourceType">The resource Type for which to build the resource URIs.</param>
        /// <returns>The resource claim URIs.</returns>
        public string[] GetResourceClaimUris(Type resourceType)
        {
            Preconditions.ThrowIfNull(resourceType, nameof(resourceType));

            string schemaProperCaseName = resourceType.ParseResourceSchemaProperCaseName();
            string resourceName         = resourceType.Name;

            string schemaUriSegment = _schemaNameMapProvider
                                      .GetSchemaMapByProperCaseName(schemaProperCaseName)
                                      .UriSegment;

            return(new []
            {
                // Schema-based URI format
                CreateSchemaBasedResourceClaimUri(schemaUriSegment, resourceName),

                // Legacy URI format
                CreateLegacyResourceClaimUri(resourceName),
            });
        }
예제 #2
0
        public FilterContext GetExtensionContext(string properCaseName)
        {
            // Supports the NullFilterContext usage
            if (_filterProvider == null)
            {
                return(this);
            }

            ISchemaNameMapProvider schemaNameMapProvider = UnfilteredResourceClass.ResourceModel.SchemaNameMapProvider;

            if (schemaNameMapProvider == null)
            {
                return(this);
            }

            var logicalName = schemaNameMapProvider.GetSchemaMapByProperCaseName(properCaseName)
                              .LogicalName;

            var extensionDefinition = Definition.XPathSelectElement(
                $"Extension[@name='{logicalName}']");

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

            Extension extensionMember;

            if (!UnfilteredResourceClass.ExtensionByName.TryGetValue(properCaseName, out extensionMember))
            {
                throw new Exception(
                          $"Unable to find extension '{properCaseName}' of resource class '{UnfilteredResourceClass.Name}'.");
            }

            return(new FilterContext(_filterProvider, extensionDefinition, extensionMember.ObjectType));
        }