public Type GetType(IOpenApiObjectToTypeService objectService,
                            IOpenApiUmbrellaTypeResolver typeResolver,
                            IObjectsProcessingKeyStore objectKeyStore,
                            OpenApiReferencedType referencedType,
                            IDictionary <string, IOpenApiType> definitions)
        {
            var typeName = _lastTokenService.GetLastToken(referencedType.Type);

            if (!CurrentTypeHolder.Types.TryGetValue(typeName, out var existingType))
            {
                if (!definitions.TryGetValue(typeName, out var definedNotCreated))
                {
                    throw new NotSupportedException($"Referenced type {typeName} is not defined in OpenApi document");
                }

                //handle circular reference
                objectKeyStore.ThrowIfPresent(typeName);

                var createdType = typeResolver.GetType(objectService,
                                                       objectKeyStore,
                                                       definedNotCreated,
                                                       definitions,
                                                       typeName);

                CurrentTypeHolder.Types[typeName] = createdType;

                return(createdType);
            }

            return(existingType);
        }
 public OpenApiObjectToTypeService(IOpenApiUmbrellaTypeResolver openApiUmbrellaTypeResolver,
                                   IStealFieldsFromOpenApiObjectTypesService stealFieldsFromOpenApiObjectTypesService,
                                   IModuleBuilderProvider moduleBuilderProvider)
 {
     _typeResolver = openApiUmbrellaTypeResolver;
     _fieldStealer = stealFieldsFromOpenApiObjectTypesService;
     _module       = moduleBuilderProvider;
 }
Esempio n. 3
0
 public OpenApiEndpointToEndpointService(IOpenApiUmbrellaTypeResolver openApiUmbrellaTypeResolver,
                                         IOpenApiPrimitiveToTypeService openApiPrimitiveToTypeService,
                                         IOpenApiObjectToTypeService openApiObjectToTypeService)
 {
     _typeResolver        = openApiUmbrellaTypeResolver;
     _primitiveService    = openApiPrimitiveToTypeService;
     _objectToTypeService = openApiObjectToTypeService;
 }
Esempio n. 4
0
 public OpenApiSpecModelToGeneratedTypesService(IOpenApiObjectToTypeService openApiObjectToTypeService,
                                                IOpenApiUmbrellaTypeResolver openApiUmbrellaTypeResolver,
                                                IOpenApiEndpointToEndpointService openApiEndpointToEndpointService)
 {
     _objectGenerationService = openApiObjectToTypeService;
     _typeResolver            = openApiUmbrellaTypeResolver;
     _endpointService         = openApiEndpointToEndpointService;
 }
 public StealFieldsFromOpenApiObjectTypeService(IOpenApiUmbrellaTypeResolver openApiUmbrellaTypeResolver)
 {
     _typeResolver = openApiUmbrellaTypeResolver;
 }