diff --git a/spring-graphql-web/src/main/java/org/springframework/graphql/WebFluxGraphQLHandler.java b/spring-graphql-web/src/main/java/org/springframework/graphql/WebFluxGraphQLHandler.java index 06bcbcae..0a737dad 100644 --- a/spring-graphql-web/src/main/java/org/springframework/graphql/WebFluxGraphQLHandler.java +++ b/spring-graphql-web/src/main/java/org/springframework/graphql/WebFluxGraphQLHandler.java @@ -21,6 +21,8 @@ import java.util.Map; import graphql.ExecutionResult; import graphql.GraphQL; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.reactivestreams.Publisher; import reactor.core.publisher.Mono; @@ -44,6 +46,9 @@ import org.springframework.web.reactive.socket.WebSocketSession; */ public class WebFluxGraphQLHandler { + private static Log logger = LogFactory.getLog(WebFluxGraphQLHandler.class); + + private final WebInterceptorExecutionChain executionChain; private final Decoder jsonDecoder; @@ -76,14 +81,21 @@ public class WebFluxGraphQLHandler { return request.bodyToMono(WebInput.MAP_PARAMETERIZED_TYPE_REF) .flatMap(body -> { WebInput webInput = new WebInput(request.uri(), request.headers().asHttpHeaders(), body); + if (logger.isDebugEnabled()) { + logger.debug("Executing: " + webInput); + } return this.executionChain.execute(webInput); }) .flatMap(output -> { + Map spec = output.toSpecification(); + if (logger.isDebugEnabled()) { + logger.debug("Execution complete"); + } ServerResponse.BodyBuilder builder = ServerResponse.ok(); if (output.getHeaders() != null) { builder.headers(headers -> headers.putAll(output.getHeaders())); } - return builder.bodyValue(output.toSpecification()); + return builder.bodyValue(spec); }); } @@ -108,6 +120,9 @@ public class WebFluxGraphQLHandler { Map map = decode(message); HandshakeInfo handshakeInfo = session.getHandshakeInfo(); WebInput webInput = new WebInput(handshakeInfo.getUri(), handshakeInfo.getHeaders(), map); + if (logger.isDebugEnabled()) { + logger.debug("Executing: " + webInput); + } return executionChain.execute(webInput); }) .concatMap(output -> { @@ -119,9 +134,15 @@ public class WebFluxGraphQLHandler { throw new IllegalStateException( "Expected Publisher: " + output.toSpecification()); } + if (logger.isDebugEnabled()) { + logger.debug("Execution complete, subscribing for events."); + } return (Publisher) output.getData(); }) - .map(result -> encode(session, result.getData())) + .map(result -> { + Object data = result.getData(); + return encode(session, data); + }) ); } diff --git a/spring-graphql-web/src/main/java/org/springframework/graphql/WebInput.java b/spring-graphql-web/src/main/java/org/springframework/graphql/WebInput.java index 043dbc08..f064ed4a 100644 --- a/spring-graphql-web/src/main/java/org/springframework/graphql/WebInput.java +++ b/spring-graphql-web/src/main/java/org/springframework/graphql/WebInput.java @@ -129,9 +129,8 @@ public class WebInput { @Override public String toString() { - return "WebInput [" + uri() + " " + headers() + ", query='" + query() + "'" + - (operationName() != null ? ", operationName='" + operationName() + "'" : "") + - (!CollectionUtils.isEmpty(variables()) ? ", variables=" + variables() : "") + - "]"; + return "Query='" + query() + "'" + + (operationName() != null ? ", Operation='" + operationName() + "'" : "") + + (!CollectionUtils.isEmpty(variables()) ? ", Variables=" + variables() : ""); } } \ No newline at end of file diff --git a/spring-graphql-web/src/main/java/org/springframework/graphql/WebMvcGraphQLHandler.java b/spring-graphql-web/src/main/java/org/springframework/graphql/WebMvcGraphQLHandler.java index 97454b0f..a08bf952 100644 --- a/spring-graphql-web/src/main/java/org/springframework/graphql/WebMvcGraphQLHandler.java +++ b/spring-graphql-web/src/main/java/org/springframework/graphql/WebMvcGraphQLHandler.java @@ -22,6 +22,8 @@ import java.util.Map; import javax.servlet.ServletException; import graphql.GraphQL; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import reactor.core.publisher.Mono; import org.springframework.web.HttpMediaTypeNotSupportedException; @@ -36,6 +38,9 @@ import org.springframework.web.servlet.function.ServerResponse; */ public class WebMvcGraphQLHandler implements HandlerFunction { + private static Log logger = LogFactory.getLog(WebMvcGraphQLHandler.class); + + private final WebInterceptorExecutionChain executionChain; @@ -59,8 +64,14 @@ public class WebMvcGraphQLHandler implements HandlerFunction { */ public ServerResponse handle(ServerRequest request) throws ServletException { WebInput webInput = new WebInput(request.uri(), request.headers().asHttpHeaders(), readBody(request)); + if (logger.isDebugEnabled()) { + logger.debug("Executing: " + webInput); + } Mono responseMono = this.executionChain.execute(webInput) .map(output -> { + if (logger.isDebugEnabled()) { + logger.debug("Execution complete"); + } ServerResponse.BodyBuilder builder = ServerResponse.ok(); if (output.getHeaders() != null) { builder.headers(headers -> headers.putAll(output.getHeaders()));