diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java index bfa669a4..0cfcb733 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java @@ -33,8 +33,9 @@ public void write(HttpServletRequest request, HttpServletResponse response) thro responseBuilder.append(']'); String responseContent = responseBuilder.toString(); - response.setContentLength(responseContent.getBytes(StandardCharsets.UTF_8).length); - response.getWriter().write(responseContent); + byte[] contentBytes = responseContent.getBytes(StandardCharsets.UTF_8); + response.setContentLength(contentBytes.length); + response.getOutputStream().write(contentBytes); } } diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java index 417cad69..fa166d3e 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java @@ -21,8 +21,9 @@ public void write(HttpServletRequest request, HttpServletResponse response) thro response.setStatus(HttpRequestHandler.STATUS_OK); response.setCharacterEncoding(StandardCharsets.UTF_8.name()); String responseContent = graphQLObjectMapper.serializeResultAsJson(result); - response.setContentLength(responseContent.getBytes(StandardCharsets.UTF_8).length); - response.getWriter().write(responseContent); + byte[] contentBytes = responseContent.getBytes(StandardCharsets.UTF_8); + response.setContentLength(contentBytes.length); + response.getOutputStream().write(contentBytes); } } diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy index 4c7a6ca9..ae834c19 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy @@ -7,8 +7,10 @@ import org.codehaus.groovy.runtime.StringBufferWriter import spock.lang.Specification import spock.lang.Unroll +import javax.servlet.ServletOutputStream import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletResponse +import java.nio.charset.StandardCharsets class SingleQueryResponseWriterTest extends Specification { @@ -20,18 +22,16 @@ class SingleQueryResponseWriterTest extends Specification { def requestMock = Mock(HttpServletRequest) def responseMock = Mock(HttpServletResponse) + responseMock.getOutputStream() >> Mock(ServletOutputStream) - def responseContentBuffer = new StringBuffer() - responseMock.getWriter() >> new PrintWriter(new StringBufferWriter(responseContentBuffer)) 1 * responseMock.setContentLength(expectedContentLenght) - 1 * responseMock.setCharacterEncoding("UTF-8") + 1 * responseMock.setCharacterEncoding(StandardCharsets.UTF_8.name()) + 1 * responseMock.getOutputStream().write(expectedResponseContent.getBytes(StandardCharsets.UTF_8)) expect: def writer = new SingleQueryResponseWriter(new ExecutionResultImpl(result, []), graphQLObjectMapperMock) writer.write(requestMock, responseMock) - responseContentBuffer.toString() == expectedResponseContent - where: result || expectedContentLenght | expectedResponseContent [testValue: "abcde"] || 30 | """{"data":{"testValue":"abcde"}}"""