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

ResolverError occurs when linking with Spring Security

Open JeonGyungMin opened this issue 5 years ago • 0 comments

I use graphql-spring-boot-starter 7.1.0 version.

My code.

@Component
class AuthResolver(val jwtUserService: JWTUserService,
                   val authenticationProvider: AuthenticationProvider)
    : GraphQLQueryResolver {
    @PreAuthorize("isAuthenticated()")
    fun getToken(): String? {
        return "token"
    }
}

then

Caused by: graphql.kickstart.tools.ResolverError: Resolvers may not have java.lang.Void as their type, use a real type or use a root resolver interface.
	at graphql.kickstart.tools.NormalResolverInfo.findDataClass(ResolverInfo.kt:37) ~[graphql-java-tools-6.1.0.jar:na]
	at graphql.kickstart.tools.NormalResolverInfo.<init>(ResolverInfo.kt:27) ~[graphql-java-tools-6.1.0.jar:na]
	at graphql.kickstart.tools.SchemaClassScanner$resolverInfos$1.invoke(SchemaClassScanner.kt:32) ~[graphql-java-tools-6.1.0.jar:na]
	at graphql.kickstart.tools.SchemaClassScanner$resolverInfos$1.invoke(SchemaClassScanner.kt:15) ~[graphql-java-tools-6.1.0.jar:na]
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:172) ~[kotlin-stdlib-1.3.72.jar:1.3.72-release-468 (1.3.72)]
	at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:722) ~[kotlin-stdlib-1.3.72.jar:1.3.72-release-468 (1.3.72)]
	at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:752) ~[kotlin-stdlib-1.3.72.jar:1.3.72-release-468 (1.3.72)]
	at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:743) ~[kotlin-stdlib-1.3.72.jar:1.3.72-release-468 (1.3.72)]
	at graphql.kickstart.tools.SchemaClassScanner.<init>(SchemaClassScanner.kt:32) ~[graphql-java-tools-6.1.0.jar:na]
	at graphql.kickstart.tools.SchemaParserBuilder.scan(SchemaParserBuilder.kt:153) ~[graphql-java-tools-6.1.0.jar:na]
	at graphql.kickstart.tools.SchemaParserBuilder.build(SchemaParserBuilder.kt:195) ~[graphql-java-tools-6.1.0.jar:na]
	at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration.schemaParser(GraphQLJavaToolsAutoConfiguration.java:151) ~[graphql-kickstart-spring-boot-autoconfigure-tools-7.1.0.jar:na]
	at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration$$EnhancerBySpringCGLIB$$f90217e.CGLIB$schemaParser$3(<generated>) ~[graphql-kickstart-spring-boot-autoconfigure-tools-7.1.0.jar:na]
	at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration$$EnhancerBySpringCGLIB$$f90217e$$FastClassBySpringCGLIB$$dcce5f6_4.invoke(<generated>) ~[graphql-kickstart-spring-boot-autoconfigure-tools-7.1.0.jar:na]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration$$EnhancerBySpringCGLIB$$f90217e.schemaParser(<generated>) ~[graphql-kickstart-spring-boot-autoconfigure-tools-7.1.0.jar:na]
	at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration$HOTSWAPAGENT_$$FastClassBySpringCGLIB$$21217c45_4.invoke(<generated>) ~[graphql-kickstart-spring-boot-autoconfigure-tools-7.1.0.jar:na]
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.7.RELEASE.jar:5.2.7.RELEASE]
	at HotswapSpringCallback_1796692748.intercept(HotswapSpringCallback_1796692748.java) ~[graphql-spring-boot-autoconfigure-7.1.0.jar:na]
	at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration$HOTSWAPAGENT_$$EnhancerBySpringCGLIB$$ec2b5acc_2.schemaParser(<generated>) ~[graphql-kickstart-spring-boot-autoconfigure-tools-7.1.0.jar:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]

But, If @PreAuthorize("isAuthenticated()") is deleted, it works.

How can I fix it?

JeonGyungMin avatar Jun 23 '20 12:06 JeonGyungMin