From dd1a6933dd3a1091f2d738adb441a416e25edc4b Mon Sep 17 00:00:00 2001 From: Mingyuan Wu Date: Sat, 8 Feb 2025 19:38:09 +0800 Subject: [PATCH] Polish Closes gh-1120 Signed-off-by: Mingyuan Wu --- .../graphql/server/webflux/AbstractGraphQlHttpHandler.java | 4 ++-- .../graphql/server/webflux/GraphQlRequestPredicates.java | 4 +++- .../graphql/server/webmvc/AbstractGraphQlHttpHandler.java | 5 +++-- .../graphql/server/webmvc/GraphQlRequestPredicates.java | 4 +++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/AbstractGraphQlHttpHandler.java b/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/AbstractGraphQlHttpHandler.java index f0a0631d..f54fddba 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/AbstractGraphQlHttpHandler.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/AbstractGraphQlHttpHandler.java @@ -52,6 +52,7 @@ public abstract class AbstractGraphQlHttpHandler { protected final Log logger = LogFactory.getLog(getClass()); + private static final MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql"); private final WebGraphQlHandler graphQlHandler; @@ -118,10 +119,9 @@ public abstract class AbstractGraphQlHttpHandler { String contentTypeHeader = request.headers().firstHeader(HttpHeaders.CONTENT_TYPE); if (StringUtils.hasText(contentTypeHeader)) { MediaType contentType = MediaType.parseMediaType(contentTypeHeader); - MediaType applicationGraphQl = MediaType.parseMediaType("application/graphql"); // Spec requires application/json but some clients still use application/graphql - return applicationGraphQl.includes(contentType) ? ServerRequest.from(request) + return APPLICATION_GRAPHQL.includes(contentType) ? ServerRequest.from(request) .headers((headers) -> headers.setContentType(MediaType.APPLICATION_JSON)) .body(request.bodyToFlux(DataBuffer.class)) .build() diff --git a/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlRequestPredicates.java b/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlRequestPredicates.java index c478152e..7002d3e2 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlRequestPredicates.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/server/webflux/GraphQlRequestPredicates.java @@ -73,6 +73,8 @@ public final class GraphQlRequestPredicates { private static class GraphQlHttpRequestPredicate implements RequestPredicate { + private static final MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql"); + private final PathPattern pattern; private final List contentTypes; @@ -86,7 +88,7 @@ public final class GraphQlRequestPredicates { PathPatternParser parser = PathPatternParser.defaultInstance; path = parser.initFullPathPattern(path); this.pattern = parser.parse(path); - this.contentTypes = List.of(MediaType.APPLICATION_JSON, MediaType.parseMediaType("application/graphql")); + this.contentTypes = List.of(MediaType.APPLICATION_JSON, APPLICATION_GRAPHQL); this.acceptedMediaTypes = accepted; } diff --git a/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/AbstractGraphQlHttpHandler.java b/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/AbstractGraphQlHttpHandler.java index faba51c4..84f2936a 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/AbstractGraphQlHttpHandler.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/AbstractGraphQlHttpHandler.java @@ -67,6 +67,8 @@ public abstract class AbstractGraphQlHttpHandler { protected final Log logger = LogFactory.getLog(getClass()); + private static final MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql"); + private final IdGenerator idGenerator = new AlternativeJdkIdGenerator(); private final WebGraphQlHandler graphQlHandler; @@ -174,9 +176,8 @@ public abstract class AbstractGraphQlHttpHandler { String contentTypeHeader = request.headers().firstHeader(HttpHeaders.CONTENT_TYPE); if (StringUtils.hasText(contentTypeHeader)) { MediaType contentType = MediaType.parseMediaType(contentTypeHeader); - MediaType applicationGraphQl = MediaType.parseMediaType("application/graphql"); // Spec requires application/json but some clients still use application/graphql - if (applicationGraphQl.includes(contentType)) { + if (APPLICATION_GRAPHQL.includes(contentType)) { try { request = ServerRequest.from(request) .headers((headers) -> headers.setContentType(MediaType.APPLICATION_JSON)) diff --git a/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlRequestPredicates.java b/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlRequestPredicates.java index a3190777..46b04cf7 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlRequestPredicates.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/server/webmvc/GraphQlRequestPredicates.java @@ -73,6 +73,8 @@ public final class GraphQlRequestPredicates { private static class GraphQlHttpRequestPredicate implements RequestPredicate { + private static final MediaType APPLICATION_GRAPHQL = MediaType.parseMediaType("application/graphql"); + private final PathPattern pattern; private final List contentTypes; @@ -86,7 +88,7 @@ public final class GraphQlRequestPredicates { PathPatternParser parser = PathPatternParser.defaultInstance; path = parser.initFullPathPattern(path); this.pattern = parser.parse(path); - this.contentTypes = List.of(MediaType.APPLICATION_JSON, MediaType.parseMediaType("application/graphql")); + this.contentTypes = List.of(MediaType.APPLICATION_JSON, APPLICATION_GRAPHQL); this.acceptedMediaTypes = accepted; }