This repository was archived by the owner on Dec 19, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 10 files changed +103
-1
lines changed
graphql-kickstart-spring-boot-autoconfigure-webflux
main/java/graphql/kickstart/spring/webflux/boot
java/graphql/kickstart/spring/webflux/boot
graphql-spring-boot-autoconfigure/src/main/java/graphql/kickstart/spring/web/boot Expand file tree Collapse file tree 10 files changed +103
-1
lines changed Original file line number Diff line number Diff line change @@ -5,4 +5,7 @@ dependencies {
55 implementation " org.springframework.boot:spring-boot-autoconfigure"
66 implementation " com.graphql-java-kickstart:graphql-java-kickstart:$LIB_GRAPHQL_SERVLET_VER "
77 implementation " org.springframework.boot:spring-boot-starter-webflux"
8+
9+ testImplementation " org.springframework.boot:spring-boot-starter-test"
10+ testImplementation(project(" :graphql-kickstart-spring-boot-starter-tools" ))
811}
Original file line number Diff line number Diff line change 11package graphql .kickstart .spring .webflux .boot ;
22
33import static graphql .kickstart .execution .GraphQLObjectMapper .newBuilder ;
4+ import static org .springframework .boot .autoconfigure .condition .ConditionalOnWebApplication .Type .REACTIVE ;
45
56import graphql .execution .instrumentation .dataloader .DataLoaderDispatcherInstrumentationOptions ;
67import graphql .kickstart .execution .BatchedDataLoaderGraphQLBuilder ;
3940import org .springframework .boot .autoconfigure .AutoConfigureAfter ;
4041import org .springframework .boot .autoconfigure .condition .ConditionalOnBean ;
4142import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
43+ import org .springframework .boot .autoconfigure .condition .ConditionalOnWebApplication ;
4244import org .springframework .context .annotation .Bean ;
4345import org .springframework .context .annotation .Configuration ;
4446import org .springframework .context .annotation .Import ;
5052@ SuppressWarnings ("SpringJavaInjectionPointsAutowiringInspection" )
5153@ Slf4j
5254@ Configuration
55+ @ ConditionalOnWebApplication (type = REACTIVE )
5356@ ConditionalOnBean (GraphQLSchema .class )
5457@ AutoConfigureAfter (GraphQLJavaToolsAutoConfiguration .class )
5558@ Import ({GraphQLController .class , ReactiveWebSocketSubscriptionsHandler .class })
Original file line number Diff line number Diff line change 11package graphql .kickstart .spring .webflux .boot ;
22
3+ import static org .springframework .boot .autoconfigure .condition .ConditionalOnWebApplication .Type .REACTIVE ;
4+
35import graphql .kickstart .tools .SchemaParser ;
46import graphql .kickstart .tools .SchemaParserOptions .GenericWrapper ;
57import graphql .kickstart .tools .boot .GraphQLJavaToolsAutoConfiguration ;
68import java .util .List ;
79import org .springframework .beans .factory .annotation .Autowired ;
810import org .springframework .boot .autoconfigure .AutoConfigureBefore ;
911import org .springframework .boot .autoconfigure .condition .ConditionalOnClass ;
12+ import org .springframework .boot .autoconfigure .condition .ConditionalOnWebApplication ;
1013import org .springframework .context .annotation .Bean ;
1114import org .springframework .context .annotation .Configuration ;
1215import reactor .core .publisher .Mono ;
1316
1417@ Configuration
1518@ ConditionalOnClass (SchemaParser .class )
19+ @ ConditionalOnWebApplication (type = REACTIVE )
1620@ AutoConfigureBefore (GraphQLJavaToolsAutoConfiguration .class )
1721public class MonoAutoConfiguration {
1822
Original file line number Diff line number Diff line change 1+ package graphql .kickstart .spring .webflux .boot ;
2+
3+ import graphql .kickstart .tools .GraphQLQueryResolver ;
4+ import org .springframework .stereotype .Component ;
5+ import reactor .core .publisher .Mono ;
6+
7+ @ Component
8+ class HelloQuery implements GraphQLQueryResolver {
9+
10+ public Mono <String > hello () {
11+ return Mono .just ("Hello world" );
12+ }
13+
14+ }
Original file line number Diff line number Diff line change 1+ package graphql .kickstart .spring .webflux .boot ;
2+
3+ import static org .assertj .core .api .Assertions .assertThat ;
4+
5+ import java .io .IOException ;
6+ import lombok .RequiredArgsConstructor ;
7+ import lombok .val ;
8+ import org .junit .jupiter .api .Test ;
9+ import org .junit .jupiter .api .extension .ExtendWith ;
10+ import org .springframework .beans .factory .annotation .Autowired ;
11+ import org .springframework .boot .test .context .SpringBootTest ;
12+ import org .springframework .http .MediaType ;
13+ import org .springframework .test .context .junit .jupiter .SpringExtension ;
14+ import org .springframework .test .web .reactive .server .WebTestClient ;
15+
16+ @ SuppressWarnings ("ALL" )
17+ @ RequiredArgsConstructor
18+ @ ExtendWith (SpringExtension .class )
19+ @ SpringBootTest (webEnvironment = SpringBootTest .WebEnvironment .RANDOM_PORT )
20+ class MonoAutoConfigurationTest {
21+
22+ @ Autowired
23+ private WebTestClient webTestClient ;
24+
25+ @ Test
26+ void monoWrapper () throws IOException {
27+ val result = webTestClient .post ()
28+ .uri ("/graphql" )
29+ .contentType (MediaType .APPLICATION_JSON )
30+ .bodyValue ("{ \" query\" : \" query { hello } \" }" )
31+ .exchange ()
32+ .returnResult (String .class );
33+ val response = result .getResponseBody ().blockFirst ();
34+ assertThat (response ).isEqualTo ("{\" data\" :{\" hello\" :\" Hello world\" }}" );
35+ }
36+
37+ }
Original file line number Diff line number Diff line change 1+ package graphql .kickstart .spring .webflux .boot ;
2+
3+ import graphql .kickstart .tools .GraphQLSubscriptionResolver ;
4+ import graphql .schema .DataFetchingEnvironment ;
5+ import java .time .Duration ;
6+ import org .reactivestreams .Publisher ;
7+ import org .springframework .stereotype .Service ;
8+ import reactor .core .publisher .Flux ;
9+
10+ @ Service
11+ class MySubscriptionResolver implements GraphQLSubscriptionResolver {
12+
13+ Publisher <Integer > hello (DataFetchingEnvironment env ) {
14+ return Flux .range (0 , 100 ).delayElements (Duration .ofSeconds (1 ));
15+ }
16+
17+ }
Original file line number Diff line number Diff line change 1+ package graphql .kickstart .spring .webflux .boot ;
2+
3+ import org .springframework .boot .SpringApplication ;
4+ import org .springframework .boot .autoconfigure .SpringBootApplication ;
5+
6+ @ SpringBootApplication
7+ public class WebfluxApplication {
8+
9+ public static void main (String [] args ) {
10+ SpringApplication .run (WebfluxApplication .class , args );
11+ }
12+
13+ }
Original file line number Diff line number Diff line change 1+ query {
2+ hello
3+ }
Original file line number Diff line number Diff line change 1+ type Query {
2+ hello : String
3+ }
4+
5+ type Subscription {
6+ hello : Int
7+ }
Original file line number Diff line number Diff line change 7272import org .springframework .boot .autoconfigure .condition .ConditionalOnMissingBean ;
7373import org .springframework .boot .autoconfigure .condition .ConditionalOnProperty ;
7474import org .springframework .boot .autoconfigure .condition .ConditionalOnWebApplication ;
75+ import org .springframework .boot .autoconfigure .condition .ConditionalOnWebApplication .Type ;
7576import org .springframework .boot .autoconfigure .jackson .JacksonAutoConfiguration ;
7677import org .springframework .boot .context .properties .ConfigurationProperties ;
7778import org .springframework .boot .context .properties .EnableConfigurationProperties ;
9293@ Slf4j
9394@ Configuration
9495@ RequiredArgsConstructor
95- @ ConditionalOnWebApplication
96+ @ ConditionalOnWebApplication ( type = Type . SERVLET )
9697@ ConditionalOnClass (DispatcherServlet .class )
9798@ Conditional (OnSchemaOrSchemaProviderBean .class )
9899@ SuppressWarnings ("SpringJavaInjectionPointsAutowiringInspection" )
You can’t perform that action at this time.
0 commit comments