@Override public Object get(DataFetchingEnvironment environment) { UserContext userCtx = environment.getContext(); Long businessObjId = environment.getArgument("businessObjId"); return invokeBusinessLayerMethod(userCtx, businessObjId); } };
@Override public List<ProductDTO> get(DataFetchingEnvironment environment) { DatabaseSecurityCtx ctx = environment.getContext(); List<ProductDTO> products; String match = environment.getArgument("match"); if (match != null) { products = fetchProductsFromDatabaseWithMatching(ctx, match); } else { products = fetchAllProductsFromDatabase(ctx); } return products; } };
@Override public Object get(DataFetchingEnvironment dataFetchingEnvironment) throws Exception { Map<String, Object> contextMap = dataFetchingEnvironment.getContext(); AuthorisationCtx authContext = (AuthorisationCtx) contextMap.get("authContext"); if (authContext.hasRole(targetAuthRole)) { return originalDataFetcher.get(dataFetchingEnvironment); } else { return null; } } };
@SchemaModification(addField = "books", onType = Shelf.class) ListenableFuture<List<Book>> shelfToBooks(Shelf shelf, DataFetchingEnvironment environment) { return FutureConverter.toListenableFuture( environment .<DataLoaderRegistry>getContext() .<String, Book>getDataLoader("books") .loadMany(shelf.getBookIdsList())); } }
@Query("getBook") @RelayNode ListenableFuture<Book> getBook( GetBookRequest request, DataFetchingEnvironment dataFetchingEnvironment) { return FutureConverter.toListenableFuture( dataFetchingEnvironment .<DataLoaderRegistry>getContext() .<String, Book>getDataLoader("books") .load(request.getId())); }
/** * Data fetcher for the currently active user. * * @param env * @return */ public Object userMeFetcher(DataFetchingEnvironment env) { GraphQLContext gc = env.getContext(); User requestUser = gc.getUser(); // No need to check for permissions. The user should always be able to read himself return requestUser; }
public static void checkPermission(DataFetchingEnvironment env, DataSetMetaData dataSetMetaData, Permission permission) throws RuntimeException { ContextData contextData = env.getContext(); UserPermissionCheck userPermissionCheck = contextData.getUserPermissionCheck(); if (!userPermissionCheck.hasPermission(dataSetMetaData, permission)) { throw new RuntimeException("You do not have permission '" + permission + "' for this data set."); } }
/** * Data fetcher for the current project. * * @param env * @return */ public Object projectFetcher(DataFetchingEnvironment env) { GraphQLContext gc = env.getContext(); Project project = gc.getProject(); return gc.requiresPerm(project, READ_PERM); }
protected GraphQLFieldDefinition newPagingField(String name, String description, Function<GraphQLContext, RootVertex<?>> rootProvider, String referenceTypeName) { return newPagingFieldWithFetcher(name, description, (env) -> { GraphQLContext gc = env.getContext(); return rootProvider.apply(gc).findAll(gc, getPagingInfo(env)); }, referenceTypeName); }
protected MeshVertex handleBranchSchema(DataFetchingEnvironment env) { GraphQLContext gc = env.getContext(); Branch branch = env.getSource(); Stream<? extends SchemaContainerVersion> schemas = StreamSupport.stream(branch.findActiveSchemaVersions().spliterator(), false); // We need to handle permissions dedicately since we check the schema container perm and not the schema container version perm. return handleUuidNameArgsNoPerm(env, uuid -> schemas.filter(schema -> { SchemaContainer container = schema.getSchemaContainer(); return container.getUuid().equals(uuid) && gc.getUser().hasPermission(container, READ_PERM); }).findFirst().get(), name -> schemas.filter(schema -> schema.getName().equals(name) && gc.getUser().hasPermission(schema .getSchemaContainer(), READ_PERM)).findFirst().get()); }
public Object breadcrumbFetcher(DataFetchingEnvironment env) { GraphQLContext gc = env.getContext(); NodeContent content = env.getSource(); if (content == null) { return null; } return content.getNode().getBreadcrumbNodes(gc).stream().map(node -> { List<String> languageTags = getLanguageArgument(env, content); return new NodeContent(node, node.findVersion(gc, languageTags), languageTags); }).collect(Collectors.toList()); }
protected Page<SchemaContainerVersion> handleBranchSchemas(DataFetchingEnvironment env) { GraphQLContext gc = env.getContext(); Branch branch = env.getSource(); Stream<? extends SchemaContainerVersion> schemas = StreamSupport.stream(branch.findActiveSchemaVersions().spliterator(), false).filter( schema -> gc.getUser().hasPermission(schema.getSchemaContainer(), READ_PERM)); return new DynamicStreamPageImpl<>(schemas, getPagingInfo(env)); }
public ResolutionEnvironment(DataFetchingEnvironment env, ValueMapper valueMapper, GlobalEnvironment globalEnvironment, ConverterRegistry converterRegistry) { this.context = env.getSource(); this.rootContext = env.getContext(); this.valueMapper = valueMapper; this.globalEnvironment = globalEnvironment; this.converterRegistry = converterRegistry; this.fields = env.getFields(); this.fieldType = env.getFieldType(); this.parentType = env.getParentType(); this.graphQLSchema = env.getGraphQLSchema(); this.dataFetchingEnvironment = env; this.arguments = new HashMap<>(); }
public DataFetcher<List<RDFNode>> instancesOfTypeFetcher() { return environment -> { Field field = (Field) environment.getFields().toArray()[0]; String predicate = (field.getAlias() == null) ? field.getName() : field.getAlias(); ModelContainer client = environment.getContext(); return client.getValuesOfObjectProperty( HGQLVocabulary.HGQL_QUERY_URI, HGQLVocabulary.HGQL_QUERY_NAMESPACE + predicate ); }; }
public Object editorFetcher(DataFetchingEnvironment env) { GraphQLContext gc = env.getContext(); NodeContent content = env.getSource(); if (content == null) { return null; } User user = content.getContainer().getEditor(); return gc.requiresPerm(user, READ_PERM); }
public FetchParams(DataFetchingEnvironment environment, HGQLSchema hgqlschema) { subjectResource = environment.getSource(); String predicate = ((Field) environment.getFields().toArray()[0]).getName(); predicateURI = hgqlschema.getFields().get(predicate).getId(); client = environment.getContext(); if (!environment.getParentType().getName().equals("Query")) { String targetName = hgqlschema.getTypes().get(environment.getParentType().getName()).getField(predicate).getTargetName(); if (hgqlschema.getTypes().containsKey(targetName) && hgqlschema.getTypes().get(targetName).getId()!=null) { targetURI=hgqlschema.getTypes().get(targetName).getId(); } } }
public FetchParams(DataFetchingEnvironment environment, HGQLSchema hgqlschema) { subjectResource = environment.getSource(); String predicate = ((Field) environment.getFields().toArray()[0]).getName(); predicateURI = hgqlschema.getFields().get(predicate).getId(); client = environment.getContext(); if (!environment.getParentType().getName().equals("Query")) { String targetName = hgqlschema.getTypes().get(environment.getParentType().getName()).getField(predicate).getTargetName(); if (hgqlschema.getTypes().containsKey(targetName) && hgqlschema.getTypes().get(targetName).getId()!=null) { targetURI=hgqlschema.getTypes().get(targetName).getId(); } } }
protected DynamicStreamPageImpl<NodeContent> applyNodeFilter(DataFetchingEnvironment env, Stream<? extends NodeContent> stream) { Map<String, ?> filterArgument = env.getArgument("filter"); PagingParameters pagingInfo = getPagingInfo(env); GraphQLContext gc = env.getContext(); if (filterArgument != null) { return new DynamicStreamPageImpl<>(stream, pagingInfo, NodeFilter.filter(gc).createPredicate(filterArgument)); } else { return new DynamicStreamPageImpl<>(stream, pagingInfo); } } }
@Override public Object get(DataFetchingEnvironment environment) { // Exclude arguments DataFetchingEnvironment env = new DataFetchingEnvironmentImpl(environment.getSource(), new HashMap<>(), environment.getContext(), environment.getFields(), environment.getFieldType(), environment.getParentType(), environment.getGraphQLSchema(), environment.getFragmentsByName(), environment.getExecutionId(), environment.getSelectionSet()); Connection conn = constructNewInstance(constructor, actualDataFetcher.get(env)); return conn.get(environment); } }
public GraphQLFieldDefinition createPluginPageField() { return newFieldDefinition().name("plugins").description("Load plugins").argument(createPagingArgs()) .type(new GraphQLTypeReference(PLUGIN_PAGE_TYPE_NAME)).dataFetcher(env -> { GraphQLContext gc = env.getContext(); if (!gc.getUser().hasAdminRole()) { return new PermissionException("plugins", "Missing admin permission"); } Map<String, Plugin> deployments = manager.getPlugins(); Page<Plugin> page = new DynamicStreamPageImpl<>(deployments.values().stream(), getPagingInfo(env)); return page; }).build(); }