Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[C#] use nullable class in petstore openapi spec #20585

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ namespace {{modelPackage}}
public {{{datatypeWithEnum}}}{{#isNullable}}?{{/isNullable}} {{name}} { get; set; }{{#defaultValue}} = {{{.}}};{{/defaultValue}}
{{/isEnum}}
{{^isEnum}}
public {{{dataType}}}{{#nullableReferenceTypes}}{{^isContainer}}{{^required}}{{^isNullable}}?{{/isNullable}}{{/required}}{{/isContainer}}{{/nullableReferenceTypes}} {{name}} { get; set; }{{#defaultValue}} = {{{.}}};{{/defaultValue}}
public {{{dataType}}}{{#nullableReferenceTypes}}{{^isContainer}}{{^required}}{{^isNullable}}?{{/isNullable}}{{/required}}{{/isContainer}}{{#isContainer}}{{#isNullable}}{{^required}}?{{/required}}{{/isNullable}}{{/isContainer}}{{/nullableReferenceTypes}} {{name}} { get; set; }{{#defaultValue}} = {{{.}}};{{/defaultValue}}
{{/isEnum}}
{{^-last}}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -607,7 +607,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/TestNullable'
$ref: '#/components/schemas/NullableClass'
externalDocs:
description: Find out more about Swagger
url: 'http://swagger.io'
Expand Down Expand Up @@ -651,14 +651,64 @@ components:
enum:
- A
- B
TestNullable:
NullableClass:
type: object
properties:
name:
integer_prop:
type: integer
nullable: true
number_prop:
type: number
nullable: true
boolean_prop:
type: boolean
nullable: true
string_prop:
type: string
nullableName:
nullable: true
date_prop:
type: string
format: date
nullable: true
datetime_prop:
type: string
format: date-time
nullable: true
array_nullable_prop:
type: array
nullable: true
items:
type: object
array_and_items_nullable_prop:
type: array
nullable: true
items:
type: object
nullable: true
array_items_nullable:
type: array
items:
type: object
nullable: true
object_nullable_prop:
type: object
nullable: true
additionalProperties:
type: object
object_and_items_nullable_prop:
type: object
nullable: true
additionalProperties:
type: object
nullable: true
object_items_nullable:
type: object
additionalProperties:
type: object
nullable: true
additionalProperties:
type: object
nullable: true
Order:
title: Pet Order
description: An order for a pets from the pet store
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ src/Org.OpenAPITools/Models/ApiResponse.cs
src/Org.OpenAPITools/Models/Cat.cs
src/Org.OpenAPITools/Models/Category.cs
src/Org.OpenAPITools/Models/Dog.cs
src/Org.OpenAPITools/Models/NullableClass.cs
src/Org.OpenAPITools/Models/Order.cs
src/Org.OpenAPITools/Models/Pet.cs
src/Org.OpenAPITools/Models/Tag.cs
src/Org.OpenAPITools/Models/TestEnum.cs
src/Org.OpenAPITools/Models/TestNullable.cs
src/Org.OpenAPITools/Models/User.cs
src/Org.OpenAPITools/OpenApi/TypeExtensions.cs
src/Org.OpenAPITools/Program.cs
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,18 +36,18 @@ public class FakeApiController : ControllerBase
[Route("/v2/fake/nullable_example_test")]
[ValidateModelState]
[SwaggerOperation("FakeNullableExampleTest")]
[SwaggerResponse(statusCode: 200, type: typeof(TestNullable), description: "Successful operation")]
[SwaggerResponse(statusCode: 200, type: typeof(NullableClass), description: "Successful operation")]
public virtual IActionResult FakeNullableExampleTest()
{

//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(200, default(TestNullable));
// return StatusCode(200, default(NullableClass));
string exampleJson = null;
exampleJson = "{\n \"nullableName\" : \"nullableName\",\n \"name\" : \"name\"\n}";
exampleJson = "{\n \"number_prop\" : 6.027456183070403,\n \"datetime_prop\" : \"2000-01-23T04:56:07.000+00:00\",\n \"object_nullable_prop\" : {\n \"key\" : \"{}\"\n },\n \"boolean_prop\" : true,\n \"object_and_items_nullable_prop\" : {\n \"key\" : \"{}\"\n },\n \"string_prop\" : \"string_prop\",\n \"array_nullable_prop\" : [ \"{}\", \"{}\" ],\n \"integer_prop\" : 0,\n \"array_and_items_nullable_prop\" : [ \"{}\", \"{}\" ],\n \"object_items_nullable\" : {\n \"key\" : \"{}\"\n },\n \"date_prop\" : \"2000-01-23\",\n \"array_items_nullable\" : [ \"{}\", \"{}\" ]\n}";

var example = exampleJson != null
? JsonConvert.DeserializeObject<TestNullable>(exampleJson)
: default(TestNullable);
? JsonConvert.DeserializeObject<NullableClass>(exampleJson)
: default(NullableClass);
//TODO: Change the data returned
return new ObjectResult(example);
}
Expand Down
Loading