Throw when a resolver method is missing a parameter for an argument in 15.0.0
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 72/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- graphql, kotlin
- Domain
- backend-api-design
Research direction
Start in SchemaClassScanner#warnIfParameterMissing and read the existing warning path, then inspect MethodFieldResolverTest for the named test and the 15.0.0 release notes. Replace the warning with a FieldResolverError that preserves its message and verify it is thrown even when either resolver fallback option is enabled. Done when the test asserts the error and the release notes describe the change.
Written by the indexing model from the issue text.
Description
Follow-up to #418 and #890. Tools now warns at build when a resolver method is missing the parameter for an argument and has a DataFetchingEnvironment, GraphQLContext or contextClass parameter instead. The parameter count still matches, so the scanner accepts it and maps the arguments by position:
type Query {
users(first: Int): UserConnection
}
fun users(env: DataFetchingEnvironment): Connection<User>
Every query of users then fails, with Parameter specified as non-null is null: ... parameter env when first is omitted and Cannot construct instance of graphql.schema.DataFetchingEnvironment when it's sent. The build logs:
Field 'Query.users' has no parameter for its argument 'first: Int' in scenarios.ContextMisboundQuery.users, so the DataFetchingEnvironment parameter gets the argument instead. Add a parameter for each argument, in order, before the DataFetchingEnvironment parameter.
For the contextClass it only warns when the argument is a spec scalar, since the context class can also be a real argument type (e.g. contextClass(Map) with an input object mapped to a Map).
A resolver like this can't work, so it should fail the build. But a schema whose broken field is never queried builds and runs fine today, so throwing has to wait for a major release.
What to change
- replace the warning in
SchemaClassScanner#warnIfParameterMissingwith aFieldResolverErrorthat keeps the same message - throw it even with
allowUnimplementedResolversormissingResolverDataFetcherset, since the resolver exists but can't be called - turn
MethodFieldResolverTest."should warn when a resolver method is missing a parameter for an argument"into a test for the error - mention it in the 15.0.0 release notes
- Dominant language
- Kotlin
- Stars
- 824
- Forks
- 175
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 52
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from graphql-java-kickstart/graphql-java-tools
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
graphql-java-kickstart/graphql-java-tools#893 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 55/100
graphql-java-kickstart/graphql-java-tools#886 ·
Maintainers usually reply within 1 day
-
Reject directives applied at the wrong location, without a required argument or twice in 15.0.0Openenhancement
Difficulty 3/5 1-2 days Newbie friendliness 72/100
graphql-java-kickstart/graphql-java-tools#884 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
graphql-java-kickstart/graphql-java-tools#881 ·
Maintainers usually reply within 1 day
-
Directive wirings see a type reference on recursive input fieldsPossibly taken @oryan-block claimed this today. Openbug
Difficulty 5/5 Over a week Newbie friendliness 35/100
graphql-java-kickstart/graphql-java-tools#875 ·
Maintainers usually reply within 1 day
All issues in graphql-java-kickstart/graphql-java-tools
Similar issues
-
area/kotlin
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
dafonton77-tech/Cadreenf#11 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
Hy4ri/hermes-mobile#1647 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
supabase-community/supabase-kt#1429 ·
Maintainers usually reply within 5 days