From 2732a183f3d46e5597956a6940e9c061e4b19c32 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Fri, 1 Aug 2014 14:38:24 -0500 Subject: [PATCH] OnCommitedResponseWrapper commits when buffer exceeded Fixes #26 --- .../session/web/http/OnCommittedResponseWrapper.java | 5 ++++- .../web/http/OnCommittedResponseWrapperTests.java | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/spring-session/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java b/spring-session/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java index a4dc830..304f7f6 100644 --- a/spring-session/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java +++ b/spring-session/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java @@ -187,7 +187,10 @@ abstract class OnCommittedResponseWrapper extends HttpServletResponseWrapper { */ private void checkContentLength(long contentLengthToWrite) { contentWritten += contentLengthToWrite; - if(contentLength > 0 && contentWritten >= contentLength) { + boolean isBodyFullyWritten = contentLength > 0 && contentWritten >= contentLength; + int bufferSize = getBufferSize(); + boolean requiresFlush = bufferSize > 0 && contentWritten >= bufferSize; + if(isBodyFullyWritten || requiresFlush) { doOnResponseCommitted(); } } diff --git a/spring-session/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java b/spring-session/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java index 9d9fbae..88edc3d 100644 --- a/spring-session/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java +++ b/spring-session/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java @@ -1059,4 +1059,14 @@ public class OnCommittedResponseWrapperTests { assertThat(committed).isTrue(); } + + @Test + public void bufferSizePrintWriterWriteCommits() throws Exception { + String expected = "1234567890"; + when(response.getBufferSize()).thenReturn(expected.length()); + + response.getWriter().write(expected); + + assertThat(committed).isTrue(); + } } \ No newline at end of file