コード例 #1
0
 public ExtensionsOpenApiContentProvider(IDomainModelProvider domainModelProvider,
                                         IResourceModelProvider resourceModelProvider, ISchemaNameMapProvider schemaNameMapProvider)
 {
     _domainModelProvider   = Preconditions.ThrowIfNull(domainModelProvider, nameof(domainModelProvider));
     _resourceModelProvider = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));
     _schemaNameMapProvider = Preconditions.ThrowIfNull(schemaNameMapProvider, nameof(schemaNameMapProvider));
 }
コード例 #2
0
        public ValidatingProfileMetadataProvider(string profilePath, IResourceModelProvider resourceModelProvider)
        {
            if (profilePath == null)
            {
                throw new ArgumentNullException(nameof(profilePath));
            }

            if (!Directory.Exists(profilePath))
            {
                throw new DirectoryNotFoundException($"{profilePath} not found");
            }

            if (resourceModelProvider == null)
            {
                throw new ArgumentNullException(nameof(resourceModelProvider));
            }

            _resourceModel           = resourceModelProvider.GetResourceModel();
            _profileDefinitionByName = new Lazy <IDictionary <string, XElement> >(LazyInitializeProfileDefinitions);
            _profileXDoc             = new Lazy <XDocument>(() => MetadataHelper.GetProfilesXDocument(profilePath));
            _profileResources        = new Lazy <List <ProfileAndResourceNames> >(LazyInitializeProfileResources);

            _codeGenProfiles = new Lazy <Profile[]>(
                () => MetadataHelper.GetProfiles(ProfileXDocument)
                .Profile);
        }
コード例 #3
0
        public CompositesOpenApiContentProvider(ICompositesMetadataProvider compositesMetadataProvider,
                                                IResourceModelProvider resourceModelProvider)
        {
            _compositesMetadataProvider = Preconditions.ThrowIfNull(
                compositesMetadataProvider, nameof(compositesMetadataProvider));

            _resourceModelProvider = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));
        }
コード例 #4
0
        public ProfileResourceModelProvider(
            IResourceModelProvider resourceModelProvider,
            IProfileMetadataProvider profileMetadataProvider)
        {
            _profileMetadataProvider = profileMetadataProvider;

            _resourceModel = new Lazy <ResourceModel>(resourceModelProvider.GetResourceModel);
        }
コード例 #5
0
 public ExtensionsOpenApiContentProvider(IDomainModelProvider domainModelProvider,
                                         IResourceModelProvider resourceModelProvider, ISchemaNameMapProvider schemaNameMapProvider,
                                         IOpenApiMetadataDocumentFactory documentFactory)
 {
     _domainModelProvider            = Preconditions.ThrowIfNull(domainModelProvider, nameof(domainModelProvider));
     _resourceModelProvider          = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));
     _schemaNameMapProvider          = Preconditions.ThrowIfNull(schemaNameMapProvider, nameof(schemaNameMapProvider));
     _openApiMetadataDocumentFactory = Preconditions.ThrowIfNull(documentFactory, nameof(documentFactory));
 }
コード例 #6
0
        public LegacyOpenApiMetadataCacheProvider(
            IDomainModelProvider domainModelProvider,
            IResourceModelProvider resourceModelProvider,
            IProfileResourceModelProvider profileResourceModelProvider,
            IProfileResourceNamesProvider profileResourceNamesProvider,
            ICompositesMetadataProvider compositesMetadataProvider,
            ISchemaNameMapProvider schemaNameMapProvider,
            IOpenApiMetadataRouteProvider openApiMetadataRouteProvider,
            IOpenApiContentProvider[] openApiContentProviders)
        {
            _domainModelProvider          = domainModelProvider;
            _resourceModelProvider        = resourceModelProvider;
            _compositesMetadataProvider   = compositesMetadataProvider;
            _schemaNameMapProvider        = schemaNameMapProvider;
            _openApiMetadataRouteProvider = openApiMetadataRouteProvider;
            _profileResourceModelProvider = profileResourceModelProvider;
            _profileResourceNamesProvider = profileResourceNamesProvider;

            _openApiMetadataResourceFilters =
                new Dictionary <string, IOpenApiMetadataResourceStrategy>(StringComparer.InvariantCultureIgnoreCase)
            {
                { Descriptors, new SwaggerUiDescriptorOnlyStrategy() },
                { Resources, new SwaggerUiResourceOnlyStrategy() },
                { Extensions, new SdkGenExtensionResourceStrategy() },
                { EdFi, new SdkGenAllEdFiResourceStrategy() },
                { Profiles, new OpenApiProfileStrategy() },
                { Composites, new OpenApiCompositeStrategy(_compositesMetadataProvider) },
                { All, new SdkGenAllResourceStrategy() }
            };

            _openApiMetadataSectionByRoute =
                new Dictionary <string, Func <IEnumerable <OpenApiContent> > >
            {
                { MetadataRouteConstants.Schema, CreateSchemaSpecificSections },
                { MetadataRouteConstants.All, CreateSdkGenAllSection },
                { MetadataRouteConstants.Profiles, CreateProfileSection },
                { MetadataRouteConstants.Composites, CreateCompositeSection },
                { MetadataRouteConstants.ResourceTypes, CreateSwaggerUiSection }
            };

            foreach (var openApiContentProvider in openApiContentProviders)
            {
                var routeName = openApiContentProvider.RouteName;

                if (_openApiMetadataSectionByRoute.ContainsKey(routeName))
                {
                    throw new InvalidOperationException(
                              $"Duplicate metadata route '{routeName}' encountered during initialization.  Source: {openApiContentProvider.GetType().FullName}");
                }

                _openApiMetadataSectionByRoute.Add(routeName, openApiContentProvider.GetOpenApiContent);
            }

            _swaggerMetadataCache =
                new ConcurrentDictionary <string, OpenApiContent>(StringComparer.InvariantCultureIgnoreCase);
        }
コード例 #7
0
 public ProfilesOpenApiContentProvider(IProfileResourceModelProvider profileResourceModelProvider,
                                       IProfileResourceNamesProvider profileResourceNamesProvider,
                                       IResourceModelProvider resourceModelProvider,
                                       IOpenApiMetadataDocumentFactory documentFactory)
 {
     _profileResourceModelProvider   = Preconditions.ThrowIfNull(profileResourceModelProvider, nameof(profileResourceModelProvider));
     _profileResourceNamesProvider   = Preconditions.ThrowIfNull(profileResourceNamesProvider, nameof(profileResourceNamesProvider));
     _resourceModelProvider          = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));
     _openApiMetadataDocumentFactory = Preconditions.ThrowIfNull(documentFactory, nameof(documentFactory));
 }
コード例 #8
0
        public CompositesOpenApiContentProvider(ICompositesMetadataProvider compositesMetadataProvider,
                                                IResourceModelProvider resourceModelProvider, IOpenApiMetadataDocumentFactory openApiMetadataDocumentFactory)
        {
            _compositesMetadataProvider = Preconditions.ThrowIfNull(
                compositesMetadataProvider, nameof(compositesMetadataProvider));

            _resourceModelProvider = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));

            _openApiMetadataDocumentFactory = Preconditions.ThrowIfNull(
                openApiMetadataDocumentFactory, nameof(openApiMetadataDocumentFactory));
        }
コード例 #9
0
        public ProfilesOpenApiContentProvider(IProfileResourceModelProvider profileResourceModelProvider,
                                              IProfileResourceNamesProvider profileResourceNamesProvider,
                                              IResourceModelProvider resourceModelProvider)
        {
            _profileResourceModelProvider =
                Preconditions.ThrowIfNull(profileResourceModelProvider, nameof(profileResourceModelProvider));

            _profileResourceNamesProvider =
                Preconditions.ThrowIfNull(profileResourceNamesProvider, nameof(profileResourceNamesProvider));

            _resourceModelProvider = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));
        }
コード例 #10
0
        public object Generate(TemplateContext templateContext)
        {
            TemplateContext       = Preconditions.ThrowIfNull(templateContext, nameof(templateContext));
            ResourceModelProvider = new ResourceModelProvider(TemplateContext.DomainModelProvider);

            ValidatingProfileMetadataProvider = new ValidatingProfileMetadataProvider(TemplateContext.ProjectPath, ResourceModelProvider);
            ProfileResourceNamesProvider      = ValidatingProfileMetadataProvider;
            ProfileResourceModelProvider      = new ProfileResourceModelProvider(ResourceModelProvider, ValidatingProfileMetadataProvider);
            ProjectHasProfileDefinition       = ValidatingProfileMetadataProvider.HasProfileData;

            Configure();

            return(Build());
        }
コード例 #11
0
 public CompositeResourceResponseProvider(
     ISessionFactory sessionFactory,
     ICompositeDefinitionProcessor <HqlBuilderContext, CompositeQuery> compositeDefinitionProcessor,
     IResourceModelProvider resourceModelProvider,
     IPersonUniqueIdToUsiCache personUniqueIdToUsiCache,
     IFieldsExpressionParser fieldsExpressionParser,
     IProfileResourceModelProvider profileResourceModelProvider)
 {
     _sessionFactory = sessionFactory;
     _compositeDefinitionProcessor = compositeDefinitionProcessor;
     _resourceModelProvider        = resourceModelProvider;
     _personUniqueIdToUsiCache     = personUniqueIdToUsiCache;
     _fieldsExpressionParser       = fieldsExpressionParser;
     _profileResourceModelProvider = profileResourceModelProvider;
 }
コード例 #12
0
            protected override void Arrange()
            {
                resourceModelProvider = A.Fake <IResourceModelProvider>();
                profileMetadaProvider = A.Fake <IProfileMetadataProvider>();
                A.CallTo(() => profileMetadaProvider.GetProfileDefinition("Profile1"))
                .Returns(
                    XElement.Parse(
                        @"
                            <Profile name='Profile1'>
                                <Resource name='TestEntity1' logicalSchema='schema1'>
                                    <ReadContentType memberSelection='IncludeOnly'>
                                        <Property name='StringProperty1' />
                                    </ReadContentType>
                                    <WriteContentType memberSelection='IncludeOnly'>
                                        <Property name='DateProperty1' />
                                    </WriteContentType>
                                </Resource>
                            </Profile>"));


                A.CallTo(() => profileMetadaProvider.GetProfileDefinition("Profile2"))
                .Returns(
                    XElement.Parse(
                        @"
                            <Profile name='Profile2'>
                                <Resource name='TestEntity2' logicalSchema='schema1'>
                                    <ReadContentType memberSelection='IncludeOnly'>
                                        <Property name='StringProperty1' />
                                    </ReadContentType>
                                </Resource>
                                <Resource name='TestEntity3' logicalSchema='schema1'>
                                    <WriteContentType memberSelection='IncludeOnly'>
                                        <Property name='DateProperty1' />
                                    </WriteContentType>
                                </Resource>
                            </Profile>"));

                A.CallTo(() => profileMetadaProvider.GetProfileDefinition("ProfileX"))
                .Throws(new KeyNotFoundException());

                A.CallTo(() => resourceModelProvider.GetResourceModel())
                .Returns(GetTestResourceModel());

                profileresourceModelProvider = new ProfileResourceModelProvider(resourceModelProvider, profileMetadaProvider);
            }
コード例 #13
0
        public ResourceProfileProvider(
            IResourceModelProvider resourceModelProvider,
            TemplateContext templateContext)
        {
            var validatingProfileMetadataProvider = new ValidatingProfileMetadataProvider(
                templateContext.ProjectPath,
                resourceModelProvider);

            _profileResourceNamesProvider = validatingProfileMetadataProvider;

            _profileResourceModelProvider = new ProfileResourceModelProvider(
                resourceModelProvider,
                validatingProfileMetadataProvider);

            ProjectHasProfileDefinition = validatingProfileMetadataProvider.HasProfileData;

            ResourceModel = resourceModelProvider.GetResourceModel();
        }
コード例 #14
0
        public OpenApiMetadataCacheProvider(IResourceModelProvider resourceModelProvider,
                                            IOpenApiMetadataRouteProvider openApiMetadataRouteProvider, IOpenApiContentProvider[] openApiContentProviders)
        {
            _openApiContentProviders = Preconditions.ThrowIfNull(openApiContentProviders, nameof(openApiContentProviders));
            _resourceModelProvider   = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));

            _openApiMetadataRouteProvider = Preconditions.ThrowIfNull(
                openApiMetadataRouteProvider, nameof(openApiMetadataRouteProvider));

            _openApiMetadataResourceFilters =
                new Dictionary <string, IOpenApiMetadataResourceStrategy>(StringComparer.InvariantCultureIgnoreCase)
            {
                { Descriptors, new SwaggerUiDescriptorOnlyStrategy() },
                { Resources, new SwaggerUiResourceOnlyStrategy() },
                { All, new SdkGenAllResourceStrategy() }
            };

            _swaggerMetadataCache = new ConcurrentDictionary <string, OpenApiContent>(StringComparer.InvariantCultureIgnoreCase);
        }
コード例 #15
0
        public OpenApiMetadataCacheProvider(
            IResourceModelProvider resourceModelProvider,
            IList <IOpenApiMetadataRouteInformation> openApiMetadataRouteInformations,
            IList <IOpenApiContentProvider> openApiContentProviders,
            IOpenApiMetadataDocumentFactory openApiMetadataDocumentFactory)
        {
            _openApiMetadataRouteInformations = openApiMetadataRouteInformations;
            _openApiContentProviders          = openApiContentProviders;
            _resourceModelProvider            = resourceModelProvider;

            _openApiMetadataResourceFilters =
                new Dictionary <string, IOpenApiMetadataResourceStrategy>(StringComparer.InvariantCultureIgnoreCase)
            {
                { Descriptors, new OpenApiMetadataUiDescriptorOnlyStrategy() },
                { Resources, new OpenApiMetadataUiResourceOnlyStrategy() },
                { All, new SdkGenAllResourceStrategy() }
            };

            _openApiMetadataMetadataCache =
                new ConcurrentDictionary <string, OpenApiContent>(StringComparer.InvariantCultureIgnoreCase);

            _openApiMetadataDocumentFactory = openApiMetadataDocumentFactory;
        }
コード例 #16
0
 public EdFiOpenApiContentProvider(IResourceModelProvider resourceModelProvider, IOpenApiMetadataDocumentFactory documentFactory)
 {
     _resourceModelProvider          = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));
     _openApiMetadataDocumentFactory = Preconditions.ThrowIfNull(documentFactory, nameof(documentFactory));
 }
コード例 #17
0
 public EdFiOpenApiContentProvider(IResourceModelProvider resourceModelProvider)
 {
     _resourceModelProvider = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));
 }
コード例 #18
0
 public ResourceLoadGraphFactory(IResourceModelProvider resourceModelProvider,
                                 IResourceLoadGraphTransformer[] graphTransformers)
 {
     _resourceModelProvider = resourceModelProvider;
     _graphTransformers     = graphTransformers;
 }