Skip to content

Commit 14e4980

Browse files
irvinesundaybaywet
authored andcommitted
Adds nullable to double schema conversions (#589)
* Update double schema * Update integration file tests * Update release notes
1 parent bbce0a8 commit 14e4980

19 files changed

+55
-19
lines changed

src/Microsoft.OpenApi.OData.Reader/Generator/OpenApiEdmTypeSchemaGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,8 @@ public static OpenApiSchema CreateSchema(this ODataContext context, IEdmPrimitiv
195195
case EdmPrimitiveTypeKind.Double: // double
196196
schema.OneOf = new List<OpenApiSchema>
197197
{
198-
new OpenApiSchema { Type = Constants.NumberType, Format = "double" },
199-
new OpenApiSchema { Type = Constants.StringType },
198+
new OpenApiSchema { Type = Constants.NumberType, Format = "double", Nullable = true },
199+
new OpenApiSchema { Type = Constants.StringType, Nullable = true },
200200
new OpenApiSchema
201201
{
202202
UnresolvedReference = true,

src/Microsoft.OpenApi.OData.Reader/Generator/OpenApiSchemaGenerator.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,14 @@ public static IDictionary<string, OpenApiSchema> CreateSchemas(this ODataContext
121121

122122
schemas[Constants.ReferenceNumericName] = new()
123123
{
124-
Enum = new List<IOpenApiAny>
125-
{
124+
Type = Constants.StringType,
125+
Nullable = true,
126+
Enum =
127+
[
126128
new OpenApiString("-INF"),
127129
new OpenApiString("INF"),
128130
new OpenApiString("NaN")
129-
}
131+
]
130132
};
131133

132134
if (context.Settings.EnableODataAnnotationReferencesForResponses)

test/Microsoft.OpenAPI.OData.Reader.Tests/Generator/OpenApiSchemaGeneratorTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,10 +1105,12 @@ public void NonNullableDoublePropertyWithDefaultStringWorks()
11051105
""oneOf"": [
11061106
{
11071107
""type"": ""number"",
1108-
""format"": ""double""
1108+
""format"": ""double"",
1109+
""nullable"": true
11091110
},
11101111
{
1111-
""type"": ""string""
1112+
""type"": ""string"",
1113+
""nullable"": true
11121114
},
11131115
{
11141116
""$ref"": ""#/components/schemas/ReferenceNumeric""

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Basic.OpenApi.V2.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,8 @@
11521152
"-INF",
11531153
"INF",
11541154
"NaN"
1155-
]
1155+
],
1156+
"type": "string"
11561157
}
11571158
},
11581159
"parameters": {

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Basic.OpenApi.V2.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,7 @@ definitions:
757757
- '-INF'
758758
- INF
759759
- NaN
760+
type: string
760761
parameters:
761762
top:
762763
in: query

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Basic.OpenApi.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1258,7 +1258,9 @@
12581258
"-INF",
12591259
"INF",
12601260
"NaN"
1261-
]
1261+
],
1262+
"type": "string",
1263+
"nullable": true
12621264
}
12631265
},
12641266
"responses": {

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Basic.OpenApi.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,8 @@ components:
829829
- '-INF'
830830
- INF
831831
- NaN
832+
type: string
833+
nullable: true
832834
responses:
833835
error:
834836
description: error

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Empty.OpenApi.V2.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@
103103
"-INF",
104104
"INF",
105105
"NaN"
106-
]
106+
],
107+
"type": "string"
107108
}
108109
},
109110
"parameters": {

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Empty.OpenApi.V2.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ definitions:
7171
- '-INF'
7272
- INF
7373
- NaN
74+
type: string
7475
parameters:
7576
top:
7677
in: query

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Empty.OpenApi.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,9 @@
108108
"-INF",
109109
"INF",
110110
"NaN"
111-
]
111+
],
112+
"type": "string",
113+
"nullable": true
112114
}
113115
},
114116
"responses": {

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Empty.OpenApi.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ components:
7474
- '-INF'
7575
- INF
7676
- NaN
77+
type: string
78+
nullable: true
7779
responses:
7880
error:
7981
description: error

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.V2.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6118,7 +6118,8 @@
61186118
"-INF",
61196119
"INF",
61206120
"NaN"
6121-
]
6121+
],
6122+
"type": "string"
61226123
}
61236124
},
61246125
"parameters": {

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.V2.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4436,6 +4436,7 @@ definitions:
44364436
- '-INF'
44374437
- INF
44384438
- NaN
4439+
type: string
44394440
parameters:
44404441
top:
44414442
in: query

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6835,7 +6835,9 @@
68356835
"-INF",
68366836
"INF",
68376837
"NaN"
6838-
]
6838+
],
6839+
"type": "string",
6840+
"nullable": true
68396841
}
68406842
},
68416843
"responses": {

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/Multiple.Schema.OpenApi.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4921,6 +4921,8 @@ components:
49214921
- '-INF'
49224922
- INF
49234923
- NaN
4924+
type: string
4925+
nullable: true
49244926
responses:
49254927
error:
49264928
description: error

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31561,7 +31561,8 @@
3156131561
"-INF",
3156231562
"INF",
3156331563
"NaN"
31564-
]
31564+
],
31565+
"type": "string"
3156531566
}
3156631567
},
3156731568
"parameters": {

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21393,6 +21393,7 @@ definitions:
2139321393
- '-INF'
2139421394
- INF
2139521395
- NaN
21396+
type: string
2139621397
parameters:
2139721398
top:
2139821399
in: query

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.json

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1397,10 +1397,12 @@
13971397
"oneOf": [
13981398
{
13991399
"type": "number",
1400-
"format": "double"
1400+
"format": "double",
1401+
"nullable": true
14011402
},
14021403
{
1403-
"type": "string"
1404+
"type": "string",
1405+
"nullable": true
14041406
},
14051407
{
14061408
"$ref": "#/components/schemas/ReferenceNumeric"
@@ -1416,10 +1418,12 @@
14161418
"oneOf": [
14171419
{
14181420
"type": "number",
1419-
"format": "double"
1421+
"format": "double",
1422+
"nullable": true
14201423
},
14211424
{
1422-
"type": "string"
1425+
"type": "string",
1426+
"nullable": true
14231427
},
14241428
{
14251429
"$ref": "#/components/schemas/ReferenceNumeric"
@@ -35293,7 +35297,9 @@
3529335297
"-INF",
3529435298
"INF",
3529535299
"NaN"
35296-
]
35300+
],
35301+
"type": "string",
35302+
"nullable": true
3529735303
}
3529835304
},
3529935305
"responses": {

test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -914,7 +914,9 @@ paths:
914914
oneOf:
915915
- type: number
916916
format: double
917+
nullable: true
917918
- type: string
919+
nullable: true
918920
- $ref: '#/components/schemas/ReferenceNumeric'
919921
- name: lon
920922
in: path
@@ -923,7 +925,9 @@ paths:
923925
oneOf:
924926
- type: number
925927
format: double
928+
nullable: true
926929
- type: string
930+
nullable: true
927931
- $ref: '#/components/schemas/ReferenceNumeric'
928932
responses:
929933
'200':
@@ -23713,6 +23717,8 @@ components:
2371323717
- '-INF'
2371423718
- INF
2371523719
- NaN
23720+
type: string
23721+
nullable: true
2371623722
responses:
2371723723
error:
2371823724
description: error

0 commit comments

Comments
 (0)