Author: fmeschbe
Date: Wed Mar 30 09:57:08 2011
New Revision: 1086883
URL: http://svn.apache.org/viewvc?rev=1086883&view=rev
Log:
SLING-2039? Removing Engine's internal output buffering altogether (see issue
for details)
Removed:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/output/
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/ContentData.java
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java?rev=1086883&r1=1086882&r2=1086883&view=diff
==============================================================================
---
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java
(original)
+++
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletResponseImpl.java
Wed Mar 30 09:57:08 2011
@@ -127,15 +127,9 @@ public class SlingHttpServletResponseImp
//---------- SlingHttpServletResponse interface
@Override
- public Locale getLocale() {
- // TODO Should use our Locale Resolver and not let the component set
the locale, right ??
- return getResponse().getLocale();
- }
-
- @Override
public ServletOutputStream getOutputStream() throws IOException {
if (this.out == null) {
- ServletOutputStream sos =
getRequestData().getBufferProvider().getOutputStream();
+ ServletOutputStream sos = getResponse().getOutputStream();
this.out = new LoggerResponseOutputStream(sos);
}
return this.out;
@@ -144,54 +138,12 @@ public class SlingHttpServletResponseImp
@Override
public PrintWriter getWriter() throws IOException {
if (this.writer == null) {
- PrintWriter pw = getRequestData().getBufferProvider().getWriter();
+ PrintWriter pw = getResponse().getWriter();
this.writer = new LoggerResponseWriter(pw);
}
return this.writer;
}
- @Override
- public boolean isCommitted() {
- // TODO: integrate with our output catcher
- return getResponse().isCommitted();
- }
-
- @Override
- public void reset() {
- if (isCommitted()) {
- throw new IllegalStateException("Response already committed");
- }
- getRequestData().getContentData().resetBuffer();
- getResponse().reset();
- }
-
- @Override
- public void flushBuffer() throws IOException {
- getRequestData().getContentData().flushBuffer();
- getResponse().flushBuffer();
- }
-
- @Override
- public void resetBuffer() {
- if (isCommitted()) {
- throw new IllegalStateException("Response already committed");
- }
-
- getRequestData().getContentData().resetBuffer();
- getResponse().resetBuffer();
- }
-
- @Override
- public void setBufferSize(int size) {
- getRequestData().getContentData().setBufferSize(size);
- getResponse().setBufferSize(size);
- }
-
- @Override
- public int getBufferSize() {
- return getRequestData().getContentData().getBufferSize();
- }
-
// ---------- Redirection support through PathResolver --------------------
@Override
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/ContentData.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/ContentData.java?rev=1086883&r1=1086882&r2=1086883&view=diff
==============================================================================
---
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/ContentData.java
(original)
+++
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/ContentData.java
Wed Mar 30 09:57:08 2011
@@ -18,19 +18,9 @@
*/
package org.apache.sling.engine.impl.request;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-
import javax.servlet.Servlet;
-import javax.servlet.ServletOutputStream;
-
import org.apache.sling.api.request.RequestPathInfo;
import org.apache.sling.api.resource.Resource;
-import org.apache.sling.engine.impl.output.Buffer;
-import org.apache.sling.engine.impl.output.BufferProvider;
-import org.apache.sling.engine.impl.output.BufferedPrintWriter;
-import org.apache.sling.engine.impl.output.BufferedServletOutputStream;
/**
* The <code>ContentData</code> class provides objects which are relevant for
@@ -38,7 +28,7 @@ import org.apache.sling.engine.impl.outp
*
* @see RequestData
*/
-public class ContentData implements BufferProvider {
+public class ContentData {
private RequestPathInfo requestPathInfo;
@@ -46,29 +36,13 @@ public class ContentData implements Buff
private Servlet servlet;
- private Buffer buffer;
-
- private int requestedBufferSize;
-
- private BufferProvider parent;
-
- public ContentData(Resource resource, RequestPathInfo requestPathInfo,
- BufferProvider parent) {
+ public ContentData(Resource resource, RequestPathInfo requestPathInfo) {
this.resource = resource;
this.requestPathInfo = requestPathInfo;
- this.parent = parent;
- this.requestedBufferSize = parent.getBufferSize();
}
/* package */void dispose() {
this.requestPathInfo = null;
-
- // flush buffer contents to output
- try {
- this.flushBuffer();
- } catch (IOException ioe) {
- // TODO: handle
- }
}
public Resource getResource() {
@@ -86,64 +60,4 @@ public class ContentData implements Buff
public void setServlet(Servlet servlet) {
this.servlet = servlet;
}
-
- // ---------- BufferProvider interface -------------------------------
-
- public void setBufferSize(int buffersize) {
- if (this.buffer != null) {
- this.buffer.setBufferSize(buffersize);
- }
-
- this.requestedBufferSize = buffersize;
- }
-
- public int getBufferSize() {
- if (this.buffer != null) {
- return this.buffer.getBufferSize();
- }
-
- return this.requestedBufferSize;
- }
-
- public void flushBuffer() throws IOException {
- if (this.buffer != null) {
- this.buffer.flushBuffer();
- }
- }
-
- public void resetBuffer() {
- if (this.buffer != null) {
- this.buffer.resetBuffer();
- }
- }
-
- public ServletOutputStream getOutputStream() throws IOException {
- if (this.buffer instanceof OutputStream) {
- return (ServletOutputStream) this.buffer;
- } else if (this.buffer != null) {
- throw new IllegalStateException("Writer already retrieved");
- }
-
- ServletOutputStream parentStream = this.parent.getOutputStream();
- BufferedServletOutputStream stream = new BufferedServletOutputStream(
- parentStream, this.getBufferSize());
- this.buffer = stream;
-
- return stream;
- }
-
- public PrintWriter getWriter() throws IOException {
- if (this.buffer instanceof PrintWriter) {
- return (PrintWriter) this.buffer;
- } else if (this.buffer != null) {
- throw new IllegalStateException("OutputStream already retrieved");
- }
-
- PrintWriter parentWriter = this.parent.getWriter();
- BufferedPrintWriter writer = new BufferedPrintWriter(parentWriter,
- this.getBufferSize());
- this.buffer = writer;
-
- return writer;
- }
}
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java?rev=1086883&r1=1086882&r2=1086883&view=diff
==============================================================================
---
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
(original)
+++
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/request/RequestData.java
Wed Mar 30 09:57:08 2011
@@ -22,14 +22,12 @@ import static org.apache.sling.api.Sling
import java.io.BufferedReader;
import java.io.IOException;
-import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.LinkedList;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
-import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestWrapper;
import javax.servlet.ServletResponse;
@@ -56,7 +54,6 @@ import org.apache.sling.engine.impl.Slin
import org.apache.sling.engine.impl.SlingRequestProcessorImpl;
import org.apache.sling.engine.impl.adapter.SlingServletRequestAdapter;
import org.apache.sling.engine.impl.adapter.SlingServletResponseAdapter;
-import org.apache.sling.engine.impl.output.BufferProvider;
import org.apache.sling.engine.impl.parameters.ParameterSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -74,7 +71,7 @@ import org.slf4j.LoggerFactory;
* </ol>
* @see ContentData
*/
-public class RequestData implements BufferProvider {
+public class RequestData {
/** default log */
private final Logger log = LoggerFactory.getLogger(RequestData.class);
@@ -544,7 +541,6 @@ public class RequestData implements Buff
public ContentData pushContent(Resource resource,
RequestPathInfo requestPathInfo) {
- BufferProvider parent;
if (currentContentData != null) {
if (contentDataStack == null) {
contentDataStack = new LinkedList<ContentData>();
@@ -554,12 +550,9 @@ public class RequestData implements Buff
}
contentDataStack.add(currentContentData);
- parent = currentContentData;
- } else {
- parent = this;
}
- currentContentData = new ContentData(resource, requestPathInfo,
parent);
+ currentContentData = new ContentData(resource, requestPathInfo);
return currentContentData;
}
@@ -630,30 +623,6 @@ public class RequestData implements Buff
return SLING_MAIN_SERVLET.getMimeType(fileName);
}
- // ---------- BufferProvider -----------------------------------------
-
- public BufferProvider getBufferProvider() {
- return (currentContentData != null)
- ? (BufferProvider) currentContentData
- : this;
- }
-
- public int getBufferSize() {
- return getServletResponse().getBufferSize();
- }
-
- public void setBufferSize(int size) {
- getServletResponse().setBufferSize(size);
- }
-
- public ServletOutputStream getOutputStream() throws IOException {
- return getServletResponse().getOutputStream();
- }
-
- public PrintWriter getWriter() throws IOException {
- return getServletResponse().getWriter();
- }
-
// ---------- Parameter support -------------------------------------------
public ServletInputStream getInputStream() throws IOException {