public GraphQLObjectType createType() { Builder tagFamilyType = newObject().name(TAG_FAMILY_TYPE_NAME); interfaceTypeProvider.addCommonFields(tagFamilyType); // .name tagFamilyType.field(newFieldDefinition().name("name").type(GraphQLString).dataFetcher((env) -> { TagFamily tagFamily = env.getSource(); return tagFamily.getName(); })); // .tag tagFamilyType.field( newFieldDefinition().name("tag").description("Load a specific tag by name or uuid.").argument(createUuidArg("Uuid of the tag.")) .argument(createNameArg("Name of the tag.")).type(new GraphQLTypeReference(TAG_TYPE_NAME)).dataFetcher(env -> { TagFamily tagFamily = env.getSource(); return handleUuidNameArgs(env, tagFamily); }).build()); // .tags tagFamilyType.field(newPagingFieldWithFetcher("tags", "Tags which are assigned to the tagfamily.", (env) -> { GraphQLContext gc = env.getContext(); TagFamily tagFamily = env.getSource(); PagingParameters pagingInfo = getPagingInfo(env); return tagFamily.getTags(gc.getUser(), pagingInfo); }, TAG_PAGE_TYPE_NAME)); return tagFamilyType.build(); }