Ejemplo n.º 1
0
        public ResolverContext(
            IExecutionContext executionContext,
            ResolverTask resolverTask)
        {
            if (executionContext == null)
            {
                throw new ArgumentNullException(nameof(executionContext));
            }

            if (resolverTask == null)
            {
                throw new ArgumentNullException(nameof(resolverTask));
            }

            _executionContext = executionContext;
            _resolverTask     = resolverTask;
            _arguments        = _argumentResolver.CoerceArgumentValues(
                resolverTask.ObjectType, resolverTask.FieldSelection,
                executionContext.Variables);
        }
Ejemplo n.º 2
0
        public ResolverContext(
            IExecutionContext executionContext,
            ResolverTask resolverTask,
            CancellationToken requestAborted)
        {
            if (executionContext == null)
            {
                throw new ArgumentNullException(nameof(executionContext));
            }

            if (resolverTask == null)
            {
                throw new ArgumentNullException(nameof(resolverTask));
            }

            _executionContext = executionContext;
            _resolverTask     = resolverTask;
            RequestAborted    = requestAborted;

            _arguments = _argumentResolver.CoerceArgumentValues(
                resolverTask.FieldSelection, executionContext.Variables);
        }
        private EventDescription CreateEvent(IExecutionContext executionContext)
        {
            IReadOnlyCollection <FieldSelection> selections = executionContext
                                                              .CollectFields(
                executionContext.OperationType,
                executionContext.Operation.SelectionSet);

            if (selections.Count == 1)
            {
                FieldSelection selection = selections.Single();

                var argumentResolver = new ArgumentResolver();
                Dictionary <string, ArgumentValue> argumentValues =
                    argumentResolver.CoerceArgumentValues(
                        selection,
                        executionContext.Variables);

                List <ArgumentNode> arguments = new List <ArgumentNode>();

                foreach (var argumentValue in argumentValues)
                {
                    IInputType argumentType = argumentValue.Value.Type;
                    object     value        = argumentValue.Value.Value;

                    arguments.Add(new ArgumentNode(
                                      argumentValue.Key,
                                      argumentType.ParseValue(value)));
                }

                return(new EventDescription(selection.Field.Name, arguments));
            }
            else
            {
                // TODO : Error message
                throw new QueryException();
            }
        }