use of org.codice.ddf.admin.api.report.FunctionReport in project admin-console-beta by connexta.
the class ExecutionStrategyImpl method resolveField.
@Override
protected ExecutionResult resolveField(ExecutionContext executionContext, GraphQLObjectType parentType, Object source, List<Field> fields) {
GraphQLFieldDefinition fieldDef = getFieldDef(executionContext.getGraphQLSchema(), parentType, fields.get(0));
Map<String, Object> argumentValues = valuesResolver.getArgumentValues(fieldDef.getArguments(), fields.get(0).getArguments(), executionContext.getVariables());
DataFetchingEnvironment environment = new DataFetchingEnvironment(source, argumentValues, executionContext.getRoot(), fields, fieldDef.getType(), parentType, executionContext.getGraphQLSchema());
Object resolvedValue = null;
try {
resolvedValue = fieldDef.getDataFetcher().get(environment);
if (resolvedValue instanceof FunctionReport) {
FunctionReport<DataType> report = ((FunctionReport) resolvedValue);
resolvedValue = report.isResultPresent() ? report.result().getValue() : null;
List<Message> msgs = report.messages();
msgs.stream().map(GraphQLErrorMessageWrapper::new).forEach(executionContext::addError);
}
} catch (Exception e) {
LOGGER.info("Exception while fetching data", e);
executionContext.addError(new ExceptionWhileDataFetching(e));
}
return completeValue(executionContext, fieldDef.getType(), fields, resolvedValue);
}
use of org.codice.ddf.admin.api.report.FunctionReport in project admin-console-beta by connexta.
the class GraphQLTransformOutput method functionDataFetcher.
public FunctionReport functionDataFetcher(DataFetchingEnvironment env, FunctionField field) {
Map<String, Object> args = new HashMap<>();
if (env.getArguments() != null) {
args.putAll(env.getArguments());
}
FunctionField<DataType> funcField = field.newInstance();
//Remove the field name of the function from that path since the update is using a subpath
List<String> fixedPath = Lists.newArrayList(field.path());
fixedPath.remove(fixedPath.size() - 1);
funcField.updatePath(fixedPath);
funcField.setValue(env.getArguments());
FunctionReport result = funcField.getValue();
return result;
}
Aggregations