Package graphql.validation.rules
Class OverlappingFieldsCanBeMerged
java.lang.Object
graphql.validation.AbstractRule
graphql.validation.rules.OverlappingFieldsCanBeMerged
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
private static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Set
<Set<OverlappingFieldsCanBeMerged.FieldAndType>> private final Set
<Set<OverlappingFieldsCanBeMerged.FieldAndType>> -
Constructor Summary
ConstructorsConstructorDescriptionOverlappingFieldsCanBeMerged
(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) -
Method Summary
Modifier and TypeMethodDescriptionprivate void
collectFields
(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, SelectionSet selectionSet, GraphQLType parentType, Set<String> visitedFragmentSpreads) private void
collectFieldsForField
(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, GraphQLType parentType, Field field) private void
collectFieldsForFragmentSpread
(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, Set<String> visitedFragmentSpreads, FragmentSpread fragmentSpread) private void
collectFieldsForInlineFragment
(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, Set<String> visitedFragmentSpreads, GraphQLType parentType, InlineFragment inlineFragment) private Argument
findArgumentByName
(String name, List<Argument> arguments) private GraphQLType
private GraphQLType
getGraphQLTypeForInlineFragment
(GraphQLType parentType, InlineFragment inlineFragment) private GraphQLFieldDefinition
getVisibleFieldDefinition
(GraphQLFieldsContainer fieldsContainer, Field field) private List
<Set<OverlappingFieldsCanBeMerged.FieldAndType>> private boolean
void
leaveSelectionSet
(SelectionSet selectionSet) mergeSubSelections
(Set<OverlappingFieldsCanBeMerged.FieldAndType> sameNameFields) mkNotSameTypeError
(com.google.common.collect.ImmutableList<String> path, List<Field> fields, GraphQLType typeA, GraphQLType typeB) private String
pathToString
(com.google.common.collect.ImmutableList<String> path) requireSameNameAndArguments
(com.google.common.collect.ImmutableList<String> path, Set<OverlappingFieldsCanBeMerged.FieldAndType> fieldAndTypes) requireSameOutputTypeShape
(com.google.common.collect.ImmutableList<String> path, Set<OverlappingFieldsCanBeMerged.FieldAndType> fieldAndTypes) private boolean
sameArguments
(List<Argument> arguments1, List<Argument> arguments2) private void
sameForCommonParentsByName
(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, com.google.common.collect.ImmutableList<String> currentPath, List<OverlappingFieldsCanBeMerged.Conflict> conflictsResult) private void
sameResponseShapeByName
(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, com.google.common.collect.ImmutableList<String> currentPath, List<OverlappingFieldsCanBeMerged.Conflict> conflictsResult) private boolean
sameType
(GraphQLType type1, GraphQLType type2) Methods inherited from class graphql.validation.AbstractRule
addError, addError, addError, checkArgument, checkDirective, checkDocument, checkField, checkFragmentDefinition, checkFragmentSpread, checkInlineFragment, checkObjectValue, checkOperationDefinition, checkSelectionSet, checkTypeName, checkVariable, checkVariableDefinition, documentFinished, getErrors, getQueryPath, getValidationContext, getValidationErrorCollector, getValidationUtil, i18n, i18n, isVisitFragmentSpreads, leaveOperationDefinition, setVisitFragmentSpreads, toString
-
Field Details
-
sameResponseShapeChecked
-
sameForCommonParentsChecked
-
conflictsReported
-
-
Constructor Details
-
OverlappingFieldsCanBeMerged
public OverlappingFieldsCanBeMerged(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector)
-
-
Method Details
-
leaveSelectionSet
- Overrides:
leaveSelectionSet
in classAbstractRule
-
collectFields
private void collectFields(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, SelectionSet selectionSet, GraphQLType parentType, Set<String> visitedFragmentSpreads) -
collectFieldsForFragmentSpread
private void collectFieldsForFragmentSpread(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, Set<String> visitedFragmentSpreads, FragmentSpread fragmentSpread) -
getGraphQLTypeForFragmentDefinition
-
collectFieldsForInlineFragment
private void collectFieldsForInlineFragment(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, Set<String> visitedFragmentSpreads, GraphQLType parentType, InlineFragment inlineFragment) -
getGraphQLTypeForInlineFragment
private GraphQLType getGraphQLTypeForInlineFragment(GraphQLType parentType, InlineFragment inlineFragment) -
collectFieldsForField
private void collectFieldsForField(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, GraphQLType parentType, Field field) -
getVisibleFieldDefinition
private GraphQLFieldDefinition getVisibleFieldDefinition(GraphQLFieldsContainer fieldsContainer, Field field) -
findConflicts
private List<OverlappingFieldsCanBeMerged.Conflict> findConflicts(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap) -
sameResponseShapeByName
private void sameResponseShapeByName(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, com.google.common.collect.ImmutableList<String> currentPath, List<OverlappingFieldsCanBeMerged.Conflict> conflictsResult) -
mergeSubSelections
private Map<String,Set<OverlappingFieldsCanBeMerged.FieldAndType>> mergeSubSelections(Set<OverlappingFieldsCanBeMerged.FieldAndType> sameNameFields) -
sameForCommonParentsByName
private void sameForCommonParentsByName(Map<String, Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, com.google.common.collect.ImmutableList<String> currentPath, List<OverlappingFieldsCanBeMerged.Conflict> conflictsResult) -
groupByCommonParents
private List<Set<OverlappingFieldsCanBeMerged.FieldAndType>> groupByCommonParents(Set<OverlappingFieldsCanBeMerged.FieldAndType> fields) -
isInterfaceOrUnion
-
requireSameNameAndArguments
private OverlappingFieldsCanBeMerged.Conflict requireSameNameAndArguments(com.google.common.collect.ImmutableList<String> path, Set<OverlappingFieldsCanBeMerged.FieldAndType> fieldAndTypes) -
pathToString
-
sameArguments
-
findArgumentByName
-
requireSameOutputTypeShape
private OverlappingFieldsCanBeMerged.Conflict requireSameOutputTypeShape(com.google.common.collect.ImmutableList<String> path, Set<OverlappingFieldsCanBeMerged.FieldAndType> fieldAndTypes) -
mkNotSameTypeError
private OverlappingFieldsCanBeMerged.Conflict mkNotSameTypeError(com.google.common.collect.ImmutableList<String> path, List<Field> fields, GraphQLType typeA, GraphQLType typeB) -
sameType
-