Skip to content
This repository was archived by the owner on Dec 19, 2023. It is now read-only.

Commit 9400de3

Browse files
committed
Autoconfigure Generic wrapper for Mono fix #326
1 parent 68359c2 commit 9400de3

File tree

4 files changed

+42
-4
lines changed

4 files changed

+42
-4
lines changed

graphql-kickstart-spring-boot-autoconfigure-tools/src/main/java/graphql/kickstart/tools/boot/GraphQLJavaToolsAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
@Slf4j
4545
@Configuration
4646
@ConditionalOnClass(SchemaParser.class)
47-
@AutoConfigureAfter({JacksonAutoConfiguration.class})
47+
@AutoConfigureAfter(JacksonAutoConfiguration.class)
4848
@EnableConfigurationProperties(GraphQLToolsProperties.class)
4949
public class GraphQLJavaToolsAutoConfiguration {
5050

graphql-kickstart-spring-boot-autoconfigure-webflux/src/main/java/graphql/kickstart/spring/webflux/boot/GraphQLSpringWebfluxAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
5151
@Slf4j
5252
@Configuration
53-
@ConditionalOnBean({GraphQLSchema.class})
54-
@AutoConfigureAfter({GraphQLJavaToolsAutoConfiguration.class})
53+
@ConditionalOnBean(GraphQLSchema.class)
54+
@AutoConfigureAfter(GraphQLJavaToolsAutoConfiguration.class)
5555
@Import({GraphQLController.class, ReactiveWebSocketSubscriptionsHandler.class})
5656
public class GraphQLSpringWebfluxAutoConfiguration {
5757

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package graphql.kickstart.spring.webflux.boot;
2+
3+
import graphql.kickstart.tools.SchemaParser;
4+
import graphql.kickstart.tools.SchemaParserOptions.GenericWrapper;
5+
import graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration;
6+
import java.util.List;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
9+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
10+
import org.springframework.context.annotation.Bean;
11+
import org.springframework.context.annotation.Configuration;
12+
import reactor.core.publisher.Mono;
13+
14+
@Configuration
15+
@ConditionalOnClass(SchemaParser.class)
16+
@AutoConfigureBefore(GraphQLJavaToolsAutoConfiguration.class)
17+
public class MonoAutoConfiguration {
18+
19+
@Bean
20+
GenericWrapper monoWrapper(@Autowired(required = false) List<GenericWrapper> genericWrappers) {
21+
if (notWrapsMono(genericWrappers)) {
22+
return GenericWrapper.withTransformer(
23+
Mono.class,
24+
0,
25+
Mono::toFuture,
26+
t -> t
27+
);
28+
}
29+
return null;
30+
}
31+
32+
private boolean notWrapsMono(List<GenericWrapper> genericWrappers) {
33+
return genericWrappers == null ||
34+
genericWrappers.stream().noneMatch(it -> it.getType().isAssignableFrom(Mono.class));
35+
}
36+
37+
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
2-
graphql.kickstart.spring.webflux.boot.GraphQLSpringWebfluxAutoConfiguration
2+
graphql.kickstart.spring.webflux.boot.GraphQLSpringWebfluxAutoConfiguration,\
3+
graphql.kickstart.spring.webflux.boot.MonoAutoConfiguration

0 commit comments

Comments
 (0)