Skip to content

Unable to determine data class for resolver '...' from generic interface! This is most likely a bug with graphql-java-tools. #349

Description

@mxmlnglt

using this version of the kickstart:

		<dependency>
			<groupId>com.graphql-java-kickstart</groupId>
			<artifactId>graphql-spring-boot-starter</artifactId>
			<version>5.10.0</version>
		</dependency>

my GraphQL schema:

interface Mother {
  # Mother fields
}

type Child implements Mother {
  # Child & Mother's fields
}

my Java classes:

public class Mother {
    // Mother's fields
}
public class Child extends Mother {
    // Child's fields
}
@Component
public abstract class MotherResolver<T extends Mother> implements GraphQLResolver<T> {
    // Resolving methods for Mother's fields
}
@Component
public class ChildResolver extends MotherResolver<Child> {
    // Resolving methods for Child's fields
}

Starting my Spring Boot app, I get the following stack trace:

Caused by: com.coxautodev.graphql.tools.ResolverError: Unable to determine data class for resolver 'com.company.app.graphql.resolver.ChildResolver' from generic interface! This is most likely a bug with graphql-java-tools.
	at com.coxautodev.graphql.tools.NormalResolverInfo.findDataClass(ResolverInfo.kt:31) ~[graphql-java-tools-5.6.1.jar:na]
	at com.coxautodev.graphql.tools.NormalResolverInfo.<init>(ResolverInfo.kt:19) ~[graphql-java-tools-5.6.1.jar:na]
	at com.coxautodev.graphql.tools.SchemaClassScanner$resolverInfos$1.invoke(SchemaClassScanner.kt:38) ~[graphql-java-tools-5.6.1.jar:na]
	at com.coxautodev.graphql.tools.SchemaClassScanner$resolverInfos$1.invoke(SchemaClassScanner.kt:26) ~[graphql-java-tools-5.6.1.jar:na]
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:174) ~[kotlin-stdlib-1.3.10.jar:1.3.10-release-253 (1.3.10)]
	at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:691) ~[kotlin-stdlib-1.3.10.jar:1.3.10-release-253 (1.3.10)]
	at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:721) ~[kotlin-stdlib-1.3.10.jar:1.3.10-release-253 (1.3.10)]
	at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:712) ~[kotlin-stdlib-1.3.10.jar:1.3.10-release-253 (1.3.10)]
	at com.coxautodev.graphql.tools.SchemaClassScanner.<init>(SchemaClassScanner.kt:38) ~[graphql-java-tools-5.6.1.jar:na]
	at com.coxautodev.graphql.tools.SchemaParserBuilder.scan(SchemaParserBuilder.kt:164) ~[graphql-java-tools-5.6.1.jar:na]
	at com.coxautodev.graphql.tools.SchemaParserBuilder.build(SchemaParserBuilder.kt:206) ~[graphql-java-tools-5.6.1.jar:na]
	at com.oembedler.moon.graphql.boot.GraphQLJavaToolsAutoConfiguration.schemaParser(GraphQLJavaToolsAutoConfiguration.java:98) ~[graphql-spring-boot-autoconfigure-5.10.0.jar:na]
	at com.oembedler.moon.graphql.boot.GraphQLJavaToolsAutoConfiguration$$EnhancerBySpringCGLIB$$3914e3f2.CGLIB$schemaParser$3(<generated>) ~[graphql-spring-boot-autoconfigure-5.10.0.jar:na]
	at com.oembedler.moon.graphql.boot.GraphQLJavaToolsAutoConfiguration$$EnhancerBySpringCGLIB$$3914e3f2$$FastClassBySpringCGLIB$$27868fdb.invoke(<generated>) ~[graphql-spring-boot-autoconfigure-5.10.0.jar:na]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) ~[spring-context-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at com.oembedler.moon.graphql.boot.GraphQLJavaToolsAutoConfiguration$$EnhancerBySpringCGLIB$$3914e3f2.schemaParser(<generated>) ~[graphql-spring-boot-autoconfigure-5.10.0.jar:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_212]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_212]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_212]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_212]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	... 138 common frames omitted

I've seen these (somehow) related issues:
#145
#163
but with the solution you give in the last comment, I don't understand how I would be able to do something like:

class BazResolver extends FooResolver<Baz> {

}

... because that means this resolver is actually a GraphQLResolver<Bar> which makes no sense at all (from a Java inheritance scheme point of view)!!

Or maybe it's just an erroneous copy/paste from #331...? (but that's doesn't solve my problem still...)

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions