|
16 | 16 | */
|
17 | 17 | package org.apache.camel.component.jetty9;
|
18 | 18 |
|
| 19 | +import java.io.ByteArrayOutputStream; |
19 | 20 | import java.io.Closeable;
|
20 | 21 | import java.io.IOException;
|
21 | 22 | import java.io.InputStream;
|
22 | 23 | import java.io.UnsupportedEncodingException;
|
23 | 24 | import java.lang.reflect.Method;
|
24 | 25 | import java.net.MalformedURLException;
|
| 26 | +import java.nio.ByteBuffer; |
25 | 27 | import java.util.Collection;
|
26 | 28 | import java.util.Map;
|
27 | 29 | import java.util.TreeMap;
|
28 | 30 | import java.util.concurrent.CountDownLatch;
|
29 | 31 | import java.util.concurrent.TimeUnit;
|
30 | 32 | import java.util.concurrent.TimeoutException;
|
31 | 33 |
|
| 34 | +import static javax.servlet.http.HttpServletResponse.SC_OK; |
| 35 | + |
32 | 36 | import org.apache.camel.AsyncCallback;
|
33 | 37 | import org.apache.camel.CamelExchangeException;
|
34 | 38 | import org.apache.camel.Exchange;
|
|
39 | 43 | import org.eclipse.jetty.client.api.Request;
|
40 | 44 | import org.eclipse.jetty.client.api.Response;
|
41 | 45 | import org.eclipse.jetty.client.api.Result;
|
42 |
| -import org.eclipse.jetty.client.util.BufferingResponseListener; |
43 | 46 | import org.eclipse.jetty.client.util.BytesContentProvider;
|
44 | 47 | import org.eclipse.jetty.client.util.InputStreamContentProvider;
|
| 48 | +import org.eclipse.jetty.client.util.InputStreamResponseListener; |
45 | 49 | import org.eclipse.jetty.client.util.StringContentProvider;
|
46 | 50 | import org.eclipse.jetty.http.HttpFields;
|
| 51 | +import org.eclipse.jetty.util.Callback; |
47 | 52 | import org.slf4j.Logger;
|
48 | 53 | import org.slf4j.LoggerFactory;
|
49 | 54 |
|
| 55 | + |
50 | 56 | /**
|
51 | 57 | * Jetty specific exchange which keeps track of the the request and response.
|
52 | 58 | */
|
@@ -214,14 +220,28 @@ public void onFailure(Request request, Throwable failure) {
|
214 | 220 | }
|
215 | 221 |
|
216 | 222 | };
|
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 | + } |
218 | 238 |
|
219 | 239 | @Override
|
220 | 240 | public void onComplete(Result result) {
|
221 | 241 | if (result.isFailed()) {
|
222 | 242 | doTaskCompleted(result.getFailure());
|
223 | 243 | } else {
|
224 |
| - onResponseComplete(result, getContent(), getMediaType()); |
| 244 | + onResponseComplete(result, baos.toByteArray(), null); |
225 | 245 | }
|
226 | 246 | }
|
227 | 247 | };
|
|
0 commit comments