@Override public GraphQLFieldDefinition getFieldDefinition() { return newFieldDefinition() .name("globalRoles") .description("List of global security roles") .type(stdList(globalRole.getTypeRef())) .argument(a -> a.name("role") .description("Filter by role name") .type(GraphQLString) ) .dataFetcher(environment -> GraphqlUtils.getStringArgument(environment, "role") .map(name -> Collections.singletonList( rolesService.getGlobalRole(name) .orElseThrow(() -> new RoleNotFoundException(name)) )) .orElse(rolesService.getGlobalRoles())) .build(); }