Skip to content

Commit 141af08

Browse files
authored
Merge pull request #4056 from graphql-java/mergedfield-single-field-support
MergedField single field support
2 parents a9eb7f2 + d98674b commit 141af08

File tree

7 files changed

+449
-63
lines changed

7 files changed

+449
-63
lines changed

src/main/java/graphql/execution/ExecutionStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public static String mkNameForPath(Field currentField) {
160160

161161
@Internal
162162
public static String mkNameForPath(MergedField mergedField) {
163-
return mkNameForPath(mergedField.getFields());
163+
return mergedField.getResultKey();
164164
}
165165

166166
@Internal

src/main/java/graphql/execution/FieldCollector.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,11 @@ public MergedSelectionSet collectFields(FieldCollectorParameters parameters, Mer
4141
public MergedSelectionSet collectFields(FieldCollectorParameters parameters, MergedField mergedField, boolean incrementalSupport) {
4242
Map<String, MergedField> subFields = new LinkedHashMap<>();
4343
Set<String> visitedFragments = new LinkedHashSet<>();
44-
for (Field field : mergedField.getFields()) {
45-
if (field.getSelectionSet() == null) {
46-
continue;
44+
mergedField.forEach(field -> {
45+
if (field.getSelectionSet() != null) {
46+
this.collectFields(parameters, field.getSelectionSet(), visitedFragments, subFields, null, incrementalSupport);
4747
}
48-
this.collectFields(parameters, field.getSelectionSet(), visitedFragments, subFields, null, incrementalSupport);
49-
}
48+
});
5049
return newMergedSelectionSet().subFields(subFields).build();
5150
}
5251

@@ -142,11 +141,8 @@ private void collectField(FieldCollectorParameters parameters, Map<String, Merge
142141
}
143142
String name = field.getResultKey();
144143
if (fields.containsKey(name)) {
145-
MergedField curFields = fields.get(name);
146-
fields.put(name, curFields.transform(builder -> builder
147-
.addField(field)
148-
.addDeferredExecution(deferredExecution))
149-
);
144+
MergedField currentMergedField = fields.get(name);
145+
fields.put(name, currentMergedField.newMergedFieldWith(field,deferredExecution));
150146
} else {
151147
fields.put(name, MergedField.newSingletonMergedField(field, deferredExecution));
152148
}

0 commit comments

Comments
 (0)