Skip to content

Commit 31804cd

Browse files
committed
a bit faster maybe
1 parent c2d1a3b commit 31804cd

File tree

1 file changed

+11
-31
lines changed

1 file changed

+11
-31
lines changed

src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ private void captureMergedField(ExecutableNormalizedField enf, MergedField merge
506506
}
507507

508508
private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executableNormalizedField,
509-
@Nullable ImmutableList<FieldAndAstParent> fieldAndAstParents,
509+
@Nullable ImmutableList<CollectedField> fieldAndAstParents,
510510
int curLevel) {
511511
if (this.maxDepthSeen < curLevel) {
512512
this.maxDepthSeen = curLevel;
@@ -528,14 +528,14 @@ private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executable
528528
return;
529529
}
530530
collectedFields = new ArrayList<>();
531-
for (FieldAndAstParent fieldAndAstParent : fieldAndAstParents) {
531+
for (CollectedField fieldAndAstParent : fieldAndAstParents) {
532532
if (fieldAndAstParent.field.getSelectionSet() == null) {
533533
continue;
534534
}
535535
// the AST parent comes from the previous collect from selection set call
536536
// and is the type to which the field belongs (the container type of the field) and output type
537537
// of the field needs to be determined based on the field name
538-
GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astParentType, fieldAndAstParent.field.getName());
538+
GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astTypeCondition, fieldAndAstParent.field.getName());
539539
GraphQLUnmodifiedType selectionSetType = unwrapAll(fieldDefinition.getType());
540540
this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(),
541541
collectedFields,
@@ -548,11 +548,11 @@ private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executable
548548

549549
Map<String, List<CollectedField>> fieldsByName = fieldsByResultKey(collectedFields);
550550
ImmutableList.Builder<ExecutableNormalizedField> resultNFs = ImmutableList.builder();
551-
ImmutableListMultimap.Builder<ExecutableNormalizedField, FieldAndAstParent> normalizedFieldToAstFields = ImmutableListMultimap.builder();
551+
ImmutableListMultimap.Builder<ExecutableNormalizedField, CollectedField> normalizedFieldToAstFields = ImmutableListMultimap.builder();
552552
createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, curLevel + 1, executableNormalizedField);
553553

554554
ImmutableList<ExecutableNormalizedField> nextLevelChildren = resultNFs.build();
555-
ImmutableListMultimap<ExecutableNormalizedField, FieldAndAstParent> nextLevelNormalizedFieldToAstFields = normalizedFieldToAstFields.build();
555+
ImmutableListMultimap<ExecutableNormalizedField, CollectedField> nextLevelNormalizedFieldToAstFields = normalizedFieldToAstFields.build();
556556

557557
for (ExecutableNormalizedField childENF : nextLevelChildren) {
558558
if (executableNormalizedField == null) {
@@ -561,7 +561,7 @@ private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executable
561561
} else {
562562
executableNormalizedField.addChild(childENF);
563563
}
564-
ImmutableList<FieldAndAstParent> childFieldAndAstParents = nextLevelNormalizedFieldToAstFields.get(childENF);
564+
ImmutableList<CollectedField> childFieldAndAstParents = nextLevelNormalizedFieldToAstFields.get(childENF);
565565

566566
MergedField mergedField = newMergedField(childFieldAndAstParents);
567567
captureMergedField(childENF, mergedField);
@@ -582,13 +582,13 @@ private void checkMaxDepthExceeded(int depthSeen) {
582582
}
583583
}
584584

585-
private static MergedField newMergedField(ImmutableList<FieldAndAstParent> fieldAndAstParents) {
585+
private static MergedField newMergedField(ImmutableList<CollectedField> fieldAndAstParents) {
586586
return MergedField.newMergedField(map(fieldAndAstParents, fieldAndAstParent -> fieldAndAstParent.field)).build();
587587
}
588588

589589
private void updateFieldToNFMap(ExecutableNormalizedField executableNormalizedField,
590-
ImmutableList<FieldAndAstParent> mergedField) {
591-
for (FieldAndAstParent astField : mergedField) {
590+
ImmutableList<CollectedField> mergedField) {
591+
for (CollectedField astField : mergedField) {
592592
fieldToNormalizedField.put(astField.field, executableNormalizedField);
593593
}
594594
}
@@ -612,7 +612,7 @@ private Map<String, List<CollectedField>> fieldsByResultKey(List<CollectedField>
612612

613613
private void createNFs(ImmutableList.Builder<ExecutableNormalizedField> nfListBuilder,
614614
Map<String, List<CollectedField>> fieldsByName,
615-
ImmutableListMultimap.Builder<ExecutableNormalizedField, FieldAndAstParent> normalizedFieldToAstFields,
615+
ImmutableListMultimap.Builder<ExecutableNormalizedField, CollectedField> normalizedFieldToAstFields,
616616
int level,
617617
ExecutableNormalizedField parent) {
618618
for (String resultKey : fieldsByName.keySet()) {
@@ -624,7 +624,7 @@ private void createNFs(ImmutableList.Builder<ExecutableNormalizedField> nfListBu
624624
continue;
625625
}
626626
for (CollectedField collectedField : fieldGroup.fields) {
627-
normalizedFieldToAstFields.put(nf, new FieldAndAstParent(collectedField.field, collectedField.astTypeCondition));
627+
normalizedFieldToAstFields.put(nf, collectedField);
628628
}
629629
nfListBuilder.add(nf);
630630

@@ -924,26 +924,6 @@ public CollectedField(Field field, Set<GraphQLObjectType> objectTypes, GraphQLCo
924924
}
925925
}
926926

927-
public static class CollectNFResult {
928-
private final Collection<ExecutableNormalizedField> children;
929-
private final ImmutableListMultimap<ExecutableNormalizedField, FieldAndAstParent> normalizedFieldToAstFields;
930-
931-
public CollectNFResult(Collection<ExecutableNormalizedField> children, ImmutableListMultimap<ExecutableNormalizedField, FieldAndAstParent> normalizedFieldToAstFields) {
932-
this.children = children;
933-
this.normalizedFieldToAstFields = normalizedFieldToAstFields;
934-
}
935-
}
936-
937-
private static class FieldAndAstParent {
938-
final Field field;
939-
final GraphQLCompositeType astParentType;
940-
941-
private FieldAndAstParent(Field field, GraphQLCompositeType astParentType) {
942-
this.field = field;
943-
this.astParentType = astParentType;
944-
}
945-
}
946-
947927
private static class CollectedFieldGroup {
948928
Set<GraphQLObjectType> objectTypes;
949929
Set<CollectedField> fields;

0 commit comments

Comments
 (0)