protected static async Task <object> ExecuteResolverAsync( ResolverTask resolverTask, CancellationToken cancellationToken) { Activity activity = ResolverDiagnosticEvents.BeginResolveField( resolverTask.ResolverContext); object result = await ExecuteMiddlewareAsync( resolverTask, cancellationToken); if (result is IQueryError error) { activity?.AddTag("error", "true"); } ResolverDiagnosticEvents.EndResolveField( activity, resolverTask.ResolverContext, result); return(result); }
protected static async Task <object> ExecuteResolverAsync( ResolverTask resolverTask, IErrorHandler errorHandler, CancellationToken cancellationToken) { Activity activity = ResolverDiagnosticEvents.BeginResolveField( resolverTask.ResolverContext); object result = await ExecuteMiddlewareAsync( resolverTask, errorHandler).ConfigureAwait(false); if (result is IError || result is IEnumerable <IError> ) { activity?.AddTag("error", "true"); } ResolverDiagnosticEvents.EndResolveField( activity, resolverTask.ResolverContext, result); return(result); }
private static async Task <object> ExecuteMiddlewareAsync( ResolverTask resolverTask, CancellationToken cancellationToken) { object result = null; try { if (!resolverTask.FieldSelection.Field.IsIntrospectionField && resolverTask.HasMiddleware) { result = await ExecuteDirectiveMiddlewareAsync( resolverTask, cancellationToken); } else { result = await ExecuteFieldMiddlewareAsync( resolverTask, cancellationToken); } } catch (QueryException ex) { result = ex.Errors; } catch (Exception ex) { ResolverDiagnosticEvents.ResolverError( resolverTask.ResolverContext, ex); result = resolverTask.CreateError(ex); } return(result); }
private static async Task <object> ExecuteMiddlewareAsync( ResolverTask resolverTask, IErrorHandler errorHandler) { object result = null; try { if (!resolverTask.FieldSelection.Field.IsIntrospectionField && resolverTask.HasMiddleware) { result = await ExecuteDirectiveMiddlewareAsync( resolverTask); } else { result = await ExecuteFieldMiddlewareAsync( resolverTask); } } catch (QueryException ex) { result = ex.Errors; } catch (Exception ex) { ResolverDiagnosticEvents.ResolverError( resolverTask.ResolverContext, ex); result = errorHandler.Handle(ex, error => error .WithPath(resolverTask.Path) .WithSyntaxNodes(resolverTask.FieldSelection.Selection)); } return(result); }