From 6300caf367b35705208323dfa61c027d13ff16df Mon Sep 17 00:00:00 2001 From: Noah Levitt Date: Fri, 28 Dec 2012 18:46:39 -0800 Subject: [PATCH] A little more work on the approach of wrapping the SessionInputBuffer, to remember that overriding BHttpConnectionBase.getSessionInputBuffer() makes it possible (but it doesn't work because we need to get in there and no-op the buffering since we do our own, and it eats up the stream too soon...) --- .../archive/modules/fetcher/FetchHTTP.java | 7 ++- .../fetcher/RecordingSessionInputBuffer.java | 47 +++++++++---------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP.java b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP.java index 2700dee7..ae6ef51c 100644 --- a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP.java +++ b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP.java @@ -101,6 +101,7 @@ import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.impl.conn.SocketClientConnectionImpl; import org.apache.http.io.HttpMessageParserFactory; import org.apache.http.io.HttpMessageWriterFactory; +import org.apache.http.io.SessionInputBuffer; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; @@ -149,11 +150,15 @@ public class FetchHTTP extends Processor implements Lifecycle { super(buffersize, chardecoder, charencoder, constraints, incomingContentStrategy, outgoingContentStrategy, requestWriterFactory, responseParserFactory); - this.inbuffer = new RecordingSessionInputBuffer(this.inbuffer); this.request = request; this.curi = curi; } + @Override + protected SessionInputBuffer getSessionInputBuffer() { + return new RecordingSessionInputBuffer(super.getSessionInputBuffer()); + } + @Override protected InputStream getSocketInputStream(Socket socket) throws IOException { diff --git a/modules/src/main/java/org/archive/modules/fetcher/RecordingSessionInputBuffer.java b/modules/src/main/java/org/archive/modules/fetcher/RecordingSessionInputBuffer.java index 5cd53494..11b00d31 100644 --- a/modules/src/main/java/org/archive/modules/fetcher/RecordingSessionInputBuffer.java +++ b/modules/src/main/java/org/archive/modules/fetcher/RecordingSessionInputBuffer.java @@ -19,17 +19,16 @@ package org.archive.modules.fetcher; import java.io.IOException; -import java.io.InputStream; import org.apache.http.io.HttpTransportMetrics; -import org.apache.http.io.UmmSessionInputBuffer; +import org.apache.http.io.SessionInputBuffer; import org.apache.http.util.CharArrayBuffer; -class RecordingSessionInputBuffer implements UmmSessionInputBuffer { +class RecordingSessionInputBuffer implements SessionInputBuffer { - protected UmmSessionInputBuffer wrapped; + protected SessionInputBuffer wrapped; - public RecordingSessionInputBuffer(UmmSessionInputBuffer wrapped) { + public RecordingSessionInputBuffer(SessionInputBuffer wrapped) { this.wrapped = wrapped; } @@ -69,23 +68,23 @@ class RecordingSessionInputBuffer implements UmmSessionInputBuffer { return wrapped.getMetrics(); } - @Override - public boolean isBound() { - return wrapped.isBound(); - } - - @Override - public void bind(InputStream inputStream) { - wrapped.bind(inputStream); - } - - @Override - public boolean hasBufferedData() { - return wrapped.hasBufferedData(); - } - - @Override - public int fillBuffer() throws IOException { - return wrapped.fillBuffer(); - } +// @Override +// public boolean isBound() { +// return wrapped.isBound(); +// } +// +// @Override +// public void bind(InputStream inputStream) { +// wrapped.bind(inputStream); +// } +// +// @Override +// public boolean hasBufferedData() { +// return wrapped.hasBufferedData(); +// } +// +// @Override +// public int fillBuffer() throws IOException { +// return wrapped.fillBuffer(); +// } } \ No newline at end of file