private Builder(FragmentSpread existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.name = existing.getName(); this.directives = existing.getDirectives(); this.ignoredChars = existing.getIgnoredChars(); }
@Override public FragmentSpread deepCopy() { return new FragmentSpread(name, deepCopy(directives), getSourceLocation(), getComments(), getIgnoredChars()); }
@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 NodePrinter<FragmentSpread> fragmentSpread() { return (out, node) -> { String name = node.getName(); String directives = directives(node.getDirectives()); out.printf("...%s%s", name, directives); }; }
@Override public void checkFragmentSpread(FragmentSpread fragmentSpread) { usedFragments.add(fragmentSpread.getName()); }
@Override public void checkFragmentSpread(FragmentSpread fragmentSpread) { FragmentDefinition fragmentDefinition = getValidationContext().getFragment(fragmentSpread.getName()); if (fragmentDefinition == null) { String message = String.format("Undefined fragment %s", fragmentSpread.getName()); addError(ValidationErrorType.UndefinedFragment, fragmentSpread.getSourceLocation(), message); } } }
@Override public void checkFragmentSpread(FragmentSpread fragmentSpread) { checkDirectivesUniqueness(fragmentSpread, fragmentSpread.getDirectives()); }
@Override public FragmentSpread withNewChildren(NodeChildrenContainer newChildren) { return transform(builder -> builder .directives(newChildren.getChildren(CHILD_DIRECTIVES)) ); }
public FragmentSpread build() { FragmentSpread fragmentSpread = new FragmentSpread(name, directives, sourceLocation, comments, ignoredChars); return fragmentSpread; } }
protected FragmentSpread createFragmentSpread(GraphqlParser.FragmentSpreadContext ctx) { FragmentSpread.Builder fragmentSpread = FragmentSpread.newFragmentSpread().name(ctx.fragmentName().getText()); addCommonData(fragmentSpread, ctx); fragmentSpread.directives(createDirectives(ctx.directives())); return fragmentSpread.build(); }
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 List<Node> childrenOf(Node<?> node) { if (!(node instanceof FragmentSpread)) { return node.getChildren(); } FragmentSpread fragmentSpread = (FragmentSpread) node; return singletonList(fragmentsByName.get(fragmentSpread.getName())); }
@Override public void checkFragmentSpread(FragmentSpread fragmentSpread) { FragmentDefinition fragment = getValidationContext().getFragment(fragmentSpread.getName()); if (fragment == null) return; GraphQLType typeCondition = TypeFromAST.getTypeFromAST(getValidationContext().getSchema(), fragment.getTypeCondition()); GraphQLCompositeType parentType = getValidationContext().getParentType(); if (typeCondition == null || parentType == null) return; if (isValidTargetCompositeType(typeCondition) && isValidTargetCompositeType(parentType) && !doTypesOverlap(typeCondition, parentType)) { String message = String.format("Fragment %s cannot be spread here as objects of " + "type %s can never be of type %s", fragmentSpread.getName(), parentType.getName(), typeCondition.getName()); addError(ValidationErrorType.InvalidFragmentType, fragmentSpread.getSourceLocation(), message); } }
@Override public void checkFragmentSpread(FragmentSpread fragmentSpread) { checkDirectivesUniqueness(fragmentSpread, fragmentSpread.getDirectives()); }
@Override public FragmentSpread withNewChildren(NodeChildrenContainer newChildren) { return transform(builder -> builder .directives(newChildren.getChildren(CHILD_DIRECTIVES)) ); }
public FragmentSpread build() { FragmentSpread fragmentSpread = new FragmentSpread(name, directives, sourceLocation, comments, ignoredChars); return fragmentSpread; } }
protected FragmentSpread createFragmentSpread(GraphqlParser.FragmentSpreadContext ctx) { FragmentSpread.Builder fragmentSpread = FragmentSpread.newFragmentSpread().name(ctx.fragmentName().getText()); addCommonData(fragmentSpread, ctx); fragmentSpread.directives(createDirectives(ctx.directives())); return fragmentSpread.build(); }
private Builder(FragmentSpread existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.name = existing.getName(); this.directives = existing.getDirectives(); this.ignoredChars = existing.getIgnoredChars(); }
@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 FragmentSpread deepCopy() { return new FragmentSpread(name, deepCopy(directives), getSourceLocation(), getComments(), getIgnoredChars()); }