Package graphql.validation.rules
Class OverlappingFieldsCanBeMerged
- java.lang.Object
-
- graphql.validation.AbstractRule
-
- graphql.validation.rules.OverlappingFieldsCanBeMerged
-
public class OverlappingFieldsCanBeMerged extends AbstractRule
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
OverlappingFieldsCanBeMerged.Conflict
private static class
OverlappingFieldsCanBeMerged.FieldAndType
-
Field Summary
Fields Modifier and Type Field Description private java.util.Set<java.util.Set<Field>>
conflictsReported
private java.util.Set<java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>>
sameForCommonParentsChecked
private java.util.Set<java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>>
sameResponseShapeChecked
-
Constructor Summary
Constructors Constructor Description OverlappingFieldsCanBeMerged(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
collectFields(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, SelectionSet selectionSet, GraphQLType parentType, java.util.Set<java.lang.String> visitedFragmentSpreads)
private void
collectFieldsForField(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, GraphQLType parentType, Field field)
private void
collectFieldsForFragmentSpread(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, java.util.Set<java.lang.String> visitedFragmentSpreads, FragmentSpread fragmentSpread)
private void
collectFieldsForInlineFragment(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, java.util.Set<java.lang.String> visitedFragmentSpreads, GraphQLType parentType, InlineFragment inlineFragment)
private Argument
findArgumentByName(java.lang.String name, java.util.List<Argument> arguments)
private java.util.List<OverlappingFieldsCanBeMerged.Conflict>
findConflicts(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap)
private GraphQLType
getGraphQLTypeForFragmentDefinition(FragmentDefinition fragment)
private GraphQLType
getGraphQLTypeForInlineFragment(GraphQLType parentType, InlineFragment inlineFragment)
private GraphQLFieldDefinition
getVisibleFieldDefinition(GraphQLFieldsContainer fieldsContainer, Field field)
private java.util.List<java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>>
groupByCommonParents(java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> fields)
private boolean
isInterfaceOrUnion(GraphQLType type)
void
leaveSelectionSet(SelectionSet selectionSet)
private java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>>
mergeSubSelections(java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> sameNameFields)
private OverlappingFieldsCanBeMerged.Conflict
mkNotSameTypeError(com.google.common.collect.ImmutableList<java.lang.String> path, java.util.List<Field> fields, GraphQLType typeA, GraphQLType typeB)
private java.lang.String
pathToString(com.google.common.collect.ImmutableList<java.lang.String> path)
private OverlappingFieldsCanBeMerged.Conflict
requireSameNameAndArguments(com.google.common.collect.ImmutableList<java.lang.String> path, java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> fieldAndTypes)
private OverlappingFieldsCanBeMerged.Conflict
requireSameOutputTypeShape(com.google.common.collect.ImmutableList<java.lang.String> path, java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> fieldAndTypes)
private boolean
sameArguments(java.util.List<Argument> arguments1, java.util.List<Argument> arguments2)
private void
sameForCommonParentsByName(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, com.google.common.collect.ImmutableList<java.lang.String> currentPath, java.util.List<OverlappingFieldsCanBeMerged.Conflict> conflictsResult)
private void
sameResponseShapeByName(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, com.google.common.collect.ImmutableList<java.lang.String> currentPath, java.util.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 Detail
-
sameResponseShapeChecked
private final java.util.Set<java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> sameResponseShapeChecked
-
sameForCommonParentsChecked
private final java.util.Set<java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> sameForCommonParentsChecked
-
conflictsReported
private final java.util.Set<java.util.Set<Field>> conflictsReported
-
-
Constructor Detail
-
OverlappingFieldsCanBeMerged
public OverlappingFieldsCanBeMerged(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector)
-
-
Method Detail
-
leaveSelectionSet
public void leaveSelectionSet(SelectionSet selectionSet)
- Overrides:
leaveSelectionSet
in classAbstractRule
-
collectFields
private void collectFields(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, SelectionSet selectionSet, GraphQLType parentType, java.util.Set<java.lang.String> visitedFragmentSpreads)
-
collectFieldsForFragmentSpread
private void collectFieldsForFragmentSpread(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, java.util.Set<java.lang.String> visitedFragmentSpreads, FragmentSpread fragmentSpread)
-
getGraphQLTypeForFragmentDefinition
private GraphQLType getGraphQLTypeForFragmentDefinition(FragmentDefinition fragment)
-
collectFieldsForInlineFragment
private void collectFieldsForInlineFragment(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, java.util.Set<java.lang.String> visitedFragmentSpreads, GraphQLType parentType, InlineFragment inlineFragment)
-
getGraphQLTypeForInlineFragment
private GraphQLType getGraphQLTypeForInlineFragment(GraphQLType parentType, InlineFragment inlineFragment)
-
collectFieldsForField
private void collectFieldsForField(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, GraphQLType parentType, Field field)
-
getVisibleFieldDefinition
private GraphQLFieldDefinition getVisibleFieldDefinition(GraphQLFieldsContainer fieldsContainer, Field field)
-
findConflicts
private java.util.List<OverlappingFieldsCanBeMerged.Conflict> findConflicts(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap)
-
sameResponseShapeByName
private void sameResponseShapeByName(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, com.google.common.collect.ImmutableList<java.lang.String> currentPath, java.util.List<OverlappingFieldsCanBeMerged.Conflict> conflictsResult)
-
mergeSubSelections
private java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> mergeSubSelections(java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> sameNameFields)
-
sameForCommonParentsByName
private void sameForCommonParentsByName(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, com.google.common.collect.ImmutableList<java.lang.String> currentPath, java.util.List<OverlappingFieldsCanBeMerged.Conflict> conflictsResult)
-
groupByCommonParents
private java.util.List<java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> groupByCommonParents(java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> fields)
-
isInterfaceOrUnion
private boolean isInterfaceOrUnion(GraphQLType type)
-
requireSameNameAndArguments
private OverlappingFieldsCanBeMerged.Conflict requireSameNameAndArguments(com.google.common.collect.ImmutableList<java.lang.String> path, java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> fieldAndTypes)
-
pathToString
private java.lang.String pathToString(com.google.common.collect.ImmutableList<java.lang.String> path)
-
sameArguments
private boolean sameArguments(java.util.List<Argument> arguments1, java.util.List<Argument> arguments2)
-
findArgumentByName
private Argument findArgumentByName(java.lang.String name, java.util.List<Argument> arguments)
-
requireSameOutputTypeShape
private OverlappingFieldsCanBeMerged.Conflict requireSameOutputTypeShape(com.google.common.collect.ImmutableList<java.lang.String> path, java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> fieldAndTypes)
-
mkNotSameTypeError
private OverlappingFieldsCanBeMerged.Conflict mkNotSameTypeError(com.google.common.collect.ImmutableList<java.lang.String> path, java.util.List<Field> fields, GraphQLType typeA, GraphQLType typeB)
-
sameType
private boolean sameType(GraphQLType type1, GraphQLType type2)
-
-