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 Object get(DataFetchingEnvironment env) { String userId = env.getArgument("userId"); DataFetchingFieldSelectionSet selectionSet = env.getSelectionSet(); if (selectionSet.contains("user/*")) { return getUserAndTheirFriends(userId); } else { return getUser(userId); } } };
@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()); }
List<SelectedField> selectedFields = graphEnv.getSelectionSet().getFields(); if (selectedFields != null) { for (SelectedField sf: selectedFields) {