Esempio n. 1
0
        protected override void OnCompleteType(
            ICompletionContext context,
            InputObjectTypeDefinition definition)
        {
            base.OnCompleteType(context, definition);

            ITypeConversion typeConversion =
                context.Services.GetTypeConversion();

            _objectToValueConverter =
                new InputObjectToObjectValueConverter(typeConversion);
            _valueToObjectConverter =
                new ObjectValueToInputObjectConverter(typeConversion);
            _objectToDictionary =
                new InputObjectToDictionaryConverter(typeConversion);
            _dictionaryToObject =
                new DictionaryToInputObjectConverter(typeConversion);

            SyntaxNode = definition.SyntaxNode;

            var fields = new List <InputField>();

            OnCompleteFields(context, definition, fields);

            Fields = new FieldCollection <InputField>(fields);
            FieldInitHelper.CompleteFields(context, definition, Fields);
        }
Esempio n. 2
0
        protected override void OnCompleteType(
            ICompletionContext context,
            InputObjectTypeDefinition definition)
        {
            base.OnCompleteType(context, definition);

            ITypeConversion converter = context.Services.GetTypeConversion();

            _objectToValueConverter =
                new InputObjectToObjectValueConverter(converter);
            _objectToDictionary =
                new InputObjectToDictionaryConverter(converter);

            SyntaxNode = definition.SyntaxNode;

            var fields = new List <InputField>();

            OnCompleteFields(context, definition, fields);

            Fields = new FieldCollection <InputField>(fields);
            FieldInitHelper.CompleteFields(context, definition, Fields);

            if (ClrType == typeof(object) || Fields.Any(t => t.Property is null))
            {
                _parseLiteral = ov => InputObjectParserHelper.Parse(this, ov, converter);
                _deserialize  = map => InputObjectParserHelper.Deserialize(this, map, converter);
            }
        protected override void OnCompleteType(
            ITypeCompletionContext context,
            InputObjectTypeDefinition definition)
        {
            base.OnCompleteType(context, definition);

            ITypeConverter converter = context.Services.GetTypeConverter();

            _objectToValueConverter = new InputObjectToObjectValueConverter(converter);
            _objectToDictionary     = new InputObjectToDictionaryConverter(converter);

            SyntaxNode = definition.SyntaxNode;

            var fields = new List <InputField>();

            OnCompleteFields(context, definition, fields);

            Fields = FieldCollection <InputField> .From(
                fields,
                context.DescriptorContext.Options.SortFieldsByName);

            FieldInitHelper.CompleteFields(context, definition, Fields);

            if (RuntimeType == typeof(object) || Fields.Any(t => t.Property is null))
            {
                _parseLiteral = ov => ParseLiteralToDictionary(this, ov, converter);
                _deserialize  = map => DeserializeToDictionary(this, map, converter);
            }
Esempio n. 4
0
        protected override void OnCompleteType(
            ICompletionContext context,
            DirectiveTypeDefinition definition)
        {
            base.OnCompleteType(context, definition);

            _converter           = context.Services.GetTypeConversion();
            MiddlewareComponents =
                definition.MiddlewareComponents.ToList().AsReadOnly();

            SyntaxNode = definition.SyntaxNode;
            Locations  = definition.Locations.ToList().AsReadOnly();
            Arguments  = new FieldCollection <Argument>(
                definition.Arguments.Select(t => new Argument(t)));
            IsExecutable = MiddlewareComponents.Count > 0;

            if (!Locations.Any())
            {
                context.ReportError(SchemaErrorBuilder.New()
                                    .SetMessage(string.Format(
                                                    CultureInfo.InvariantCulture,
                                                    TypeResources.DirectiveType_NoLocations,
                                                    Name))
                                    .SetCode(ErrorCodes.Schema.MissingType)
                                    .SetTypeSystemObject(context.Type)
                                    .AddSyntaxNode(definition.SyntaxNode)
                                    .Build());
            }

            FieldInitHelper.CompleteFields(context, definition, Arguments);
        }
Esempio n. 5
0
        protected override void OnCompleteType(
            ICompletionContext context,
            DirectiveTypeDefinition definition)
        {
            base.OnCompleteType(context, definition);

            _converter           = context.Services.GetTypeConversion();
            MiddlewareComponents =
                definition.MiddlewareComponents.ToList().AsReadOnly();

            SyntaxNode = definition.SyntaxNode;
            ClrType    = definition.ClrType == GetType()
                ? typeof(object)
                : definition.ClrType;
            IsRepeatable = definition.IsRepeatable;
            Locations    = definition.Locations.ToList().AsReadOnly();
            Arguments    = new FieldCollection <Argument>(
                definition.Arguments.Select(t => new Argument(t)));
            IsExecutable = MiddlewareComponents.Count > 0;

            if (!Locations.Any())
            {
                // TODO : resources
                context.ReportError(SchemaErrorBuilder.New()
                                    .SetMessage(
                                        $"The `{Name}` directive does not declare any " +
                                        "location on which it is valid.")
                                    .SetCode(TypeErrorCodes.MissingType)
                                    .SetTypeSystemObject(context.Type)
                                    .AddSyntaxNode(definition.SyntaxNode)
                                    .Build());
            }

            FieldInitHelper.CompleteFields(context, definition, Arguments);
        }
Esempio n. 6
0
 protected override void OnCompleteField(
     ICompletionContext context,
     ArgumentDefinition definition)
 {
     base.OnCompleteField(context, definition);
     DefaultValue = FieldInitHelper.CreateDefaultValue(
         context, definition, Type);
 }
Esempio n. 7
0
 protected override void OnCompleteField(
     ICompletionContext context,
     InputFieldDefinition definition)
 {
     base.OnCompleteField(context, definition);
     DefaultValue = FieldInitHelper.CreateDefaultValue(
         context, definition, Type);
     Property = definition.Property;
 }
Esempio n. 8
0
        protected override void OnCompleteType(
            ICompletionContext context,
            InterfaceTypeDefinition definition)
        {
            base.OnCompleteType(context, definition);

            SyntaxNode = definition.SyntaxNode;
            Fields     = new FieldCollection <InterfaceField>(
                definition.Fields.Select(t => new InterfaceField(t)));

            CompleteAbstractTypeResolver(
                context,
                definition.ResolveAbstractType);
            FieldInitHelper.CompleteFields(context, definition, Fields);
        }
Esempio n. 9
0
        protected override void OnCompleteType(
            ICompletionContext context,
            InputObjectTypeDefinition definition)
        {
            base.OnCompleteType(context, definition);

            ITypeConversion typeConversion = context.Services.GetTypeConversion();

            _objectToValueConverter =
                new InputObjectToObjectValueConverter(typeConversion);
            _valueToObjectConverter =
                new ObjectValueToInputObjectConverter(typeConversion);

            SyntaxNode = definition.SyntaxNode;
            Fields     = new FieldCollection <InputField>(
                definition.Fields.Select(t => new InputField(t)));

            FieldInitHelper.CompleteFields(context, definition, Fields);
        }
Esempio n. 10
0
 protected override void OnCompleteField(
     ITypeCompletionContext context,
     ArgumentDefinition definition)
 {
     if (definition.Type is null)
     {
         context.ReportError(SchemaErrorBuilder.New()
                             .SetMessage(string.Format(
                                             CultureInfo.InvariantCulture,
                                             TypeResources.Argument_TypeIsNull,
                                             definition.Name))
                             .SetTypeSystemObject(context.Type)
                             .Build());
     }
     else
     {
         base.OnCompleteField(context, definition);
         DefaultValue = FieldInitHelper.CreateDefaultValue(context, definition, Type);
     }
 }
Esempio n. 11
0
        protected override void OnCompleteType(
            ICompletionContext context,
            ObjectTypeDefinition definition)
        {
            base.OnCompleteType(context, definition);

            _isOfType  = definition.IsOfType;
            SyntaxNode = definition.SyntaxNode;

            var fields = new List <ObjectField>();

            AddIntrospectionFields(context, fields);
            fields.AddRange(definition.Fields.Select(t => new ObjectField(t)));

            Fields = new FieldCollection <ObjectField>(fields);

            CompleteInterfaces(context, definition);
            CompleteIsOfType(context);
            FieldInitHelper.CompleteFields(context, definition, Fields);
        }