diff --git a/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/ContextWebFilter.java b/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/ContextWebFilter.java index 13b4887e..0f52b837 100644 --- a/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/ContextWebFilter.java +++ b/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/ContextWebFilter.java @@ -22,8 +22,8 @@ import org.springframework.web.server.WebFilter; import org.springframework.web.server.WebFilterChain; /** - * WebFilter that inserts a key-value pair into the Reactor context which is - * transferred to and accessible in Reactor data fetchers. + * WebFilter that inserts a key-value pair into the Reactor context which is transferred + * to and accessible in Reactor data fetchers. */ public class ContextWebFilter implements WebFilter { diff --git a/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/DataRepository.java b/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/DataRepository.java index e9922d9e..ddf24816 100644 --- a/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/DataRepository.java +++ b/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/DataRepository.java @@ -41,19 +41,17 @@ public class DataRepository { } public Flux getGreetings(DataFetchingEnvironment environment) { - return Mono.delay(Duration.ofMillis(50)).flatMapMany(aLong -> - Flux.deferContextual(context -> { - String name = context.get("name"); - return Flux.just("Hi", "Bonjour", "Hola", "Ciao", "Zdravo").map(s -> s + " " + name); - })); + return Mono.delay(Duration.ofMillis(50)).flatMapMany(aLong -> Flux.deferContextual(context -> { + String name = context.get("name"); + return Flux.just("Hi", "Bonjour", "Hola", "Ciao", "Zdravo").map(s -> s + " " + name); + })); } public Flux getGreetingsStream(DataFetchingEnvironment environment) { - return Mono.delay(Duration.ofMillis(50)).flatMapMany(aLong -> - Flux.deferContextual(context -> { - String name = context.get("name"); - return Flux.just("Hi", "Bonjour", "Hola", "Ciao", "Zdravo").map(s -> s + " " + name); - })); + return Mono.delay(Duration.ofMillis(50)).flatMapMany(aLong -> Flux.deferContextual(context -> { + String name = context.get("name"); + return Flux.just("Hi", "Bonjour", "Hola", "Ciao", "Zdravo").map(s -> s + " " + name); + })); } } diff --git a/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/SampleWiring.java b/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/SampleWiring.java index 6c2d6e3c..fe99ff3d 100644 --- a/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/SampleWiring.java +++ b/samples/webflux-websocket/src/main/java/io/spring/sample/graphql/SampleWiring.java @@ -26,26 +26,22 @@ public class SampleWiring implements RuntimeWiringCustomizer { private final DataRepository dataRepository; - public SampleWiring(@Autowired DataRepository dataRepository) { this.dataRepository = dataRepository; } - @Override public void customize(RuntimeWiring.Builder builder) { - builder.type("Query", typeBuilder -> - typeBuilder.dataFetcher("greeting", this.dataRepository::getBasic)); + builder.type("Query", typeBuilder -> typeBuilder.dataFetcher("greeting", this.dataRepository::getBasic)); - builder.type("Query", typeBuilder -> - typeBuilder.dataFetcher("greetingMono", this.dataRepository::getGreeting)); + builder.type("Query", typeBuilder -> typeBuilder.dataFetcher("greetingMono", this.dataRepository::getGreeting)); - builder.type("Query", typeBuilder -> - typeBuilder.dataFetcher("greetingsFlux", this.dataRepository::getGreetings)); + builder.type("Query", + typeBuilder -> typeBuilder.dataFetcher("greetingsFlux", this.dataRepository::getGreetings)); - builder.type("Subscription", typeBuilder -> - typeBuilder.dataFetcher("greetings", this.dataRepository::getGreetingsStream)); + builder.type("Subscription", + typeBuilder -> typeBuilder.dataFetcher("greetings", this.dataRepository::getGreetingsStream)); } } diff --git a/samples/webflux-websocket/src/test/java/io/spring/sample/graphql/QueryTests.java b/samples/webflux-websocket/src/test/java/io/spring/sample/graphql/QueryTests.java index f6141713..6b02a7a7 100644 --- a/samples/webflux-websocket/src/test/java/io/spring/sample/graphql/QueryTests.java +++ b/samples/webflux-websocket/src/test/java/io/spring/sample/graphql/QueryTests.java @@ -32,29 +32,21 @@ public class QueryTests { private GraphQlTester graphQlTester; - @BeforeEach public void setUp(@Autowired WebGraphQlHandler handler) { - this.graphQlTester = GraphQlTester.create(webInput -> - handler.handle(webInput).contextWrite(context -> context.put("name", "James"))); + this.graphQlTester = GraphQlTester + .create(webInput -> handler.handle(webInput).contextWrite(context -> context.put("name", "James"))); } - @Test void greetingMono() { - this.graphQlTester.query("{greetingMono}") - .execute() - .path("greetingMono") - .entity(String.class) + this.graphQlTester.query("{greetingMono}").execute().path("greetingMono").entity(String.class) .isEqualTo("Hello James"); } @Test void greetingsFlux() { - this.graphQlTester.query("{greetingsFlux}") - .execute() - .path("greetingsFlux") - .entityList(String.class) + this.graphQlTester.query("{greetingsFlux}").execute().path("greetingsFlux").entityList(String.class) .containsExactly("Hi James", "Bonjour James", "Hola James", "Ciao James", "Zdravo James"); } diff --git a/samples/webflux-websocket/src/test/java/io/spring/sample/graphql/SubscriptionTests.java b/samples/webflux-websocket/src/test/java/io/spring/sample/graphql/SubscriptionTests.java index 633d114b..cefd9613 100644 --- a/samples/webflux-websocket/src/test/java/io/spring/sample/graphql/SubscriptionTests.java +++ b/samples/webflux-websocket/src/test/java/io/spring/sample/graphql/SubscriptionTests.java @@ -34,44 +34,31 @@ public class SubscriptionTests { private GraphQlTester graphQlTester; - @BeforeEach public void setUp(@Autowired WebGraphQlHandler handler) { - this.graphQlTester = GraphQlTester.create(webInput -> - handler.handle(webInput).contextWrite(context -> context.put("name", "James"))); + this.graphQlTester = GraphQlTester + .create(webInput -> handler.handle(webInput).contextWrite(context -> context.put("name", "James"))); } - @Test void subscriptionWithEntityPath() { String query = "subscription { greetings }"; - Flux result = this.graphQlTester.query(query) - .executeSubscription() - .toFlux("greetings", String.class); + Flux result = this.graphQlTester.query(query).executeSubscription().toFlux("greetings", String.class); - StepVerifier.create(result) - .expectNext("Hi James") - .expectNext("Bonjour James") - .expectNext("Hola James") - .expectNext("Ciao James") - .expectNext("Zdravo James") - .verifyComplete(); + StepVerifier.create(result).expectNext("Hi James").expectNext("Bonjour James").expectNext("Hola James") + .expectNext("Ciao James").expectNext("Zdravo James").verifyComplete(); } @Test void subscriptionWithResponseSpec() { String query = "subscription { greetings }"; - Flux result = this.graphQlTester.query(query) - .executeSubscription() - .toFlux(); + Flux result = this.graphQlTester.query(query).executeSubscription().toFlux(); - StepVerifier.create(result) - .consumeNextWith(spec -> spec.path("greetings").valueExists()) + StepVerifier.create(result).consumeNextWith(spec -> spec.path("greetings").valueExists()) .consumeNextWith(spec -> spec.path("greetings").matchesJson("\"Bonjour James\"")) - .consumeNextWith(spec -> spec.path("greetings").matchesJson("\"Hola James\"")) - .expectNextCount(2) + .consumeNextWith(spec -> spec.path("greetings").matchesJson("\"Hola James\"")).expectNextCount(2) .verifyComplete(); } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/GreetingDataWiring.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/GreetingDataWiring.java index 99cf3410..60f72684 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/GreetingDataWiring.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/GreetingDataWiring.java @@ -12,13 +12,12 @@ import static org.springframework.web.context.request.RequestAttributes.SCOPE_RE @Component public class GreetingDataWiring implements RuntimeWiringCustomizer { - @Override public void customize(RuntimeWiring.Builder builder) { - builder.type("Query", typeWiring -> - typeWiring.dataFetcher("greeting", env -> { - RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); - return "Hello " + attributes.getAttribute(RequestAttributeFilter.NAME_ATTRIBUTE, SCOPE_REQUEST); - })); + builder.type("Query", typeWiring -> typeWiring.dataFetcher("greeting", env -> { + RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); + return "Hello " + attributes.getAttribute(RequestAttributeFilter.NAME_ATTRIBUTE, SCOPE_REQUEST); + })); } + } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/RequestAttributeFilter.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/RequestAttributeFilter.java index ffca7461..036a767b 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/RequestAttributeFilter.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/RequestAttributeFilter.java @@ -33,9 +33,9 @@ public class RequestAttributeFilter implements Filter { public static final String NAME_ATTRIBUTE = RequestAttributeFilter.class.getName() + ".name"; - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { request.setAttribute(NAME_ATTRIBUTE, "007"); chain.doFilter(request, response); } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/RequestAttributesAccessor.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/RequestAttributesAccessor.java index 81aff2e6..52dd3516 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/RequestAttributesAccessor.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/greeting/RequestAttributesAccessor.java @@ -24,15 +24,13 @@ import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; /** - * {@link ThreadLocalAccessor} to expose a thread-bound RequestAttributes object - * to data fetchers in Spring GraphQL. + * {@link ThreadLocalAccessor} to expose a thread-bound RequestAttributes object to data + * fetchers in Spring GraphQL. */ @Component public class RequestAttributesAccessor implements ThreadLocalAccessor { - private static final String ATTRIBUTES_KEY = - RequestAttributesAccessor.class.getName() + ".requestAttributes"; - + private static final String ATTRIBUTES_KEY = RequestAttributesAccessor.class.getName() + ".requestAttributes"; @Override public void extractValues(Map container) { diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/Project.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/Project.java index 2f3f1742..d3ab5578 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/Project.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/Project.java @@ -53,4 +53,5 @@ public class Project { public void setReleases(List releases) { this.releases = releases; } + } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ProjectDataWiring.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ProjectDataWiring.java index edb97adc..5f493e6e 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ProjectDataWiring.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ProjectDataWiring.java @@ -15,17 +15,13 @@ public class ProjectDataWiring implements RuntimeWiringCustomizer { @Override public void customize(RuntimeWiring.Builder builder) { - builder - .type("Query", typeWiring -> - typeWiring.dataFetcher("project", env -> { - String slug = env.getArgument("slug"); - return client.fetchProject(slug); - })) - .type("Project", typeWiring -> - typeWiring.dataFetcher("releases", env -> { - Project project = env.getSource(); - return client.fetchProjectReleases(project.getSlug()); - }) - ); + builder.type("Query", typeWiring -> typeWiring.dataFetcher("project", env -> { + String slug = env.getArgument("slug"); + return client.fetchProject(slug); + })).type("Project", typeWiring -> typeWiring.dataFetcher("releases", env -> { + Project project = env.getSource(); + return client.fetchProjectReleases(project.getSlug()); + })); } + } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ProjectStatus.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ProjectStatus.java index 0f37b2cd..5a1306bc 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ProjectStatus.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ProjectStatus.java @@ -5,12 +5,13 @@ import java.util.Arrays; import com.fasterxml.jackson.annotation.JsonCreator; public enum ProjectStatus { + ACTIVE, COMMUNITY, INCUBATING, ATTIC; @JsonCreator public static ProjectStatus fromName(String name) { - return Arrays.stream(ProjectStatus.values()) - .filter(type -> type.name().equals(name)) - .findFirst().orElse(ProjectStatus.ACTIVE); + return Arrays.stream(ProjectStatus.values()).filter(type -> type.name().equals(name)).findFirst() + .orElse(ProjectStatus.ACTIVE); } + } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/Release.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/Release.java index db5c17b6..a6d9d4ff 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/Release.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/Release.java @@ -51,4 +51,5 @@ public class Release { public void setCurrent(boolean current) { this.current = current; } + } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ReleaseStatus.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ReleaseStatus.java index 8c36053c..a31de550 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ReleaseStatus.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/ReleaseStatus.java @@ -5,12 +5,13 @@ import java.util.Arrays; import com.fasterxml.jackson.annotation.JsonCreator; public enum ReleaseStatus { + GENERAL_AVAILABILITY, MILESTONE, SNAPSHOT; @JsonCreator public static ReleaseStatus fromName(String name) { - return Arrays.stream(ReleaseStatus.values()) - .filter(type -> type.name().equals(name)) - .findFirst().orElse(ReleaseStatus.GENERAL_AVAILABILITY); + return Arrays.stream(ReleaseStatus.values()).filter(type -> type.name().equals(name)).findFirst() + .orElse(ReleaseStatus.GENERAL_AVAILABILITY); } + } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/SpringProjectsClient.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/SpringProjectsClient.java index c2463df4..e625c83e 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/SpringProjectsClient.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/project/SpringProjectsClient.java @@ -19,27 +19,26 @@ import org.springframework.web.client.RestTemplate; @Component public class SpringProjectsClient { - private static final TypeReferences.CollectionModelType releaseCollection = - new TypeReferences.CollectionModelType() { }; + private static final TypeReferences.CollectionModelType releaseCollection = new TypeReferences.CollectionModelType() { + }; private final Traverson traverson; public SpringProjectsClient(RestTemplateBuilder builder) { - RestTemplate restTemplate = builder.messageConverters(Traverson.getDefaultMessageConverters(MediaTypes.HAL_JSON)).build(); + RestTemplate restTemplate = builder + .messageConverters(Traverson.getDefaultMessageConverters(MediaTypes.HAL_JSON)).build(); this.traverson = new Traverson(URI.create("https://spring.io/api/"), MediaTypes.HAL_JSON); this.traverson.setRestOperations(restTemplate); } public Project fetchProject(String projectSlug) { - return this.traverson.follow("projects") - .follow(Hop.rel("project").withParameter("id", projectSlug)) + return this.traverson.follow("projects").follow(Hop.rel("project").withParameter("id", projectSlug)) .toObject(Project.class); } public List fetchProjectReleases(String projectSlug) { CollectionModel releases = this.traverson.follow("projects") - .follow(Hop.rel("project").withParameter("id", projectSlug)) - .follow(Hop.rel("releases")) + .follow(Hop.rel("project").withParameter("id", projectSlug)).follow(Hop.rel("releases")) .toObject(releaseCollection); return new ArrayList(releases.getContent()); } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepositoriesInitializer.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepositoriesInitializer.java index 46b2fc74..02370662 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepositoriesInitializer.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepositoriesInitializer.java @@ -20,9 +20,11 @@ public class ArtifactRepositoriesInitializer implements ApplicationRunner { public void run(ApplicationArguments args) throws Exception { List repositoryList = Arrays.asList( new ArtifactRepository("spring-releases", "Spring Releases", "https://repo.spring.io/libs-releases"), - new ArtifactRepository("spring-milestones", "Spring Milestones", "https://repo.spring.io/libs-milestones"), - new ArtifactRepository("spring-snapshots", "Spring Snapshots", "https://repo.spring.io/libs-snapshots") - ); + new ArtifactRepository("spring-milestones", "Spring Milestones", + "https://repo.spring.io/libs-milestones"), + new ArtifactRepository("spring-snapshots", "Spring Snapshots", + "https://repo.spring.io/libs-snapshots")); repositories.saveAll(repositoryList); } + } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepository.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepository.java index 60751f9e..40f4db6d 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepository.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepository.java @@ -55,4 +55,5 @@ public class ArtifactRepository { public void setSnapshotsEnabled(boolean snapshotsEnabled) { this.snapshotsEnabled = snapshotsEnabled; } + } diff --git a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepositoryDataWiring.java b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepositoryDataWiring.java index f77c698c..2b119fc4 100644 --- a/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepositoryDataWiring.java +++ b/samples/webmvc-http/src/main/java/io/spring/sample/graphql/repository/ArtifactRepositoryDataWiring.java @@ -15,8 +15,9 @@ public class ArtifactRepositoryDataWiring implements RuntimeWiringCustomizer { @Override public void customize(RuntimeWiring.Builder builder) { - builder.type("Query", typeWiring -> typeWiring - .dataFetcher("artifactRepositories", env -> this.repositories.findAll()) - .dataFetcher("artifactRepository", env -> this.repositories.findById(env.getArgument("id")))); + builder.type("Query", + typeWiring -> typeWiring.dataFetcher("artifactRepositories", env -> this.repositories.findAll()) + .dataFetcher("artifactRepository", env -> this.repositories.findById(env.getArgument("id")))); } + } diff --git a/samples/webmvc-http/src/test/java/io/spring/sample/graphql/project/MockMvcGraphQlTests.java b/samples/webmvc-http/src/test/java/io/spring/sample/graphql/project/MockMvcGraphQlTests.java index f2a5cf1e..5298957b 100644 --- a/samples/webmvc-http/src/test/java/io/spring/sample/graphql/project/MockMvcGraphQlTests.java +++ b/samples/webmvc-http/src/test/java/io/spring/sample/graphql/project/MockMvcGraphQlTests.java @@ -39,50 +39,28 @@ public class MockMvcGraphQlTests { @Test void jsonPath() { - String query = "{" + - " project(slug:\"spring-framework\") {" + - " releases {" + - " version" + - " }" + - " }" + - "}"; + String query = "{" + " project(slug:\"spring-framework\") {" + " releases {" + " version" + " }" + + " }" + "}"; - this.graphQlTester.query(query) - .execute() - .path("project.releases[*].version") - .entityList(String.class) + this.graphQlTester.query(query).execute().path("project.releases[*].version").entityList(String.class) .hasSizeGreaterThan(1); } @Test void jsonContent() { - String query = "{" + - " project(slug:\"spring-framework\") {" + - " repositoryUrl" + - " }" + - "}"; + String query = "{" + " project(slug:\"spring-framework\") {" + " repositoryUrl" + " }" + "}"; - this.graphQlTester.query(query) - .execute() - .path("project") + this.graphQlTester.query(query).execute().path("project") .matchesJson("{\"repositoryUrl\":\"http://github.com/spring-projects/spring-framework\"}"); } @Test void decodedResponse() { - String query = "{" + - " project(slug:\"spring-framework\") {" + - " releases {" + - " version" + - " }" + - " }" + - "}"; + String query = "{" + " project(slug:\"spring-framework\") {" + " releases {" + " version" + " }" + + " }" + "}"; - this.graphQlTester.query(query) - .execute() - .path("project") - .entity(Project.class) + this.graphQlTester.query(query).execute().path("project").entity(Project.class) .satisfies(project -> assertThat(project.getReleases()).hasSizeGreaterThan(1)); }