You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2015/01/16 08:37:26 UTC
svn commit: r1652353 - in /sling/trunk/bundles/scripting:
core/src/main/java/org/apache/sling/scripting/core/servlet/
jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/
Author: olli
Date: Fri Jan 16 07:37:25 2015
New Revision: 1652353
URL: http://svn.apache.org/r1652353
Log:
SLING-4298 use internal StringWriter instead of BufferedServletOutputStream
Removed:
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/servlet/BufferedServletOutputStream.java
Modified:
sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/servlet/CaptureResponseWrapper.java
sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java
Modified: sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/servlet/CaptureResponseWrapper.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/servlet/CaptureResponseWrapper.java?rev=1652353&r1=1652352&r2=1652353&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/servlet/CaptureResponseWrapper.java (original)
+++ sling/trunk/bundles/scripting/core/src/main/java/org/apache/sling/scripting/core/servlet/CaptureResponseWrapper.java Fri Jan 16 07:37:25 2015
@@ -17,8 +17,8 @@
package org.apache.sling.scripting.core.servlet;
import java.io.IOException;
-import java.io.OutputStreamWriter;
import java.io.PrintWriter;
+import java.io.StringWriter;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
@@ -28,24 +28,20 @@ import javax.servlet.http.HttpServletRes
* Extends the HttpServletResponse to wrap the response and capture the results.
*/
public final class CaptureResponseWrapper extends HttpServletResponseWrapper {
- private final String encoding;
- private final ServletOutputStream ops;
+
private boolean isBinaryResponse = false;
- private PrintWriter writer = null;
+
+ private PrintWriter writer;
+
+ private StringWriter stringWriter;
/**
* Construct a new CaptureResponseWrapper.
*
- * @param response
- * the response to wrap
- * @param ops
- * the output stream to write to
+ * @param response the response to wrap
*/
- public CaptureResponseWrapper(HttpServletResponse response,
- ServletOutputStream ops) {
+ public CaptureResponseWrapper(HttpServletResponse response) {
super(response);
- this.encoding = response.getCharacterEncoding();
- this.ops = ops;
}
/**
@@ -57,7 +53,6 @@ public final class CaptureResponseWrappe
return isBinaryResponse;
}
-
/*
* (non-Javadoc)
* @see javax.servlet.ServletResponseWrapper#flushBuffer()
@@ -96,8 +91,22 @@ public final class CaptureResponseWrappe
if (isBinaryResponse) {
throw new IOException("'getOutputStream()' has already been invoked for a binary data response.");
}
- writer = new PrintWriter(new OutputStreamWriter(ops, encoding));
+ stringWriter = new StringWriter();
+ writer = new PrintWriter(stringWriter);
return writer;
}
+ /**
+ *
+ * @return the captured character response data
+ * @throws IOException if no character response data captured
+ */
+ public String getCapturedCharacterResponse() throws IOException {
+ if (stringWriter == null) {
+ throw new IOException("no character response data captured");
+ }
+ writer.flush();
+ return stringWriter.toString();
+ }
+
}
Modified: sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java?rev=1652353&r1=1652352&r2=1652353&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java (original)
+++ sling/trunk/bundles/scripting/jsp-taglib/src/main/java/org/apache/sling/scripting/jsp/taglib/IncludeTagHandler.java Fri Jan 16 07:37:25 2015
@@ -26,8 +26,6 @@ import javax.servlet.http.HttpServletRes
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyContent;
-import org.apache.commons.io.IOUtils;
-import org.apache.sling.scripting.core.servlet.BufferedServletOutputStream;
import org.apache.sling.scripting.core.servlet.CaptureResponseWrapper;
/**
@@ -55,19 +53,12 @@ public class IncludeTagHandler extends A
if (var == null) {
dispatcher.include(request, response);
} else {
- String encoding = response.getCharacterEncoding();
- BufferedServletOutputStream bsops = new BufferedServletOutputStream(encoding);
- try{
- CaptureResponseWrapper wrapper = new CaptureResponseWrapper((HttpServletResponse) response, bsops);
- dispatcher.include(request, wrapper);
- if (! wrapper.isBinaryResponse()) {
- wrapper.flushBuffer();
- pageContext.setAttribute(var, bsops.getBuffer(), scope);
- }
- }finally{
- IOUtils.closeQuietly(bsops);
- }
- }
+ final CaptureResponseWrapper wrapper = new CaptureResponseWrapper((HttpServletResponse) response);
+ dispatcher.include(request, wrapper);
+ if (!wrapper.isBinaryResponse()) {
+ pageContext.setAttribute(var, wrapper.getCapturedCharacterResponse(), scope);
+ }
+ }
}
public void setPageContext(PageContext pageContext) {