/// <summary>Initializes a new instance of the <see cref="ClassTemplateModel"/> class.</summary> /// <param name="typeName">Name of the type.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> /// <param name="schema">The schema.</param> /// <param name="rootObject">The root object.</param> public ClassTemplateModel(string typeName, CSharpGeneratorSettings settings, CSharpTypeResolver resolver, JsonSchema schema, object rootObject) : base(resolver, schema, rootObject) { _resolver = resolver; _schema = schema; _settings = settings; ClassName = typeName; Properties = _schema.ActualProperties.Values .Where(p => !p.IsInheritanceDiscriminator) .Select(property => new PropertyModel(this, property, _resolver, _settings)) .ToArray(); Id = _schema.Id; if (schema.InheritedSchema != null) { BaseClass = new ClassTemplateModel(BaseClassName, settings, resolver, schema.InheritedSchema, rootObject); AllProperties = Properties.Concat(BaseClass.AllProperties).ToArray(); } else { AllProperties = Properties; } }
/// <summary>Initializes a new instance of the <see cref="CSharpControllerGenerator" /> class.</summary> /// <param name="document">The Swagger document.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> /// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" />.</exception> public CSharpRefitGenerator(OpenApiDocument document, CSharpRefitGeneratorSettings settings, CSharpTypeResolver resolver) : base(document, settings, resolver) { _document = document ?? throw new ArgumentNullException(nameof(document)); Settings = settings ?? throw new ArgumentNullException(nameof(settings)); }
public void When_schema_has_default_value_of_enum_it_is_generated_in_CSharp_and_TypeScript_correctly() { //// Arrange var csharpSettings = new CSharpGeneratorSettings { EnumNameGenerator = new MyEnumNameGenerator(), Namespace = "Ns" }; var csharpGenerator = new CSharpValueGenerator(csharpSettings); var csharpTypeResolver = new CSharpTypeResolver(csharpSettings); //// Act var schema = new JsonSchema4() { Type = JsonObjectType.String, Enumeration = { "Foo", "Bar" }, Default = "Bar" }; var typescriptSettings = new TypeScriptGeneratorSettings { EnumNameGenerator = new MyEnumNameGenerator() }; var typescriptGenerator = new TypeScriptValueGenerator(typescriptSettings); var typescriptTypeResolver = new TypeScriptTypeResolver(typescriptSettings); var csharpValue = csharpGenerator.GetDefaultValue(schema, true, "MyEnum", "MyEnum", true, csharpTypeResolver); var typescriptValue = typescriptGenerator.GetDefaultValue(schema, true, "MyEnum", "MyEnum", true, typescriptTypeResolver); //// Assert Assert.Equal("Ns.MyEnum.bar", csharpValue); Assert.Equal("MyEnum.bar", typescriptValue); }
/// <summary>Initializes a new instance of the <see cref="SwaggerToCSharpGeneratorBase"/> class.</summary> /// <param name="document">The document.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> protected SwaggerToCSharpGeneratorBase(SwaggerDocument document, SwaggerToCSharpGeneratorSettings settings, CSharpTypeResolver resolver) : base(document, settings.CodeGeneratorSettings, resolver) { _document = document; _settings = settings; _resolver = resolver; }
/// <summary>Initializes a new instance of the <see cref="CSharpGeneratorBase"/> class.</summary> /// <param name="document">The document.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> protected CSharpGeneratorBase(OpenApiDocument document, CSharpGeneratorBaseSettings settings, CSharpTypeResolver resolver) : base(document, settings.CodeGeneratorSettings, resolver) { _document = document; _settings = settings; _resolver = resolver; }
/// <summary>Initializes a new instance of the <see cref="PropertyModel"/> class.</summary> /// <param name="classTemplateModel">The class template model.</param> /// <param name="property">The property.</param> /// <param name="resolver">The resolver.</param> /// <param name="settings">The settings.</param> public PropertyModel(ClassTemplateModel classTemplateModel, JsonProperty property, CSharpTypeResolver resolver, CSharpGeneratorSettings settings) : base(property, classTemplateModel, new CSharpDefaultValueGenerator(resolver, settings), settings) { _property = property; _settings = settings; _resolver = resolver; }
/// <summary>Initializes a new instance of the <see cref="CSharpOperationModel" /> class.</summary> /// <param name="operation">The operation.</param> /// <param name="settings">The settings.</param> /// <param name="generator">The generator.</param> /// <param name="resolver">The resolver.</param> public CSharpOperationModel( SwaggerOperation operation, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator, CSharpTypeResolver resolver) : base(resolver.ExceptionSchema, operation, resolver, generator, settings) { _settings = settings; _operation = operation; _generator = generator; _resolver = resolver; var parameters = _operation.ActualParameters.ToList(); if (settings.GenerateOptionalParameters) { if (generator is SwaggerToCSharpControllerGenerator) { parameters = parameters.OrderBy(p => !p.IsRequired).ThenBy(p => p.Default == null).ToList(); } else { parameters = parameters.OrderBy(p => !p.IsRequired).ToList(); } } Parameters = parameters.Select(parameter => new CSharpParameterModel(parameter.Name, GetParameterVariableName(parameter, _operation.Parameters), ResolveParameterType(parameter), parameter, parameters, _settings.CodeGeneratorSettings, _generator)) .ToList(); }
public IEnumerable <CodeArtifact> GenerateArtifacts(SigSpecDocument document) { var resolver = new CSharpTypeResolver(_settings.CSharpGeneratorSettings); resolver.RegisterSchemaDefinitions(document.Definitions); var artifacts = new List <CodeArtifact>(); foreach (var hub in document.Hubs) { var hubModel = new HubModel(hub.Key, hub.Value, resolver); var template = _settings.CSharpGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "Hub", hubModel); artifacts.Add(new CodeArtifact(hubModel.Name, CodeArtifactType.Class, CodeArtifactLanguage.CSharp, CodeArtifactCategory.Client, template.Render())); } if (_settings.GenerateDtoTypes) { var generator = new CSharpGenerator(document, _settings.CSharpGeneratorSettings, resolver); var types = generator.GenerateTypes(); return(artifacts.Concat(types)); } else { var generator = new CSharpGenerator(document, _settings.CSharpGeneratorSettings, resolver); return(artifacts.Concat(generator.GenerateTypes())); } }
/// <summary> /// OpenApi描述 /// </summary> /// <param name="document">Swagger文档</param> public OpenApiDoc(OpenApiDocument document) { this.Document = document; this.Settings = new HttpApiSettings(); this.resolver = CSharpGeneratorBase .CreateResolverWithExceptionSchema(this.Settings.CSharpGeneratorSettings, document); }
/// <summary> /// Swagger描述 /// </summary> /// <param name="document">Swagger文档</param> public Swagger(SwaggerDocument document) { this.Document = document; this.Settings = new HttpApiSettings(); this.resolver = SwaggerToCSharpGeneratorBase .CreateResolverWithExceptionSchema(this.Settings.CSharpGeneratorSettings, document); }
internal PropertyModel(JsonProperty property, CSharpTypeResolver resolver, CSharpGeneratorSettings settings) : base(property, new DefaultValueGenerator(resolver)) { _property = property; _settings = settings; _resolver = resolver; PropertyName = ConversionUtilities.ConvertToUpperCamelCase(GetGeneratedPropertyName(), true); }
/// <summary>Initializes a new instance of the <see cref="CSharpRefitOperationModel" /> class.</summary> /// <param name="operation">The operation.</param> /// <param name="settings">The settings.</param> /// <param name="generator">The generator.</param> /// <param name="resolver">The resolver.</param> public CSharpRefitOperationModel(OpenApiOperation operation, CSharpRefitGeneratorSettings settings, CSharpRefitGenerator generator, CSharpTypeResolver resolver) : base(operation, settings, generator, resolver) { _operation = operation; _generator = generator; _resolver = resolver; _settings = settings; }
/// <summary>Initializes a new instance of the <see cref="SwaggerToCSharpGenerator"/> class.</summary> /// <param name="service">The service.</param> /// <exception cref="ArgumentNullException"><paramref name="service"/> is <see langword="null" />.</exception> public SwaggerToCSharpGenerator(SwaggerService service) { if (service == null) throw new ArgumentNullException("service"); _service = service; _resolver = new CSharpTypeResolver(_service.Definitions.Select(p => p.Value).ToArray()); // _types = _service.Definitions.ToDictionary(t => t.Key, t => new CSharpClassGenerator(t.Value, _resolver)); }
internal PropertyModel(JsonProperty property, CSharpTypeResolver resolver, CSharpGeneratorSettings settings) : base(property, new DefaultValueGenerator(resolver), settings) { _property = property; _settings = settings; _resolver = resolver; PropertyName = ConversionUtilities.ConvertToUpperCamelCase(GetGeneratedPropertyName(), true); }
public ClassTemplateModel(string typeName, CSharpGeneratorSettings settings, CSharpTypeResolver resolver, JsonSchema4 schema, IEnumerable<PropertyModel> properties) { _resolver = resolver; _schema = schema; _settings = settings; Class = typeName; Properties = properties; }
public ClassTemplateModel(string typeName, CSharpGeneratorSettings settings, CSharpTypeResolver resolver, JsonSchema4 schema, IEnumerable <PropertyModel> properties) { _resolver = resolver; _schema = schema; _settings = settings; Class = typeName; Properties = properties; }
public DefaultValueGeneratorTests() { var csharpSettings = new CSharpGeneratorSettings(); _csharpTypeResolver = new CSharpTypeResolver(csharpSettings); _csharpGenerator = new CSharpValueGenerator(csharpSettings); _typescriptSettings = new TypeScriptGeneratorSettings(); _typescriptGenerator = new TypeScriptValueGenerator(_typescriptSettings); }
internal PropertyModel(JsonProperty property, CSharpTypeResolver resolver, CSharpGeneratorSettings settings) : base(property) { Name = property.Name; HasDescription = !string.IsNullOrEmpty(property.Description); Description = ConversionUtilities.RemoveLineBreaks(property.Description); PropertyName = ConversionUtilities.ConvertToUpperCamelCase(property.Name); FieldName = ConversionUtilities.ConvertToLowerCamelCase(property.Name); Required = property.IsRequired && settings.RequiredPropertiesMustBeDefined ? "Required.Always" : "Required.Default"; IsStringEnum = property.ActualPropertySchema.IsEnumeration && property.ActualPropertySchema.Type == JsonObjectType.String; Type = resolver.Resolve(property.ActualPropertySchema, property.IsNullable, property.Name); }
/// <summary>Initializes a new instance of the <see cref="PropertyModel"/> class.</summary> /// <param name="classTemplateModel">The class template model.</param> /// <param name="property">The property.</param> /// <param name="typeResolver">The type resolver.</param> /// <param name="settings">The settings.</param> public PropertyModel( ClassTemplateModel classTemplateModel, JsonSchemaProperty property, CSharpTypeResolver typeResolver, CSharpGeneratorSettings settings) : base(property, classTemplateModel, typeResolver, settings) { _property = property; _settings = settings; _resolver = typeResolver; }
/// <summary>Initializes a new instance of the <see cref="ClassTemplateModel"/> class.</summary> /// <param name="typeName">Name of the type.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> /// <param name="schema">The schema.</param> public ClassTemplateModel(string typeName, CSharpGeneratorSettings settings, CSharpTypeResolver resolver, JsonSchema4 schema) { _resolver = resolver; _schema = schema; _settings = settings; Class = typeName; Properties = _schema.ActualProperties.Values .Where(p => !p.IsInheritanceDiscriminator) .Select(property => new PropertyModel(this, property, _resolver, _settings)) .ToList(); }
/// <summary>Creates a new resolver, adds the given schema definitions and registers an exception schema if available.</summary> /// <param name="settings">The settings.</param> /// <param name="document">The document </param> public static CSharpTypeResolver CreateResolverWithExceptionSchema(CSharpGeneratorSettings settings, OpenApiDocument document) { var exceptionSchema = document.Definitions.ContainsKey("Exception") ? document.Definitions["Exception"] : null; var resolver = new CSharpTypeResolver(settings, exceptionSchema); resolver.RegisterSchemaDefinitions(document.Definitions .Where(p => p.Value != exceptionSchema) .ToDictionary(p => p.Key, p => p.Value)); return(resolver); }
public ClassTemplateModel(string typeName, CSharpGeneratorSettings settings, CSharpTypeResolver resolver, JsonSchema4 schema, IEnumerable <PropertyModel> properties) { Class = typeName; Namespace = settings.Namespace; HasDescription = !(schema is JsonProperty) && !string.IsNullOrEmpty(schema.Description); Description = ConversionUtilities.RemoveLineBreaks(schema.Description); Inpc = settings.ClassStyle == CSharpClassStyle.Inpc; var hasInheritance = schema.AllOf.Count == 1; HasInheritance = hasInheritance; Inheritance = GenerateInheritanceCode(settings, resolver, schema, hasInheritance); Properties = properties; }
/// <summary>Initializes a new instance of the <see cref="PropertyModel"/> class.</summary> /// <param name="classTemplateModel">The class template model.</param> /// <param name="property">The property.</param> /// <param name="typeResolver">The type resolver.</param> /// <param name="settings">The settings.</param> public PropertyModel( ClassTemplateModel classTemplateModel, JsonSchemaProperty property, CSharpTypeResolver typeResolver, CSharpGeneratorSettings settings) : base(property, classTemplateModel, typeResolver, settings) { _property = property; _settings = settings; _resolver = typeResolver; Id = property.Id; if (property.Reference != null && string.IsNullOrEmpty(Id)) { Id = property.Reference.Id; } }
/// <summary>Initializes a new instance of the <see cref="CSharpFileTemplateModel" /> class.</summary> /// <param name="clientCode">The client code.</param> /// <param name="outputType">Type of the output.</param> /// <param name="document">The Swagger document.</param> /// <param name="settings">The settings.</param> /// <param name="generator">The client generator base.</param> /// <param name="resolver">The resolver.</param> public CSharpFileTemplateModel( string clientCode, ClientGeneratorOutputType outputType, SwaggerDocument document, SwaggerToCSharpGeneratorSettings settings, SwaggerToCSharpGeneratorBase generator, CSharpTypeResolver resolver) { _clientCode = clientCode; _outputType = outputType; _document = document; _generator = generator; _settings = settings; _resolver = resolver; Classes = GenerateDtoTypes(); }
public ClassBuilder(string nameSpace, eOutputType outputtype) { outputAs = outputtype; JsonSchema4 js = new JsonSchema4(); csgs = new CSharpGeneratorSettings(); csgs.Namespace = nameSpace; resolver = new CSharpTypeResolver(csgs); CSharpGenerator generator = new CSharpGenerator(js, csgs, resolver); schemaTextList = new List <RedoxJsonSchema>(); AllObjects.Clear(); ObjectTypeDict.Clear(); ComplexObjectDict.Clear(); ComplexObjectLists.Clear(); defs = new JObject(); }
/// <summary>Initializes a new instance of the <see cref="CSharpFileTemplateModel" /> class.</summary> /// <param name="clientTypes">The client types.</param> /// <param name="dtoTypes">The DTO types.</param> /// <param name="outputType">Type of the output.</param> /// <param name="document">The Swagger document.</param> /// <param name="settings">The settings.</param> /// <param name="generator">The client generator base.</param> /// <param name="resolver">The resolver.</param> public CSharpFileTemplateModel( IEnumerable <CodeArtifact> clientTypes, IEnumerable <CodeArtifact> dtoTypes, ClientGeneratorOutputType outputType, OpenApiDocument document, CSharpGeneratorBaseSettings settings, CSharpGeneratorBase generator, CSharpTypeResolver resolver) { _outputType = outputType; _document = document; _generator = generator; _settings = settings; _resolver = resolver; _clientCode = clientTypes.Concatenate(); Classes = dtoTypes.Concatenate(); }
/// <summary> /// WebApiClient的请求方法数据模型 /// </summary> /// <param name="operation">Swagger操作</param> /// <param name="settings">设置项</param> /// <param name="generator">代码生成器</param> /// <param name="resolver">语法解析器</param> /// <param name="settingsTaskReturnType"></param> public HttpApiMethod(OpenApiOperation operation, CSharpGeneratorBaseSettings settings, CSharpGeneratorBase generator, CSharpTypeResolver resolver, string settingsTaskReturnType) : base(operation, settings, generator, resolver) { _settingsTaskReturnType = settingsTaskReturnType; }
/// <summary>Initializes a new instance of the <see cref="CSharpControllerOperationModel" /> class.</summary> /// <param name="operation">The operation.</param> /// <param name="settings">The settings.</param> /// <param name="generator">The generator.</param> /// <param name="resolver">The resolver.</param> public CSharpControllerOperationModel(OpenApiOperation operation, CSharpControllerGeneratorSettings settings, CSharpControllerGenerator generator, CSharpTypeResolver resolver) : base(operation, settings, generator, resolver) { _settings = settings; }
private static string GenerateInheritanceCode(CSharpGeneratorSettings settings, CSharpTypeResolver resolver, JsonSchema4 schema, bool hasInheritance) { if (hasInheritance) { return(": " + resolver.Resolve(schema.AllOf.First(), false, string.Empty) + (settings.ClassStyle == CSharpClassStyle.Inpc ? ", INotifyPropertyChanged" : "")); } else { return(settings.ClassStyle == CSharpClassStyle.Inpc ? ": INotifyPropertyChanged" : ""); } }
/// <summary>Initializes a new instance of the <see cref="SwaggerToCSharpClientGenerator" /> class.</summary> /// <param name="document">The Swagger document.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> /// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" />.</exception> public SwaggerToCSharpClientGenerator(SwaggerDocument document, SwaggerToCSharpClientGeneratorSettings settings, CSharpTypeResolver resolver) : base(document, settings, resolver) { Settings = settings; _document = document ?? throw new ArgumentNullException(nameof(document)); }
/// <summary> /// WebApiClient的请求方法数据模型 /// </summary> /// <param name="operation">Swagger操作</param> /// <param name="settings">设置项</param> /// <param name="generator">代码生成器</param> /// <param name="resolver">语法解析器</param> public HttpApiMethod(OpenApiOperation operation, CSharpGeneratorBaseSettings settings, CSharpGeneratorBase generator, CSharpTypeResolver resolver) : base(operation, settings, generator, resolver) { }
/// <summary>Initializes a new instance of the <see cref="CSharpClassGenerator"/> class.</summary> /// <param name="schema">The schema.</param> /// <param name="resolver">The resolver.</param> public CSharpClassGenerator(JsonSchema4 schema, CSharpTypeResolver resolver) { _schema = schema; _resolver = resolver; }
/// <summary>Initializes a new instance of the <see cref="SwaggerToCSharpControllerGenerator" /> class.</summary> /// <param name="document">The Swagger document.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> /// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" />.</exception> public SwaggerToCSharpControllerGenerator(SwaggerDocument document, SwaggerToCSharpControllerGeneratorSettings settings, CSharpTypeResolver resolver) : base(document, settings, resolver) { if (document == null) { throw new ArgumentNullException(nameof(document)); } Settings = settings; _document = document; }
public CustomCSharpClientGenerator(OpenApiDocument document, CSharpClientGeneratorSettings settings, CSharpTypeResolver resolver) : base(document, settings, resolver) { _document = document; }
/// <summary>Initializes a new instance of the <see cref="CSharpGenerator"/> class.</summary> /// <param name="schema">The schema.</param> /// <param name="settings">The generator settings.</param> /// <param name="resolver">The resolver.</param> public CSharpGenerator(JsonSchema4 schema, CSharpGeneratorSettings settings, CSharpTypeResolver resolver) { _schema = schema; _resolver = resolver; Settings = settings; }