@Override public void checkFragmentSpread(FragmentSpread fragmentSpread) { checkDirectivesUniqueness(fragmentSpread, fragmentSpread.getDirectives()); }
private NodePrinter<FragmentSpread> fragmentSpread() { return (out, node) -> { String name = node.getName(); String directives = directives(node.getDirectives()); out.printf("...%s%s", name, directives); }; }
@Override public TraversalControl visitFragmentSpread(FragmentSpread node, TraverserContext<Node> context) { FragmentSpread changedNode = node.transform(builder -> { List<Directive> directives = sort(node.getDirectives(), comparing(Directive::getName)); builder.directives(directives); }); return changeNode(context, changedNode); }
private Builder(FragmentSpread existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.name = existing.getName(); this.directives = existing.getDirectives(); this.ignoredChars = existing.getIgnoredChars(); }
private void collectFragmentSpread(FieldCollectorParameters parameters, List<String> visitedFragments, Map<String, MergedField> fields, FragmentSpread fragmentSpread) { if (visitedFragments.contains(fragmentSpread.getName())) { return; } if (!conditionalNodes.shouldInclude(parameters.getVariables(), fragmentSpread.getDirectives())) { return; } visitedFragments.add(fragmentSpread.getName()); FragmentDefinition fragmentDefinition = parameters.getFragmentsByName().get(fragmentSpread.getName()); if (!conditionalNodes.shouldInclude(parameters.getVariables(), fragmentDefinition.getDirectives())) { return; } if (!doesFragmentConditionMatch(parameters, fragmentDefinition)) { return; } collectFields(parameters, fragmentDefinition.getSelectionSet(), visitedFragments, fields); }
@Override public TraversalControl visitFragmentSpread(FragmentSpread fragmentSpread, TraverserContext<Node> context) { if (!conditionalNodes.shouldInclude(variables, fragmentSpread.getDirectives())) { return TraversalControl.ABORT; } FragmentDefinition fragmentDefinition = fragmentsByName.get(fragmentSpread.getName()); if (!conditionalNodes.shouldInclude(variables, fragmentDefinition.getDirectives())) { return TraversalControl.ABORT; } QueryVisitorFragmentSpreadEnvironment fragmentSpreadEnvironment = new QueryVisitorFragmentSpreadEnvironmentImpl(fragmentSpread, fragmentDefinition, context); if (context.getVar(NodeTraverser.LeaveOrEnter.class) == LEAVE) { postOrderCallback.visitFragmentSpread(fragmentSpreadEnvironment); return TraversalControl.CONTINUE; } preOrderCallback.visitFragmentSpread(fragmentSpreadEnvironment); QueryTraversalContext parentEnv = context.getVarFromParents(QueryTraversalContext.class); GraphQLCompositeType typeCondition = (GraphQLCompositeType) schema.getType(fragmentDefinition.getTypeCondition().getName()); assertNotNull(typeCondition, "Invalid type condition '%s' in fragment '%s'", fragmentDefinition.getTypeCondition().getName(), fragmentDefinition.getName()); context .setVar(QueryTraversalContext.class, new QueryTraversalContext(typeCondition, typeCondition, parentEnv.getEnvironment(), fragmentDefinition)); return TraversalControl.CONTINUE; }
@Override public void checkFragmentSpread(FragmentSpread fragmentSpread) { checkDirectivesUniqueness(fragmentSpread, fragmentSpread.getDirectives()); }
private NodePrinter<FragmentSpread> fragmentSpread() { return (out, node) -> { String name = node.getName(); String directives = directives(node.getDirectives()); out.printf("...%s%s", name, directives); }; }
@Override public void visitFragmentSpread(QueryVisitorFragmentSpreadEnvironment env) { boolean containsField = fieldsToFind.stream() .anyMatch(field -> env.getFragmentDefinition().getSelectionSet().getSelections().contains(field)); boolean isRelevant = containsField || relevantFragments.stream().anyMatch(frag -> env.getFragmentDefinition().getSelectionSet().getSelections().contains(frag)); if (isRelevant) { relevantFragments.add(env.getFragmentSpread()); fragmentDirs.addAll(env.getFragmentSpread().getDirectives()); fragmentDefDirs.addAll(env.getFragmentDefinition().getDirectives()); } }
@Override public TraversalControl visitFragmentSpread(FragmentSpread node, TraverserContext<Node> context) { FragmentSpread changedNode = node.transform(builder -> { List<Directive> directives = sort(node.getDirectives(), comparing(Directive::getName)); builder.directives(directives); }); return changeNode(context, changedNode); }
private Builder(FragmentSpread existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.name = existing.getName(); this.directives = existing.getDirectives(); this.ignoredChars = existing.getIgnoredChars(); }
private void collectFragmentSpread(FieldCollectorParameters parameters, List<String> visitedFragments, Map<String, MergedField> fields, FragmentSpread fragmentSpread) { if (visitedFragments.contains(fragmentSpread.getName())) { return; } if (!conditionalNodes.shouldInclude(parameters.getVariables(), fragmentSpread.getDirectives())) { return; } visitedFragments.add(fragmentSpread.getName()); FragmentDefinition fragmentDefinition = parameters.getFragmentsByName().get(fragmentSpread.getName()); if (!conditionalNodes.shouldInclude(parameters.getVariables(), fragmentDefinition.getDirectives())) { return; } if (!doesFragmentConditionMatch(parameters, fragmentDefinition)) { return; } collectFields(parameters, fragmentDefinition.getSelectionSet(), visitedFragments, fields); }
private void collectFragmentSpread(FieldCollectorParameters parameters, Map<String, List<ResolvedField>> fields, List<String> visitedFragments,FragmentSpread fragmentSpread, GraphQLFieldsContainer parent) { if (visitedFragments.contains(fragmentSpread.getName())) { return; } if (!conditionalNodes.shouldInclude(parameters.getVariables(), fragmentSpread.getDirectives())) { return; } visitedFragments.add(fragmentSpread.getName()); FragmentDefinition fragmentDefinition = parameters.getFragmentsByName().get(fragmentSpread.getName()); if (!conditionalNodes.shouldInclude(parameters.getVariables(), fragmentDefinition.getDirectives())) { return; } if (fragmentDefinition.getTypeCondition() != null) { parent = (GraphQLFieldsContainer) getTypeFromAST(parameters.getGraphQLSchema(), fragmentDefinition.getTypeCondition()); } collectFields(parameters, fields, fragmentDefinition.getSelectionSet().getSelections(), visitedFragments, parent); }
@Override public TraversalControl visitFragmentSpread(FragmentSpread fragmentSpread, TraverserContext<Node> context) { if (!conditionalNodes.shouldInclude(variables, fragmentSpread.getDirectives())) { return TraversalControl.ABORT; } FragmentDefinition fragmentDefinition = fragmentsByName.get(fragmentSpread.getName()); if (!conditionalNodes.shouldInclude(variables, fragmentDefinition.getDirectives())) { return TraversalControl.ABORT; } QueryVisitorFragmentSpreadEnvironment fragmentSpreadEnvironment = new QueryVisitorFragmentSpreadEnvironmentImpl(fragmentSpread, fragmentDefinition, context); if (context.getVar(NodeTraverser.LeaveOrEnter.class) == LEAVE) { postOrderCallback.visitFragmentSpread(fragmentSpreadEnvironment); return TraversalControl.CONTINUE; } preOrderCallback.visitFragmentSpread(fragmentSpreadEnvironment); QueryTraversalContext parentEnv = context.getVarFromParents(QueryTraversalContext.class); GraphQLCompositeType typeCondition = (GraphQLCompositeType) schema.getType(fragmentDefinition.getTypeCondition().getName()); assertNotNull(typeCondition, "Invalid type condition '%s' in fragment '%s'", fragmentDefinition.getTypeCondition().getName(), fragmentDefinition.getName()); context .setVar(QueryTraversalContext.class, new QueryTraversalContext(typeCondition, typeCondition, parentEnv.getEnvironment(), fragmentDefinition)); return TraversalControl.CONTINUE; }