Skip to content

Commit

Permalink
CAMEL-10577 replace BufferingResponseListener with InputStreamRespons…
Browse files Browse the repository at this point in the history
…eListener to avoid hardcoded 2MB limit
  • Loading branch information
kevinearls committed Jan 10, 2017
1 parent 318964b commit 41cd808
Showing 1 changed file with 23 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,23 @@
*/
package org.apache.camel.component.jetty9;

import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

import static javax.servlet.http.HttpServletResponse.SC_OK;

import org.apache.camel.AsyncCallback;
import org.apache.camel.CamelExchangeException;
import org.apache.camel.Exchange;
Expand All @@ -39,14 +43,16 @@
import org.eclipse.jetty.client.api.Request;
import org.eclipse.jetty.client.api.Response;
import org.eclipse.jetty.client.api.Result;
import org.eclipse.jetty.client.util.BufferingResponseListener;
import org.eclipse.jetty.client.util.BytesContentProvider;
import org.eclipse.jetty.client.util.InputStreamContentProvider;
import org.eclipse.jetty.client.util.InputStreamResponseListener;
import org.eclipse.jetty.client.util.StringContentProvider;
import org.eclipse.jetty.http.HttpFields;
import org.eclipse.jetty.util.Callback;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
* Jetty specific exchange which keeps track of the the request and response.
*/
Expand Down Expand Up @@ -214,14 +220,28 @@ public void onFailure(Request request, Throwable failure) {
}

};
BufferingResponseListener responseListener = new BufferingResponseListener() {

InputStreamResponseListener responseListener = new InputStreamResponseListener() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();

@Override
public void onContent(Response response, ByteBuffer content, Callback callback) {
if (response.getStatus() != SC_OK) {
LOG.warn("Response received {}: {}", response.getStatus(), response.getReason());
}
byte[] buffer = new byte[content.limit()];
content.get(buffer);
baos.write(buffer, 0, buffer.length);

callback.succeeded();
}

@Override
public void onComplete(Result result) {
if (result.isFailed()) {
doTaskCompleted(result.getFailure());
} else {
onResponseComplete(result, getContent(), getMediaType());
onResponseComplete(result, baos.toByteArray(), null);
}
}
};
Expand Down

0 comments on commit 41cd808

Please sign in to comment.