Search in sources :

Example 1 with FunctionReport

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);
}
Also used : Message(org.codice.ddf.admin.api.report.Message) GraphQLFieldDefinition(graphql.schema.GraphQLFieldDefinition) FunctionReport(org.codice.ddf.admin.api.report.FunctionReport) DataFetchingEnvironment(graphql.schema.DataFetchingEnvironment) DataType(org.codice.ddf.admin.api.DataType) ExceptionWhileDataFetching(graphql.ExceptionWhileDataFetching)

Example 2 with FunctionReport

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;
}
Also used : HashMap(java.util.HashMap) DataType(org.codice.ddf.admin.api.DataType) FunctionReport(org.codice.ddf.admin.api.report.FunctionReport)

Aggregations

DataType (org.codice.ddf.admin.api.DataType)2 FunctionReport (org.codice.ddf.admin.api.report.FunctionReport)2 ExceptionWhileDataFetching (graphql.ExceptionWhileDataFetching)1 DataFetchingEnvironment (graphql.schema.DataFetchingEnvironment)1 GraphQLFieldDefinition (graphql.schema.GraphQLFieldDefinition)1 HashMap (java.util.HashMap)1 Message (org.codice.ddf.admin.api.report.Message)1