From aea229778ca03bf6874bde0886d7950c8f4434de Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 6 Jul 2021 15:35:23 +0100 Subject: [PATCH] Add README files to samples --- samples/README.md | 11 +++++++++++ samples/webflux-security/README.md | 8 ++++++++ samples/webflux-websocket/README.md | 7 +++++++ samples/webmvc-http-security/README.md | 8 ++++++++ samples/webmvc-http/README.md | 9 +++++++++ 5 files changed, 43 insertions(+) create mode 100644 samples/README.md create mode 100644 samples/webflux-security/README.md create mode 100644 samples/webflux-websocket/README.md create mode 100644 samples/webmvc-http-security/README.md create mode 100644 samples/webmvc-http/README.md diff --git a/samples/README.md b/samples/README.md new file mode 100644 index 00000000..5647e427 --- /dev/null +++ b/samples/README.md @@ -0,0 +1,11 @@ +This directory contains samples that we run to test different scenarios and features. + +All samples use the Boot starter and expose a GraphiQL page where you can run queries. Simply start the `main` application class and go to http://localhost:8080/graphiql. + +To run from the command line, use: +```shell script +$ ./gradlew :samples:{sample-directory-name}:bootRun +``` + +Samples have integration tests you can run with a debugger. + diff --git a/samples/webflux-security/README.md b/samples/webflux-security/README.md new file mode 100644 index 00000000..e05c5cbe --- /dev/null +++ b/samples/webflux-security/README.md @@ -0,0 +1,8 @@ +Sample with Spring Security in a WebFlux application. + +Main features: + + - Spring Security [config](src/main/java/io/spring/sample/graphql/SecurityConfig.java) secures GraphQL HTTP endpoint. + - Fine-grained, method-level security on [SalaryService](src/main/java/io/spring/sample/graphql/SalaryService.java). + - `AuthenticationException` and `AccessDeniedException` [resolved](src/main/java/io/spring/sample/graphql/SecurityDataFetcherExceptionResolver.java) to GraphQL errors. + - [Tests](src/test/java/io/spring/sample/graphql/SampleApplicationTests.java) with `WebGraphQlTester` and WebFlux without a server. \ No newline at end of file diff --git a/samples/webflux-websocket/README.md b/samples/webflux-websocket/README.md new file mode 100644 index 00000000..db07dd5f --- /dev/null +++ b/samples/webflux-websocket/README.md @@ -0,0 +1,7 @@ +Sample with GraphQL over WebSocket in a WebFlux application. + +Main features: + + - Reactive [DataFetcher's](src/main/java/io/spring/sample/graphql/SampleWiring.java), including subscription stream. + - [WebFilter](src/main/java/io/spring/sample/graphql/ContextWebFilter.java) that inserts Reactor `Context` that is then accessed in the [DataRepository](src/main/java/io/spring/sample/graphql/DataRepository.java). + - [Tests](src/test/java/io/spring/sample/graphql/SubscriptionTests.java) for subscription streams. \ No newline at end of file diff --git a/samples/webmvc-http-security/README.md b/samples/webmvc-http-security/README.md new file mode 100644 index 00000000..0b57f437 --- /dev/null +++ b/samples/webmvc-http-security/README.md @@ -0,0 +1,8 @@ +Sample with Spring Security in a Spring MVC application. + +Main features: + + - Spring Security [config](src/main/java/io/spring/sample/graphql/SecurityConfig.java) secures GraphQL HTTP endpoint. + - Fine-grained, method-level security on [SalaryService](src/main/java/io/spring/sample/graphql/SalaryService.java). + - `AuthenticationException` and `AccessDeniedException` [resolved](src/test/java/io/spring/sample/graphql/SampleApplicationTests.java) to GraphQL errors. + - [Tests](src/test/java/io/spring/sample/graphql/SampleApplicationTests.java) with `WebGraphQlTester` and WebFlux without a server. \ No newline at end of file diff --git a/samples/webmvc-http/README.md b/samples/webmvc-http/README.md new file mode 100644 index 00000000..69b3a608 --- /dev/null +++ b/samples/webmvc-http/README.md @@ -0,0 +1,9 @@ +Sample with a GraphQL HTTP endpoint in Spring MVC. + +Main features: + + - Spring HATEOAS [DataFetcher's](src/main/java/io/spring/sample/graphql/project/ProjectDataWiring.java) that call spring.io REST API. + - Querydsl [DataFetcher's](src/main/java/io/spring/sample/graphql/repository/ArtifactRepositoryDataWiring.java) making JPA queries. + - Use of [ThreadLocalAccessor](src/main/java/io/spring/sample/graphql/greeting/RequestAttributesAccessor.java) to propagate context to data fetchers. + - Schema printing enabled at "/graphql/schema". + - [Tests](src/test/java/io/spring/sample/graphql/project/MockMvcGraphQlTests.java) with `GraphQlTester` and MockMvc. \ No newline at end of file