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...)
using this version of the kickstart:
my GraphQL schema:
my Java classes:
Starting my Spring Boot app, I get the following stack trace:
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:
... 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...)