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 classOverlappingFieldsCanBeMerged.Conflictprivate static classOverlappingFieldsCanBeMerged.FieldAndType
-
Field Summary
Fields Modifier and Type Field Description private java.util.Set<java.util.Set<Field>>conflictsReportedprivate java.util.Set<java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>>sameForCommonParentsCheckedprivate 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 voidcollectFields(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, SelectionSet selectionSet, GraphQLType parentType, java.util.Set<java.lang.String> visitedFragmentSpreads)private voidcollectFieldsForField(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, GraphQLType parentType, Field field)private voidcollectFieldsForFragmentSpread(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, java.util.Set<java.lang.String> visitedFragmentSpreads, FragmentSpread fragmentSpread)private voidcollectFieldsForInlineFragment(java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>> fieldMap, java.util.Set<java.lang.String> visitedFragmentSpreads, GraphQLType parentType, InlineFragment inlineFragment)private ArgumentfindArgumentByName(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 GraphQLTypegetGraphQLTypeForFragmentDefinition(FragmentDefinition fragment)private GraphQLTypegetGraphQLTypeForInlineFragment(GraphQLType parentType, InlineFragment inlineFragment)private GraphQLFieldDefinitiongetVisibleFieldDefinition(GraphQLFieldsContainer fieldsContainer, Field field)private java.util.List<java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>>groupByCommonParents(java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> fields)private booleanisInterfaceOrUnion(GraphQLType type)voidleaveSelectionSet(SelectionSet selectionSet)private java.util.Map<java.lang.String,java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType>>mergeSubSelections(java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> sameNameFields)private OverlappingFieldsCanBeMerged.ConflictmkNotSameTypeError(com.google.common.collect.ImmutableList<java.lang.String> path, java.util.List<Field> fields, GraphQLType typeA, GraphQLType typeB)private java.lang.StringpathToString(com.google.common.collect.ImmutableList<java.lang.String> path)private OverlappingFieldsCanBeMerged.ConflictrequireSameNameAndArguments(com.google.common.collect.ImmutableList<java.lang.String> path, java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> fieldAndTypes)private OverlappingFieldsCanBeMerged.ConflictrequireSameOutputTypeShape(com.google.common.collect.ImmutableList<java.lang.String> path, java.util.Set<OverlappingFieldsCanBeMerged.FieldAndType> fieldAndTypes)private booleansameArguments(java.util.List<Argument> arguments1, java.util.List<Argument> arguments2)private voidsameForCommonParentsByName(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 voidsameResponseShapeByName(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 booleansameType(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:
leaveSelectionSetin 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)
-
-