Skip to content

Commit 41cd808

Browse files
committedJan 10, 2017
CAMEL-10577 replace BufferingResponseListener with InputStreamResponseListener to avoid hardcoded 2MB limit
1 parent 318964b commit 41cd808

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed
 

‎components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyContentExchange9.java

+23-3
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,23 @@
1616
*/
1717
package org.apache.camel.component.jetty9;
1818

19+
import java.io.ByteArrayOutputStream;
1920
import java.io.Closeable;
2021
import java.io.IOException;
2122
import java.io.InputStream;
2223
import java.io.UnsupportedEncodingException;
2324
import java.lang.reflect.Method;
2425
import java.net.MalformedURLException;
26+
import java.nio.ByteBuffer;
2527
import java.util.Collection;
2628
import java.util.Map;
2729
import java.util.TreeMap;
2830
import java.util.concurrent.CountDownLatch;
2931
import java.util.concurrent.TimeUnit;
3032
import java.util.concurrent.TimeoutException;
3133

34+
import static javax.servlet.http.HttpServletResponse.SC_OK;
35+
3236
import org.apache.camel.AsyncCallback;
3337
import org.apache.camel.CamelExchangeException;
3438
import org.apache.camel.Exchange;
@@ -39,14 +43,16 @@
3943
import org.eclipse.jetty.client.api.Request;
4044
import org.eclipse.jetty.client.api.Response;
4145
import org.eclipse.jetty.client.api.Result;
42-
import org.eclipse.jetty.client.util.BufferingResponseListener;
4346
import org.eclipse.jetty.client.util.BytesContentProvider;
4447
import org.eclipse.jetty.client.util.InputStreamContentProvider;
48+
import org.eclipse.jetty.client.util.InputStreamResponseListener;
4549
import org.eclipse.jetty.client.util.StringContentProvider;
4650
import org.eclipse.jetty.http.HttpFields;
51+
import org.eclipse.jetty.util.Callback;
4752
import org.slf4j.Logger;
4853
import org.slf4j.LoggerFactory;
4954

55+
5056
/**
5157
* Jetty specific exchange which keeps track of the the request and response.
5258
*/
@@ -214,14 +220,28 @@ public void onFailure(Request request, Throwable failure) {
214220
}
215221

216222
};
217-
BufferingResponseListener responseListener = new BufferingResponseListener() {
223+
224+
InputStreamResponseListener responseListener = new InputStreamResponseListener() {
225+
ByteArrayOutputStream baos = new ByteArrayOutputStream();
226+
227+
@Override
228+
public void onContent(Response response, ByteBuffer content, Callback callback) {
229+
if (response.getStatus() != SC_OK) {
230+
LOG.warn("Response received {}: {}", response.getStatus(), response.getReason());
231+
}
232+
byte[] buffer = new byte[content.limit()];
233+
content.get(buffer);
234+
baos.write(buffer, 0, buffer.length);
235+
236+
callback.succeeded();
237+
}
218238

219239
@Override
220240
public void onComplete(Result result) {
221241
if (result.isFailed()) {
222242
doTaskCompleted(result.getFailure());
223243
} else {
224-
onResponseComplete(result, getContent(), getMediaType());
244+
onResponseComplete(result, baos.toByteArray(), null);
225245
}
226246
}
227247
};

0 commit comments

Comments
 (0)