@Override public Object get(DataFetchingEnvironment env) { String userId = env.getArgument("userId"); DataFetchingFieldSelectionSet selectionSet = env.getSelectionSet(); if (selectionSet.contains("user/*")) { return getUserAndTheirFriends(userId); } else { return getUser(userId); } } };
void getFields() { DataFetchingFieldSelectionSet selectionSet = env.getSelectionSet(); List<SelectedField> nodeFields = selectionSet.getFields("edges/nodes/*"); nodeFields.forEach(selectedField -> { System.out.println(selectedField.getName()); System.out.println(selectedField.getFieldDefinition().getType()); DataFetchingFieldSelectionSet innerSelectionSet = selectedField.getSelectionSet(); // .. this forms a tree of selection and you can get very fancy with it }); }
@Override public DataFetchingFieldSelectionSet getSelectionSet() { return delegate.getSelectionSet(); }
@Override public Object getArgumentValue(ArgumentInjectorParams params) { if (GenericTypeReflector.isSuperType(setOfStrings, params.getType().getType())) { return params.getResolutionEnvironment().dataFetchingEnvironment.getSelectionSet().get().keySet(); } Class raw = GenericTypeReflector.erase(params.getType().getType()); if (Field.class.equals(raw)) { return params.getResolutionEnvironment().fields.get(0); } if (GenericTypeReflector.isSuperType(listOfFields, params.getType().getType())) { return params.getResolutionEnvironment().fields; } if (ValueMapper.class.isAssignableFrom(raw)) { return params.getResolutionEnvironment().valueMapper; } if (ResolutionEnvironment.class.isAssignableFrom(raw)) { return params.getResolutionEnvironment(); } throw new IllegalArgumentException("Argument of type " + raw.getName() + " can not be injected via @" + GraphQLEnvironment.class.getSimpleName()); }
public List<Object> getBatched(DataFetchingEnvironment env) { List sources = (List)env.getSource(); if ( isBatched ) { Object result = fetcher.get(env); if ( !(result instanceof List) || ((List)result).size() != sources.size() ) { throw new IllegalStateException("Batched fetcher "+fetcher+" expected to return list of "+sources.size()); } return (List<Object>)result; } List<Object> result = new ArrayList<>(); for ( Object source : sources ) { DataFetchingEnvironment envCopy = new DataFetchingEnvironmentImpl( source, env.getArguments(), env.getContext(), env.getFields(), env.getFieldType(), env.getParentType(), env.getGraphQLSchema(), env.getFragmentsByName(), env.getExecutionId(), env.getSelectionSet()); result.add(fetcher.get(envCopy)); } return result; }
List<SelectedField> selectedFields = graphEnv.getSelectionSet().getFields(); if (selectedFields != null) { for (SelectedField sf: selectedFields) {
public List<Object> getBatched(DataFetchingEnvironment env) { List sources = (List)env.getSource(); if ( isBatched ) { Object result = fetcher.get(env); if ( !(result instanceof List) || ((List)result).size() != sources.size() ) { throw new IllegalStateException("Batched fetcher "+fetcher+" expected to return list of "+sources.size()); } return (List<Object>)result; } List<Object> result = new ArrayList<>(); for ( Object source : sources ) { DataFetchingEnvironment envCopy = new DataFetchingEnvironmentImpl( source, env.getArguments(), env.getContext(), env.getFields(), env.getFieldType(), env.getParentType(), env.getGraphQLSchema(), env.getFragmentsByName(), env.getExecutionId(), env.getSelectionSet()); result.add(fetcher.get(envCopy)); } return result; }
public Object getUnbatched(DataFetchingEnvironment env) { if ( ! isBatched ) return fetcher.get(env); DataFetchingEnvironment envCopy = new DataFetchingEnvironmentImpl( Collections.singletonList(env.getSource()), env.getArguments(), env.getContext(), env.getFields(), env.getFieldType(), env.getParentType(), env.getGraphQLSchema(), env.getFragmentsByName(), env.getExecutionId(), env.getSelectionSet()); Object result = fetcher.get(envCopy); if ( !(result instanceof List) || ((List)result).size() != 1 ) { throw new IllegalStateException("Batched fetcher "+fetcher+" expected to return list of 1"); } return ((List)result).get(0); }
public Object getUnbatched(DataFetchingEnvironment env) { if ( ! isBatched ) return fetcher.get(env); DataFetchingEnvironment envCopy = new DataFetchingEnvironmentImpl( Collections.singletonList(env.getSource()), env.getArguments(), env.getContext(), env.getFields(), env.getFieldType(), env.getParentType(), env.getGraphQLSchema(), env.getFragmentsByName(), env.getExecutionId(), env.getSelectionSet()); Object result = fetcher.get(envCopy); if ( !(result instanceof List) || ((List)result).size() != 1 ) { throw new IllegalStateException("Batched fetcher "+fetcher+" expected to return list of 1"); } return ((List)result).get(0); }
@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); } }
environment.getFragmentsByName(), environment.getExecutionId(), environment.getSelectionSet(), environment.getExecutionStepInfo(), environment.getExecutionContext()
@Override public T get(DataFetchingEnvironment environment) throws Exception { Object source = environment.getSource(); if (source != null && (!declaringClass.isInstance(source)) && !(source instanceof Map)) { environment = new DataFetchingEnvironmentImpl(newInstance(declaringClass, source), environment.getArguments(), environment.getContext(), environment.getRoot(), environment.getFieldDefinition(), environment.getFields(), environment.getFieldType(), environment.getParentType(), environment.getGraphQLSchema(), environment.getFragmentsByName(), environment.getExecutionId(), environment.getSelectionSet(), environment.getExecutionStepInfo(), environment.getExecutionContext()); } return dataFetcher.get(environment); }
public WherePredicateEnvironment(DataFetchingEnvironment environment, GraphQLFieldDefinition fieldDefinition, Map<String, Object> arguments) { super( environment.getSource(), arguments, environment.getContext(), environment.getRoot(), fieldDefinition, //environment.getFieldDefinition(), environment.getFields(), fieldDefinition.getType(), // environment.getFieldType(), environment.getParentType(), environment.getGraphQLSchema(), environment.getFragmentsByName(), environment.getExecutionId(), environment.getSelectionSet(), environment.getExecutionStepInfo(), environment.getExecutionContext() ); } }
public ArgumentEnvironment(DataFetchingEnvironment environment, String argumentName) { super( environment.getSource(), environment.getArgument(argumentName), environment.getContext(), environment.getRoot(), environment.getFieldDefinition(), environment.getFields(), environment.getFieldType(), environment.getParentType(), environment.getGraphQLSchema(), environment.getFragmentsByName(), environment.getExecutionId(), environment.getSelectionSet(), environment.getExecutionStepInfo(), environment.getExecutionContext() ); } }
@SuppressWarnings( "serial" ) protected Predicate getWherePredicate(CriteriaBuilder cb, Root<?> root, From<?,?> path, DataFetchingEnvironment environment, Argument argument) { ObjectValue whereValue = getValue(argument); if(whereValue.getChildren().isEmpty()) return cb.conjunction(); return getArgumentPredicate(cb, (path != null) ? path : root, new DataFetchingEnvironmentImpl( environment.getSource(), new LinkedHashMap<String,Object>() {{ put(Logical.AND.name(), environment.getArguments()); }}, environment.getContext(), environment.getRoot(), environment.getFieldDefinition(), environment.getFields(), environment.getFieldType(), environment.getParentType(), environment.getGraphQLSchema(), environment.getFragmentsByName(), environment.getExecutionId(), environment.getSelectionSet(), environment.getExecutionStepInfo(), environment.getExecutionContext() ), new Argument(Logical.AND.name(), whereValue) ); }
@SuppressWarnings("serial") private PredicateFilter getPredicateFilter(ObjectField objectField, DataFetchingEnvironment environment, Argument argument) { EnumSet<PredicateFilter.Criteria> options = EnumSet.of(PredicateFilter.Criteria.valueOf(argument.getName())); Object filterValue = convertValue( new DataFetchingEnvironmentImpl( environment.getSource(), new LinkedHashMap<String,Object>() {{ put(objectField.getName(), environment.getArgument(argument.getName())); }}, environment.getContext(), environment.getRoot(), environment.getFieldDefinition(), environment.getFields(), environment.getFieldType(), environment.getParentType(), environment.getGraphQLSchema(), environment.getFragmentsByName(), environment.getExecutionId(), environment.getSelectionSet(), environment.getExecutionStepInfo(), environment.getExecutionContext() ), new Argument(objectField.getName(), argument.getValue()), argument.getValue() ); return new PredicateFilter(objectField.getName(), filterValue, options ); }