1
- // Copyright (c) Microsoft Corporation. All rights reserved.
1
+ // Copyright (c) Microsoft Corporation. All rights reserved.
2
2
// Licensed under the MIT license.
3
3
4
4
using System . Collections . Generic ;
@@ -29,10 +29,11 @@ private static void ParseMap<T>(
29
29
return ;
30
30
}
31
31
32
- foreach ( var propertyNode in mapNode )
32
+ var allFields = fixedFieldMap . Keys . Union ( mapNode . Select ( static x => x . Name ) ) ;
33
+ foreach ( var propertyNode in allFields )
33
34
{
34
- propertyNode . ParseField ( domainObject , fixedFieldMap , patternFieldMap ) ;
35
- requiredFields ? . Remove ( propertyNode . Name ) ;
35
+ mapNode [ propertyNode ] ? . ParseField ( domainObject , fixedFieldMap , patternFieldMap ) ;
36
+ requiredFields ? . Remove ( propertyNode ) ;
36
37
}
37
38
}
38
39
@@ -77,16 +78,18 @@ private static void ProcessAnyListFields<T>(
77
78
var newProperty = new List < IOpenApiAny > ( ) ;
78
79
79
80
mapNode . Context . StartObject ( anyListFieldName ) ;
80
-
81
- var list = anyListFieldMap [ anyListFieldName ] . PropertyGetter ( domainObject ) ;
82
- if ( list != null )
81
+ if ( anyListFieldMap . TryGetValue ( anyListFieldName , out var fieldName ) )
83
82
{
84
- foreach ( var propertyElement in list )
83
+ var list = fieldName . PropertyGetter ( domainObject ) ;
84
+ if ( list != null )
85
85
{
86
- newProperty . Add (
87
- OpenApiAnyConverter . GetSpecificOpenApiAny (
88
- propertyElement ,
89
- anyListFieldMap [ anyListFieldName ] . SchemaGetter ( domainObject ) ) ) ;
86
+ foreach ( var propertyElement in list )
87
+ {
88
+ newProperty . Add (
89
+ OpenApiAnyConverter . GetSpecificOpenApiAny (
90
+ propertyElement ,
91
+ anyListFieldMap [ anyListFieldName ] . SchemaGetter ( domainObject ) ) ) ;
92
+ }
90
93
}
91
94
}
92
95
@@ -104,47 +107,6 @@ private static void ProcessAnyListFields<T>(
104
107
}
105
108
}
106
109
107
- private static void ProcessAnyMapFields < T , U > (
108
- MapNode mapNode ,
109
- T domainObject ,
110
- AnyMapFieldMap < T , U > anyMapFieldMap )
111
- {
112
- foreach ( var anyMapFieldName in anyMapFieldMap . Keys . ToList ( ) )
113
- {
114
- try
115
- {
116
- var newProperty = new List < IOpenApiAny > ( ) ;
117
-
118
- mapNode . Context . StartObject ( anyMapFieldName ) ;
119
-
120
- foreach ( var propertyMapElement in anyMapFieldMap [ anyMapFieldName ] . PropertyMapGetter ( domainObject ) )
121
- {
122
- if ( propertyMapElement . Value != null )
123
- {
124
- mapNode . Context . StartObject ( propertyMapElement . Key ) ;
125
-
126
- var any = anyMapFieldMap [ anyMapFieldName ] . PropertyGetter ( propertyMapElement . Value ) ;
127
-
128
- var newAny = OpenApiAnyConverter . GetSpecificOpenApiAny (
129
- any ,
130
- anyMapFieldMap [ anyMapFieldName ] . SchemaGetter ( domainObject ) ) ;
131
-
132
- anyMapFieldMap [ anyMapFieldName ] . PropertySetter ( propertyMapElement . Value , newAny ) ;
133
- }
134
- }
135
- }
136
- catch ( OpenApiException exception )
137
- {
138
- exception . Pointer = mapNode . Context . GetLocation ( ) ;
139
- mapNode . Context . Diagnostic . Errors . Add ( new OpenApiError ( exception ) ) ;
140
- }
141
- finally
142
- {
143
- mapNode . Context . EndObject ( ) ;
144
- }
145
- }
146
- }
147
-
148
110
public static IOpenApiAny LoadAny ( ParseNode node )
149
111
{
150
112
return OpenApiAnyConverter . GetSpecificOpenApiAny ( node . CreateAny ( ) ) ;
0 commit comments