@@ -51,6 +51,11 @@ public List<SelectedField> getFields() {
5151 return emptyList ();
5252 }
5353
54+ @ Override
55+ public List <SelectedField > getImmediateFields () {
56+ return emptyList ();
57+ }
58+
5459 @ Override
5560 public List <SelectedField > getFields (String fieldGlobPattern , String ... fieldGlobPatterns ) {
5661 return Collections .emptyList ();
@@ -79,6 +84,7 @@ public static DataFetchingFieldSelectionSet newCollector(GraphQLOutputType field
7984 private final Supplier <NormalizedField > normalizedFieldSupplier ;
8085
8186 private boolean computedValues ;
87+ private List <SelectedField > immediateFields ;
8288 private Map <String , List <SelectedField >> normalisedSelectionSetFields ;
8389 private Set <String > flattenedFieldsForGlobSearching ;
8490
@@ -159,6 +165,12 @@ public List<SelectedField> getFields() {
159165 .collect (toList ());
160166 }
161167
168+ @ Override
169+ public List <SelectedField > getImmediateFields () {
170+ computeValuesLazily ();
171+ return immediateFields ;
172+ }
173+
162174 @ Override
163175 public Map <String , List <SelectedField >> getFieldsGroupedByResultKey () {
164176 return getFields ().stream ().collect (Collectors .groupingBy (SelectedField ::getResultKey ));
@@ -179,13 +191,14 @@ private void computeValuesLazily() {
179191 }
180192 flattenedFieldsForGlobSearching = new LinkedHashSet <>();
181193 normalisedSelectionSetFields = new LinkedHashMap <>();
182- traverseSubSelectedFields (normalizedFieldSupplier .get (), "" , "" );
194+ immediateFields = new ArrayList <>();
195+ traverseSubSelectedFields (normalizedFieldSupplier .get (), "" , "" , true );
183196 computedValues = true ;
184197 }
185198 }
186199
187200
188- private void traverseSubSelectedFields (NormalizedField currentNormalisedField , String qualifiedFieldPrefix , String simpleFieldPrefix ) {
201+ private void traverseSubSelectedFields (NormalizedField currentNormalisedField , String qualifiedFieldPrefix , String simpleFieldPrefix , boolean firstLevel ) {
189202 List <NormalizedField > children = currentNormalisedField .getChildren ();
190203 for (NormalizedField normalizedSubSelectedField : children ) {
191204
@@ -200,13 +213,16 @@ private void traverseSubSelectedFields(NormalizedField currentNormalisedField, S
200213 flattenedFieldsForGlobSearching .add (globSimpleName );
201214
202215 SelectedFieldImpl selectedField = new SelectedFieldImpl (globSimpleName , globQualifiedName , normalizedSubSelectedField );
216+ if (firstLevel ) {
217+ immediateFields .add (selectedField );
218+ }
203219 normalisedSelectionSetFields .computeIfAbsent (globQualifiedName , newList ()).add (selectedField );
204220 normalisedSelectionSetFields .computeIfAbsent (globSimpleName , newList ()).add (selectedField );
205221
206222 GraphQLFieldDefinition fieldDefinition = normalizedSubSelectedField .getFieldDefinition ();
207223 GraphQLType unwrappedType = GraphQLTypeUtil .unwrapAll (fieldDefinition .getType ());
208224 if (!GraphQLTypeUtil .isLeaf (unwrappedType )) {
209- traverseSubSelectedFields (normalizedSubSelectedField , globQualifiedName , globSimpleName );
225+ traverseSubSelectedFields (normalizedSubSelectedField , globQualifiedName , globSimpleName , false );
210226 }
211227 }
212228 }
0 commit comments