graphql-java-tools icon indicating copy to clipboard operation
graphql-java-tools copied to clipboard

Support for MethodFieldResolver with only DataFetchingEnvironment.

Open abhi-rao opened this issue 6 years ago • 2 comments

  1. method <name>(object, *fieldArgs [, DataFetchingEnvironment])
  2. method is<Name>(object, *fieldArgs [, DataFetchingEnvironment]), only if the field returns a Boolean
  3. method get<Name>(object, *fieldArgs [, DataFetchingEnvironment])
  4. method getField<Name>(object, *fieldArgs [, DataFetchingEnvironment])
  5. field <name>

Currently only the above fieldResolvers are supported. But there are use cases where are in using local context would be the only requirement. Can methods with the following definition be supported?

method (is|get|getField)?<Name>(*fieldArgs, DataFetchingEnvironment) is supported.

The following hypothetical example shows that while loading imageBlob, we would want to know just the type of files supported. Since the parent of imageBlob is the image this data won't be available. Just the localContext is needed. In these cases, there is only need for DataFetchingEnvironment. So support for the above mentioned methodResolver would be cleaner.

type Folder {
    supportedFileTypes: [String!]!
    images: [Image!]!
}
type Image {
    imageBlob: String
}

abhi-rao avatar Aug 23 '19 10:08 abhi-rao

I also have some places where I don't want / need my inputs to be deserialized into the data object. Since I need to know if a property of the input was specified or not. Java does not allow me to test for missing property since the property will be null.

For this case I do my own deserialization as a Map and check with contains().

ieugen avatar Sep 03 '19 20:09 ieugen

I think this make sense. I also came across a need like this.

vojtapol avatar Feb 04 '20 15:02 vojtapol