public Builder typeResolver(GraphQLUnionType parentType, TypeResolver typeResolver) { typeResolverMap.put(parentType.getName(), typeResolver); return this; }
public Builder typeResolverIfAbsent(GraphQLUnionType parentType, TypeResolver typeResolver) { typeResolverMap.putIfAbsent(parentType.getName(), typeResolver); return this; }
private static TypeResolver getTypeResolverForUnion(GraphQLUnionType parentType, Map<String, TypeResolver> typeResolverMap) { assertNotNull(parentType); TypeResolver typeResolver = typeResolverMap.get(parentType.getName()); if (typeResolver == null) { typeResolver = parentType.getTypeResolver(); } return assertNotNull(typeResolver, "There must be a type resolver for union " + parentType.getName()); }
private TypePrinter<GraphQLUnionType> unionPrinter() { return (out, type, visibility) -> { if (isIntrospectionType(type)) { return; } printComments(out, type, ""); out.format("union %s%s = ", type.getName(), directivesString(type.getDirectives())); List<GraphQLOutputType> types = type.getTypes() .stream() .sorted(Comparator.comparing(GraphQLOutputType::getName)) .collect(toList()); for (int i = 0; i < types.size(); i++) { GraphQLOutputType objectType = types.get(i); if (i > 0) { out.format(" | "); } out.format("%s", objectType.getName()); } out.format("\n\n"); }; }
@Override public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserContext<GraphQLType> context) { assertTypeUniqueness(node, result); save(node.getName(), node); return super.visitGraphQLUnionType(node, context); }
@Override public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserContext<GraphQLType> context) { TypeResolver typeResolver = node.getTypeResolver(); if (typeResolver != null) { codeRegistry.typeResolverIfAbsent(node, typeResolver); } assertTrue(codeRegistry.getTypeResolver(node) != null, "You MUST provide a type resolver for the union type '" + node.getName() + "'"); return CONTINUE; } }
public Builder(GraphQLUnionType existing) { this.name = existing.getName(); this.description = existing.getDescription(); this.typeResolver = existing.getTypeResolver(); this.definition = existing.getDefinition(); this.types.putAll(getByName(existing.getTypes(), GraphQLType::getName)); this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); }
if (!buildCtx.codeRegistry.hasTypeResolver(unionType.getName())) { TypeResolver typeResolver = getTypeResolverForUnion(buildCtx, typeDefinition); buildCtx.getCodeRegistry().typeResolver(unionType, typeResolver);
public Builder typeResolver(GraphQLUnionType parentType, TypeResolver typeResolver) { typeResolverMap.put(parentType.getName(), typeResolver); return this; }
public Builder typeResolverIfAbsent(GraphQLUnionType parentType, TypeResolver typeResolver) { typeResolverMap.putIfAbsent(parentType.getName(), typeResolver); return this; }
private static TypeResolver getTypeResolverForUnion(GraphQLUnionType parentType, Map<String, TypeResolver> typeResolverMap) { assertNotNull(parentType); TypeResolver typeResolver = typeResolverMap.get(parentType.getName()); if (typeResolver == null) { typeResolver = parentType.getTypeResolver(); } return assertNotNull(typeResolver, "There must be a type resolver for union " + parentType.getName()); }
public TypeRegistry(Collection<GraphQLType> knownTypes) { //extract known interface implementations knownTypes.stream() .filter(type -> type instanceof GraphQLObjectType && Directives.isMappedType(type)) .map(type -> (GraphQLObjectType) type) .forEach(obj -> obj.getInterfaces().forEach( inter -> registerCovariantType(inter.getName(), Directives.getMappedType(obj), obj))); //extract known union members knownTypes.stream() .filter(type -> type instanceof GraphQLUnionType) .map(type -> (GraphQLUnionType) type) .forEach(union -> union.getTypes().stream() .filter(type -> type instanceof GraphQLObjectType && Directives.isMappedType(type)) .map(type -> (GraphQLObjectType) type) .forEach(obj -> registerCovariantType(union.getName(), Directives.getMappedType(obj), obj))); }
@Override public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserContext<GraphQLType> context) { assertTypeUniqueness(node, result); save(node.getName(), node); return super.visitGraphQLUnionType(node, context); }
@Override public TraversalControl visitGraphQLUnionType(GraphQLUnionType node, TraverserContext<GraphQLType> context) { TypeResolver typeResolver = node.getTypeResolver(); if (typeResolver != null) { codeRegistry.typeResolverIfAbsent(node, typeResolver); } assertTrue(codeRegistry.getTypeResolver(node) != null, "You MUST provide a type resolver for the union type '" + node.getName() + "'"); return CONTINUE; } }
private TypePrinter<GraphQLUnionType> unionPrinter() { return (out, type, visibility) -> { if (isIntrospectionType(type)) { return; } SchemaPrinterComparatorEnvironment environment = SchemaPrinterComparatorEnvironment.newEnvironment() .parentType(GraphQLUnionType.class) .elementType(GraphQLOutputType.class) .build(); Comparator<? super GraphQLType> comparator = options.comparatorRegistry.getComparator(environment); printComments(out, type, ""); out.format("union %s%s = ", type.getName(), directivesString(GraphQLUnionType.class, type.getDirectives())); List<GraphQLOutputType> types = type.getTypes() .stream() .sorted(comparator) .collect(toList()); for (int i = 0; i < types.size(); i++) { GraphQLOutputType objectType = types.get(i); if (i > 0) { out.format(" | "); } out.format("%s", objectType.getName()); } out.format("\n\n"); }; }
public Builder(GraphQLUnionType existing) { this.name = existing.getName(); this.description = existing.getDescription(); this.typeResolver = existing.getTypeResolver(); this.definition = existing.getDefinition(); this.types.putAll(getByName(existing.getTypes(), GraphQLType::getName)); this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); }
buildContext.typeRegistry.registerCovariantType(union.getName(), possibleJavaTypes.get(i), union.getTypes().get(i));
if (!buildCtx.codeRegistry.hasTypeResolver(unionType.getName())) { TypeResolver typeResolver = getTypeResolverForUnion(buildCtx, typeDefinition); buildCtx.getCodeRegistry().typeResolver(unionType, typeResolver);